VTK
vtkChart.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkChart.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
24 #ifndef vtkChart_h
25 #define vtkChart_h
26 
27 #include "vtkChartsCoreModule.h" // For export macro
28 #include "vtkContextItem.h"
29 #include "vtkRect.h" // For vtkRectf
30 #include "vtkStdString.h" // For vtkStdString ivars
31 #include "vtkSmartPointer.h" // For SP ivars
32 
33 class vtkTransform2D;
34 class vtkContextScene;
35 class vtkPlot;
36 class vtkAxis;
37 class vtkBrush;
38 class vtkTextProperty;
39 class vtkChartLegend;
40 
41 class vtkInteractorStyle;
42 class vtkAnnotationLink;
43 
44 class VTKCHARTSCORE_EXPORT vtkChart : public vtkContextItem
45 {
46 public:
47  vtkTypeMacro(vtkChart, vtkContextItem);
48  void PrintSelf(ostream &os, vtkIndent indent) override;
49 
53  enum {
56  BAR,
58  BAG,
60  AREA};
61 
74  enum {
75  PAN = 0,
79  SELECT_RECTANGLE = SELECT,
82  NOTIFY
83  };
84 
88  enum EventIds {
89  UpdateRange = 1002
90  };
91 
95  bool Paint(vtkContext2D *painter) override = 0;
96 
100  virtual vtkPlot* AddPlot(int type);
101 
105  virtual vtkIdType AddPlot(vtkPlot* plot);
106 
111  virtual bool RemovePlot(vtkIdType index);
112 
118  virtual bool RemovePlotInstance(vtkPlot* plot);
119 
123  virtual void ClearPlots();
124 
128  virtual vtkPlot* GetPlot(vtkIdType index);
129 
133  virtual vtkIdType GetNumberOfPlots();
134 
139  virtual vtkAxis* GetAxis(int axisIndex);
140 
145  virtual void SetAxis(int axisIndex, vtkAxis*);
146 
150  virtual vtkIdType GetNumberOfAxes();
151 
156  virtual void RecalculateBounds();
157 
165  enum {
168  SELECTION_COLUMNS
169  };
170 
172 
180  virtual void SetSelectionMethod(int method);
181  virtual int GetSelectionMethod();
183 
187  virtual void SetAnnotationLink(vtkAnnotationLink *link);
188 
190 
193  vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
195 
197 
200  vtkSetVector2Macro(Geometry, int);
201  vtkGetVector2Macro(Geometry, int);
203 
205 
208  vtkSetVector2Macro(Point1, int);
209  vtkGetVector2Macro(Point1, int);
211 
213 
216  vtkSetVector2Macro(Point2, int);
217  vtkGetVector2Macro(Point2, int);
219 
221 
224  virtual void SetShowLegend(bool visible);
225  virtual bool GetShowLegend();
227 
232  virtual vtkChartLegend * GetLegend();
233 
235 
238  virtual void SetTitle(const vtkStdString &title);
239  virtual vtkStdString GetTitle();
241 
243 
246  vtkGetObjectMacro(TitleProperties, vtkTextProperty);
248 
250 
253  void SetBottomBorder(int border);
254  void SetTopBorder(int border);
255  void SetLeftBorder(int border);
256  void SetRightBorder(int border);
258 
262  void SetBorders(int left, int bottom, int right, int top);
263 
269  void SetSize(const vtkRectf &rect);
270 
274  vtkRectf GetSize();
275 
279  enum {
280  FILL_SCENE, // Attempt to fill the entire scene.
281  FILL_RECT, // Attempt to supply the supplied vtkRectf in Size.
282  AXES_TO_RECT // Put the corners of the axes on the vtkRectf in Size.
283  };
284 
286 
291  vtkSetMacro(LayoutStrategy, int);
292  vtkGetMacro(LayoutStrategy, int);
294 
296 
300  virtual void SetAutoSize(bool isAutoSized)
301  {
302  this->LayoutStrategy = isAutoSized ? vtkChart::FILL_SCENE :
304  }
305  virtual bool GetAutoSize()
306  {
307  return this->LayoutStrategy == vtkChart::FILL_SCENE ? true : false;
308  }
310 
312 
320  vtkSetMacro(RenderEmpty, bool);
321  vtkGetMacro(RenderEmpty, bool);
323 
334  virtual void SetActionToButton(int action, int button);
335 
340  virtual int GetActionToButton(int action);
341 
347  virtual void SetClickActionToButton(int action, int button);
348 
354  virtual int GetClickActionToButton(int action);
355 
357 
360  void SetBackgroundBrush(vtkBrush *brush);
361  vtkBrush* GetBackgroundBrush();
363 
365 
370  virtual void SetSelectionMode(int);
371  vtkGetMacro(SelectionMode, int);
373 
374 protected:
375  vtkChart();
376  ~vtkChart() override;
377 
384  bool CalculatePlotTransform(vtkAxis *x, vtkAxis *y,
385  vtkTransform2D *transform);
386 
390  bool CalculateUnscaledPlotTransform(vtkAxis *x, vtkAxis *y,
391  vtkTransform2D *transform);
392 
396  void AttachAxisRangeListener(vtkAxis*);
397 
398  void AxisRangeForwarderCallback(vtkObject*,unsigned long, void*);
399 
404 
408  int Geometry[2];
409 
413  int Point1[2];
414 
418  int Point2[2];
419 
424 
429 
434 
436  // The layout strategy to employ when fitting the chart into the space.
439 
444 
445  // The mode when the chart is doing selection.
447 
448  // How plot selections are handled, SELECTION_ROWS (default) or
449  // SELECTION_PLOTS - based on the plot that created the selection.
451 
453 
457  {
458  public:
459  MouseActions();
460  enum { MaxAction = 6 };
461  short& Pan() { return Data[0]; }
462  short& Zoom() { return Data[1]; }
463  short& ZoomAxis() { return Data[2]; }
464  short& Select() { return Data[3]; }
465  short& SelectPolygon() { return Data[4]; }
466  short& ClickAndDrag() { return Data[5]; }
467  short& operator[](int index) { return Data[index]; }
468  short Data[MaxAction];
469  };
471  {
472  public:
474  short& Notify() { return Data[0]; }
475  short& Select() { return Data[1]; }
476  short& operator[](int index) { return Data[index]; }
477  short Data[2];
478  };
480 
483 
484 private:
485  vtkChart(const vtkChart &) = delete;
486  void operator=(const vtkChart &) = delete;
487 };
488 
489 #endif //vtkChart_h
vtkChart
Factory class for drawing 2D charts.
Definition: vtkChart.h:44
vtkBrush
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:37
vtkChart::Actions
MouseActions Actions
Definition: vtkChart.h:481
vtkChart::MouseClickActions::operator[]
short & operator[](int index)
Definition: vtkChart.h:476
vtkStdString.h
vtkChart::MouseActions
Hold mouse action mappings.
Definition: vtkChart.h:456
vtkChart::MouseClickActions
Definition: vtkChart.h:470
vtkChart::MouseClickActions::Select
short & Select()
Definition: vtkChart.h:475
vtkX3D::type
Definition: vtkX3D.h:516
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkChart::ZOOM_AXIS
Definition: vtkChart.h:77
vtkTransform2D
describes linear transformations via a 3x3 matrix
Definition: vtkTransform2D.h:45
vtkChart::ActionsClick
MouseClickActions ActionsClick
Definition: vtkChart.h:482
vtkChartLegend
draw the chart legend
Definition: vtkChartLegend.h:39
vtkChart::MouseActions::ClickAndDrag
short & ClickAndDrag()
Definition: vtkChart.h:466
vtkChart::RenderEmpty
bool RenderEmpty
Definition: vtkChart.h:438
vtkSmartPointer< vtkBrush >
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:53
vtkChart::SELECTION_PLOTS
Definition: vtkChart.h:167
vtkChart::SELECT
Definition: vtkChart.h:78
vtkChart::POINTS
Definition: vtkChart.h:55
vtkChart::BackgroundBrush
vtkSmartPointer< vtkBrush > BackgroundBrush
Brush to use for drawing the background.
Definition: vtkChart.h:443
vtkContext2D
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:52
vtkContextItem.h
vtkChart::BAG
Definition: vtkChart.h:58
vtkX3D::top
Definition: vtkX3D.h:502
vtkPlot
Abstract class for 2D plots.
Definition: vtkPlot.h:46
vtkChart::AnnotationLink
vtkAnnotationLink * AnnotationLink
Our annotation link, used for sharing selections etc.
Definition: vtkChart.h:403
vtkChart::FILL_SCENE
Definition: vtkChart.h:280
vtkChart::ShowLegend
bool ShowLegend
Display the legend?
Definition: vtkChart.h:423
vtkChart::SELECTION_ROWS
Definition: vtkChart.h:166
vtkX3D::title
Definition: vtkX3D.h:500
vtkContextScene
Provides a 2D scene for vtkContextItem objects.
Definition: vtkContextScene.h:47
vtkChart::MouseClickActions::Notify
short & Notify()
Definition: vtkChart.h:474
vtkX3D::bottom
Definition: vtkX3D.h:290
vtkChart::MouseActions::operator[]
short & operator[](int index)
Definition: vtkChart.h:467
vtkRect.h
vtkChart::STACKED
Definition: vtkChart.h:57
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkChart::FILL_RECT
Definition: vtkChart.h:281
vtkSmartPointer.h
vtkContextItem::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkChart::SelectionMode
int SelectionMode
Definition: vtkChart.h:446
vtkChart::GetAutoSize
virtual bool GetAutoSize()
Definition: vtkChart.h:305
vtkChart::Size
vtkRectf Size
Definition: vtkChart.h:435
vtkChart::CLICK_AND_DRAG
Definition: vtkChart.h:81
vtkInteractorStyle
provide event-driven interface to the rendering window (defines trackball mode)
Definition: vtkInteractorStyle.h:135
vtkTextProperty
represent text properties.
Definition: vtkTextProperty.h:33
vtkContextItem
base class for items that are part of a vtkContextScene.
Definition: vtkContextItem.h:31
vtkChart::LINE
Definition: vtkChart.h:54
vtkChart::FUNCTIONALBAG
Definition: vtkChart.h:59
vtkChart::EventIds
EventIds
Enum of event type that are triggered by the charts.
Definition: vtkChart.h:88
vtkChart::MouseActions::Select
short & Select()
Definition: vtkChart.h:464
vtkChart::Title
vtkStdString Title
The title of the chart.
Definition: vtkChart.h:428
vtkAbstractContextItem::Paint
virtual bool Paint(vtkContext2D *painter)
Paint event for the item, called whenever the item needs to be drawn.
vtkChart::LayoutStrategy
int LayoutStrategy
Definition: vtkChart.h:437
vtkChart::SetAutoSize
virtual void SetAutoSize(bool isAutoSized)
Set/get whether the chart should automatically resize to fill the current render window.
Definition: vtkChart.h:300
vtkChart::BAR
Definition: vtkChart.h:56
vtkAxis
takes care of drawing 2D axes
Definition: vtkAxis.h:68
vtkChart::MouseActions::ZoomAxis
short & ZoomAxis()
Definition: vtkChart.h:463
vtkChart::ZOOM
Definition: vtkChart.h:76
vtkChart::MouseActions::Pan
short & Pan()
Definition: vtkChart.h:461
vtkChart::MouseActions::SelectPolygon
short & SelectPolygon()
Definition: vtkChart.h:465
vtkChart::TitleProperties
vtkTextProperty * TitleProperties
The text properties associated with the chart.
Definition: vtkChart.h:433
vtkChart::MouseActions::Zoom
short & Zoom()
Definition: vtkChart.h:462
vtkChart::SelectionMethod
int SelectionMethod
Definition: vtkChart.h:450
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkX3D::index
Definition: vtkX3D.h:246
vtkChart::SELECT_POLYGON
Definition: vtkChart.h:80
vtkRectf
Definition: vtkRect.h:293