VTK  9.0.1
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 "vtkSmartPointer.h" // For SP ivars
31 #include "vtkStdString.h" // For vtkStdString 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
54  {
57  BAR,
59  BAG,
61  AREA
62  };
63 
76  enum
77  {
78  PAN = 0,
82  SELECT_RECTANGLE = SELECT,
85  NOTIFY
86  };
87 
91  enum EventIds
92  {
93  UpdateRange = 1002
94  };
95 
99  bool Paint(vtkContext2D* painter) override = 0;
100 
104  virtual vtkPlot* AddPlot(int type);
105 
109  virtual vtkIdType AddPlot(vtkPlot* plot);
110 
115  virtual bool RemovePlot(vtkIdType index);
116 
122  virtual bool RemovePlotInstance(vtkPlot* plot);
123 
127  virtual void ClearPlots();
128 
132  virtual vtkPlot* GetPlot(vtkIdType index);
133 
137  virtual vtkIdType GetNumberOfPlots();
138 
143  virtual vtkAxis* GetAxis(int axisIndex);
144 
149  virtual void SetAxis(int axisIndex, vtkAxis*);
150 
154  virtual vtkIdType GetNumberOfAxes();
155 
160  virtual void RecalculateBounds();
161 
169  enum
170  {
173  SELECTION_COLUMNS
174  };
175 
177 
185  virtual void SetSelectionMethod(int method);
186  virtual int GetSelectionMethod();
188 
192  virtual void SetAnnotationLink(vtkAnnotationLink* link);
193 
195 
198  vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
200 
202 
205  vtkSetVector2Macro(Geometry, int);
206  vtkGetVector2Macro(Geometry, int);
208 
210 
213  vtkSetVector2Macro(Point1, int);
214  vtkGetVector2Macro(Point1, int);
216 
218 
221  vtkSetVector2Macro(Point2, int);
222  vtkGetVector2Macro(Point2, int);
224 
226 
229  virtual void SetShowLegend(bool visible);
230  virtual bool GetShowLegend();
232 
237  virtual vtkChartLegend* GetLegend();
238 
240 
243  virtual void SetTitle(const vtkStdString& title);
244  virtual vtkStdString GetTitle();
246 
248 
251  vtkGetObjectMacro(TitleProperties, vtkTextProperty);
253 
255 
258  void SetBottomBorder(int border);
259  void SetTopBorder(int border);
260  void SetLeftBorder(int border);
261  void SetRightBorder(int border);
263 
267  void SetBorders(int left, int bottom, int right, int top);
268 
274  void SetSize(const vtkRectf& rect);
275 
279  vtkRectf GetSize();
280 
284  enum
285  {
286  FILL_SCENE, // Attempt to fill the entire scene.
287  FILL_RECT, // Attempt to supply the supplied vtkRectf in Size.
288  AXES_TO_RECT // Put the corners of the axes on the vtkRectf in Size.
289  };
290 
292 
297  vtkSetMacro(LayoutStrategy, int);
298  vtkGetMacro(LayoutStrategy, int);
300 
302 
306  virtual void SetAutoSize(bool isAutoSized)
307  {
308  this->LayoutStrategy = isAutoSized ? vtkChart::FILL_SCENE : vtkChart::FILL_RECT;
309  }
310  virtual bool GetAutoSize() { return this->LayoutStrategy == vtkChart::FILL_SCENE ? true : false; }
312 
314 
322  vtkSetMacro(RenderEmpty, bool);
323  vtkGetMacro(RenderEmpty, bool);
325 
336  virtual void SetActionToButton(int action, int button);
337 
342  virtual int GetActionToButton(int action);
343 
349  virtual void SetClickActionToButton(int action, int button);
350 
356  virtual int GetClickActionToButton(int action);
357 
359 
362  void SetBackgroundBrush(vtkBrush* brush);
363  vtkBrush* GetBackgroundBrush();
365 
367 
372  virtual void SetSelectionMode(int);
373  vtkGetMacro(SelectionMode, int);
375 
376 protected:
377  vtkChart();
378  ~vtkChart() override;
379 
386  bool CalculatePlotTransform(vtkAxis* x, vtkAxis* y, vtkTransform2D* transform);
387 
391  bool CalculateUnscaledPlotTransform(vtkAxis* x, vtkAxis* y, 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
461  {
462  MaxAction = 6
463  };
464  short& Pan() { return Data[0]; }
465  short& Zoom() { return Data[1]; }
466  short& ZoomAxis() { return Data[2]; }
467  short& Select() { return Data[3]; }
468  short& SelectPolygon() { return Data[4]; }
469  short& ClickAndDrag() { return Data[5]; }
470  short& operator[](int index) { return Data[index]; }
471  short Data[MaxAction];
472  };
474  {
475  public:
477  short& Notify() { return Data[0]; }
478  short& Select() { return Data[1]; }
479  short& operator[](int index) { return Data[index]; }
480  short Data[2];
481  };
483 
486 
487 private:
488  vtkChart(const vtkChart&) = delete;
489  void operator=(const vtkChart&) = delete;
490 };
491 
492 #endif // vtkChart_h
int SelectionMethod
Definition: vtkChart.h:450
MouseClickActions ActionsClick
Definition: vtkChart.h:485
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkStdString Title
The title of the chart.
Definition: vtkChart.h:428
vtkTextProperty * TitleProperties
The text properties associated with the chart.
Definition: vtkChart.h:433
short & SelectPolygon()
Definition: vtkChart.h:468
abstract base class for most VTK objects
Definition: vtkObject.h:62
bool RenderEmpty
Definition: vtkChart.h:438
vtkAnnotationLink * AnnotationLink
Our annotation link, used for sharing selections etc.
Definition: vtkChart.h:403
base class for items that are part of a vtkContextScene.
virtual bool Paint(vtkContext2D *painter)
Paint event for the item, called whenever the item needs to be drawn.
int LayoutStrategy
Definition: vtkChart.h:437
int vtkIdType
Definition: vtkType.h:338
short & ClickAndDrag()
Definition: vtkChart.h:469
int SelectionMode
Definition: vtkChart.h:446
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:52
Factory class for drawing 2D charts.
Definition: vtkChart.h:44
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:37
takes care of drawing 2D axes
Definition: vtkAxis.h:68
Provides a 2D scene for vtkContextItem objects.
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkRectf Size
Definition: vtkChart.h:435
virtual void SetAutoSize(bool isAutoSized)
Set/get whether the chart should automatically resize to fill the current render window.
Definition: vtkChart.h:306
bool ShowLegend
Display the legend?
Definition: vtkChart.h:423
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual bool GetAutoSize()
Set/get whether the chart should automatically resize to fill the current render window.
Definition: vtkChart.h:310
describes linear transformations via a 3x3 matrix
Abstract class for 2D plots.
Definition: vtkPlot.h:46
represent text properties.
EventIds
Enum of event type that are triggered by the charts.
Definition: vtkChart.h:91
short & operator[](int index)
Definition: vtkChart.h:470
draw the chart legend
provide event-driven interface to the rendering window (defines trackball mode)
Hold mouse action mappings.
Definition: vtkChart.h:456
vtkSmartPointer< vtkBrush > BackgroundBrush
Brush to use for drawing the background.
Definition: vtkChart.h:443
short & operator[](int index)
Definition: vtkChart.h:479
MouseActions Actions
Definition: vtkChart.h:484