VTK  9.2.6
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
39#ifndef vtkChart_h
40#define vtkChart_h
41
42#include "vtkChartsCoreModule.h" // For export macro
43#include "vtkContextItem.h"
44#include "vtkContextScene.h" // For SelectionModifier
45#include "vtkRect.h" // For vtkRectf
46#include "vtkSmartPointer.h" // For SP ivars
47#include "vtkStdString.h" // For vtkStdString ivars
48
49class vtkTransform2D;
50class vtkContextScene;
51class vtkPlot;
52class vtkAxis;
53class vtkBrush;
54class vtkTextProperty;
55class vtkChartLegend;
56
59
60class VTKCHARTSCORE_EXPORT vtkChart : public vtkContextItem
61{
62public:
63 vtkTypeMacro(vtkChart, vtkContextItem);
64 void PrintSelf(ostream& os, vtkIndent indent) override;
65
69 enum
70 {
77 AREA
78 };
79
92 enum
93 {
94 PAN = 0,
98 SELECT_RECTANGLE = SELECT,
101 NOTIFY
102 };
103
108 {
109 UpdateRange = 1002
110 };
111
115 bool Paint(vtkContext2D* painter) override = 0;
116
120 virtual vtkPlot* AddPlot(int type);
121
125 virtual vtkIdType AddPlot(vtkPlot* plot);
126
131 virtual bool RemovePlot(vtkIdType index);
132
138 virtual bool RemovePlotInstance(vtkPlot* plot);
139
143 virtual void ClearPlots();
144
148 virtual vtkPlot* GetPlot(vtkIdType index);
149
154
159 virtual vtkAxis* GetAxis(int axisIndex);
160
165 virtual void SetAxis(int axisIndex, vtkAxis*);
166
171
176 virtual void RecalculateBounds();
177
185 enum
186 {
189 SELECTION_COLUMNS
190 };
191
193
201 virtual void SetSelectionMethod(int method);
202 virtual int GetSelectionMethod();
204
209
211
214 vtkGetObjectMacro(AnnotationLink, vtkAnnotationLink);
216
218
221 vtkSetVector2Macro(Geometry, int);
222 vtkGetVector2Macro(Geometry, int);
224
226
229 vtkSetVector2Macro(Point1, int);
230 vtkGetVector2Macro(Point1, int);
232
234
237 vtkSetVector2Macro(Point2, int);
238 vtkGetVector2Macro(Point2, int);
240
242
245 virtual void SetShowLegend(bool visible);
246 virtual bool GetShowLegend();
248
254
256
259 virtual void SetTitle(const vtkStdString& title);
262
264
267 vtkGetObjectMacro(TitleProperties, vtkTextProperty);
269
271
274 void SetBottomBorder(int border);
275 void SetTopBorder(int border);
276 void SetLeftBorder(int border);
277 void SetRightBorder(int border);
279
283 void SetBorders(int left, int bottom, int right, int top);
284
290 virtual void SetSize(const vtkRectf& rect);
291
296
300 enum
301 {
302 FILL_SCENE, // Attempt to fill the entire scene.
303 FILL_RECT, // Attempt to supply the supplied vtkRectf in Size.
304 AXES_TO_RECT // Put the corners of the axes on the vtkRectf in Size.
305 };
306
308
313 vtkSetMacro(LayoutStrategy, int);
314 vtkGetMacro(LayoutStrategy, int);
316
318
322 virtual void SetAutoSize(bool isAutoSized)
323 {
324 this->LayoutStrategy = isAutoSized ? vtkChart::FILL_SCENE : vtkChart::FILL_RECT;
325 }
326 virtual bool GetAutoSize() { return this->LayoutStrategy == vtkChart::FILL_SCENE ? true : false; }
328
330
338 vtkSetMacro(RenderEmpty, bool);
339 vtkGetMacro(RenderEmpty, bool);
341
352 virtual void SetActionToButton(int action, int button);
353
358 virtual int GetActionToButton(int action);
359
365 virtual void SetClickActionToButton(int action, int button);
366
372 virtual int GetClickActionToButton(int action);
373
375
381
383
387 vtkSetClampMacro(
389 vtkGetMacro(SelectionMode, int);
391
392protected:
394 ~vtkChart() override;
395
403
408
413
414 void AxisRangeForwarderCallback(vtkObject*, unsigned long, void*);
415
420
424 int Geometry[2];
425
429 int Point1[2];
430
434 int Point2[2];
435
439 int Borders[4];
440
445
450
455
457 // The layout strategy to employ when fitting the chart into the space.
460
465
466 // The mode when the chart is doing selection.
468
469 // How plot selections are handled, SELECTION_ROWS (default) or
470 // SELECTION_PLOTS - based on the plot that created the selection.
472
474
478 {
479 public:
481 enum
482 {
483 MaxAction = 6
484 };
485 short& Pan() { return Data[0]; }
486 short& Zoom() { return Data[1]; }
487 short& ZoomAxis() { return Data[2]; }
488 short& Select() { return Data[3]; }
489 short& SelectPolygon() { return Data[4]; }
490 short& ClickAndDrag() { return Data[5]; }
491 short& operator[](int index) { return Data[index]; }
492 short Data[MaxAction];
493 };
495 {
496 public:
498 short& Notify() { return Data[0]; }
499 short& Select() { return Data[1]; }
500 short& operator[](int index) { return Data[index]; }
501 short Data[2];
502 };
504
507
508private:
509 vtkChart(const vtkChart&) = delete;
510 void operator=(const vtkChart&) = delete;
511};
512
513#endif // vtkChart_h
takes care of drawing 2D axes
Definition vtkAxis.h:81
provides a brush that fills shapes drawn by vtkContext2D.
Definition vtkBrush.h:50
draw the chart legend
Hold mouse action mappings.
Definition vtkChart.h:478
short & operator[](int index)
Definition vtkChart.h:491
short & SelectPolygon()
Definition vtkChart.h:489
short & operator[](int index)
Definition vtkChart.h:500
Factory class for drawing 2D charts.
Definition vtkChart.h:61
virtual vtkPlot * AddPlot(int type)
Add a plot to the chart, defaults to using the name of the y column.
MouseClickActions ActionsClick
Definition vtkChart.h:506
void AxisRangeForwarderCallback(vtkObject *, unsigned long, void *)
virtual void SetSize(const vtkRectf &rect)
Set the size of the chart.
virtual void SetAutoSize(bool isAutoSized)
Set/get whether the chart should automatically resize to fill the current render window.
Definition vtkChart.h:322
virtual bool GetShowLegend()
Set/get whether the chart should draw a legend.
virtual vtkStdString GetTitle()
Get/set the title text of the chart.
virtual void ClearPlots()
Remove all plots from the chart.
int LayoutStrategy
Definition vtkChart.h:458
virtual void SetTitle(const vtkStdString &title)
Get/set the title text of the chart.
virtual vtkChartLegend * GetLegend()
Get the legend for the chart, if available.
vtkStdString Title
The title of the chart.
Definition vtkChart.h:449
vtkTextProperty * TitleProperties
The text properties associated with the chart.
Definition vtkChart.h:454
@ SELECT_POLYGON
Definition vtkChart.h:99
@ CLICK_AND_DRAG
Definition vtkChart.h:100
@ ZOOM_AXIS
Definition vtkChart.h:96
bool CalculateUnscaledPlotTransform(vtkAxis *x, vtkAxis *y, vtkTransform2D *transform)
Calculate the unshifted, and unscaled plot transform for the x and y axis.
virtual bool GetAutoSize()
Set/get whether the chart should automatically resize to fill the current render window.
Definition vtkChart.h:326
int SelectionMethod
Definition vtkChart.h:471
virtual void SetAnnotationLink(vtkAnnotationLink *link)
Set the vtkAnnotationLink for the chart.
virtual int GetActionToButton(int action)
Get the mouse button associated with the supplied action.
MouseActions Actions
Definition vtkChart.h:505
void SetRightBorder(int border)
Set/get the borders of the chart (space in pixels around the chart).
vtkAnnotationLink * AnnotationLink
Our annotation link, used for sharing selections etc.
Definition vtkChart.h:419
vtkRectf GetSize()
Get the current size of the chart.
@ FUNCTIONALBAG
Definition vtkChart.h:76
@ STACKED
Definition vtkChart.h:74
void SetBottomBorder(int border)
Set/get the borders of the chart (space in pixels around the chart).
@ SELECTION_PLOTS
Definition vtkChart.h:188
@ SELECTION_ROWS
Definition vtkChart.h:187
virtual int GetClickActionToButton(int action)
Get the mouse button associated with the supplied click action.
vtkRectf Size
Definition vtkChart.h:456
virtual void SetSelectionMethod(int method)
Set the selection method, which controls how selections are handled by the chart.
vtkSmartPointer< vtkBrush > BackgroundBrush
Brush to use for drawing the background.
Definition vtkChart.h:464
virtual void SetClickActionToButton(int action, int button)
Assign action types to single mouse clicks.
@ FILL_SCENE
Definition vtkChart.h:302
@ FILL_RECT
Definition vtkChart.h:303
EventIds
Enum of event type that are triggered by the charts.
Definition vtkChart.h:108
virtual bool RemovePlotInstance(vtkPlot *plot)
Remove the given plot.
int SelectionMode
Definition vtkChart.h:467
void SetTopBorder(int border)
Set/get the borders of the chart (space in pixels around the chart).
bool RenderEmpty
Definition vtkChart.h:459
void SetBackgroundBrush(vtkBrush *brush)
Set/Get the brush to use for the background color.
bool Paint(vtkContext2D *painter) override=0
Paint event for the chart, called whenever the chart needs to be drawn.
virtual void SetShowLegend(bool visible)
Set/get whether the chart should draw a legend.
virtual vtkIdType GetNumberOfPlots()
Get the number of plots the chart contains.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void RecalculateBounds()
Request that the chart recalculates the range of its axes.
virtual void SetAxis(int axisIndex, vtkAxis *)
Set the axis specified by axisIndex.
virtual bool RemovePlot(vtkIdType index)
Remove the plot at the specified index, returns true if successful, false if the index was invalid.
virtual vtkAxis * GetAxis(int axisIndex)
Get the axis specified by axisIndex.
virtual vtkIdType GetNumberOfAxes()
Get the number of axes in the current chart.
virtual void SetActionToButton(int action, int button)
Assign action types to mouse buttons.
void AttachAxisRangeListener(vtkAxis *)
Attach axis range listener so we can forward those events at the chart level.
virtual vtkIdType AddPlot(vtkPlot *plot)
Add a plot to the chart.
virtual vtkPlot * GetPlot(vtkIdType index)
Get the plot at the specified index, returns null if the index is invalid.
virtual int GetSelectionMethod()
Set the selection method, which controls how selections are handled by the chart.
bool CalculatePlotTransform(vtkAxis *x, vtkAxis *y, vtkTransform2D *transform)
Given the x and y vtkAxis, and a transform, calculate the transform that the points in a chart would ...
vtkBrush * GetBackgroundBrush()
Set/Get the brush to use for the background color.
void SetLeftBorder(int border)
Set/get the borders of the chart (space in pixels around the chart).
~vtkChart() override
bool ShowLegend
Display the legend?
Definition vtkChart.h:444
void SetBorders(int left, int bottom, int right, int top)
Set/get the borders of the chart (space in pixels around the chart).
Class for drawing 2D primitives to a graphical context.
base class for items that are part of a vtkContextScene.
Provides a 2D scene for vtkContextItem objects.
a simple class to control print indentation
Definition vtkIndent.h:49
provide event-driven interface to the rendering window (defines trackball mode)
abstract base class for most VTK objects
Definition vtkObject.h:72
Abstract class for 2D plots.
Definition vtkPlot.h:63
Hold a reference to a vtkObjectBase instance.
Wrapper around std::string to keep symbols short.
represent text properties.
describes linear transformations via a 3x3 matrix
int vtkIdType
Definition vtkType.h:332