VTK  9.0.1
vtkPlot.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPlot.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 
27 #ifndef vtkPlot_h
28 #define vtkPlot_h
29 
30 #include "vtkChartsCoreModule.h" // For export macro
31 #include "vtkContextItem.h"
32 #include "vtkContextPolygon.h" // For vtkContextPolygon
33 #include "vtkRect.h" // For vtkRectd ivar
34 #include "vtkSmartPointer.h" // Needed to hold SP ivars
35 #include "vtkStdString.h" // Needed to hold TooltipLabelFormat ivar
36 
37 class vtkVariant;
38 class vtkTable;
39 class vtkIdTypeArray;
40 class vtkContextMapper2D;
41 class vtkPen;
42 class vtkBrush;
43 class vtkAxis;
44 class vtkStringArray;
45 
46 class VTKCHARTSCORE_EXPORT vtkPlot : public vtkContextItem
47 {
48 public:
49  vtkTypeMacro(vtkPlot, vtkContextItem);
50  void PrintSelf(ostream& os, vtkIndent indent) override;
51 
53 
58  vtkSetMacro(LegendVisibility, bool);
59  vtkGetMacro(LegendVisibility, bool);
60  vtkBooleanMacro(LegendVisibility, bool);
62 
70  virtual bool PaintLegend(vtkContext2D* painter, const vtkRectf& rect, int legendIndex);
71 
73 
85  virtual void SetTooltipLabelFormat(const vtkStdString& label);
86  virtual vtkStdString GetTooltipLabelFormat();
88 
90 
93  virtual void SetTooltipNotation(int notation);
94  virtual int GetTooltipNotation();
96 
98 
101  virtual void SetTooltipPrecision(int precision);
102  virtual int GetTooltipPrecision();
104 
109  virtual vtkStdString GetTooltipLabel(
110  const vtkVector2d& plotPos, vtkIdType seriesIndex, vtkIdType segmentIndex);
111 
117  virtual vtkIdType GetNearestPoint(const vtkVector2f& point, const vtkVector2f& tolerance,
119 #ifndef VTK_LEGACY_REMOVE
120  vtkIdType* segmentId);
121 #else
122  vtkIdType* segmentId = nullptr);
123 #endif // VTK_LEGACY_REMOVE
124 
125 #ifndef VTK_LEGACY_REMOVE
126 
133  VTK_LEGACY(virtual vtkIdType GetNearestPoint(
134  const vtkVector2f& point, const vtkVector2f& tolerance, vtkVector2f* location));
135 #endif // VTK_LEGACY_REMOVE
136 
140  virtual bool SelectPoints(const vtkVector2f& min, const vtkVector2f& max);
141 
145  virtual bool SelectPointsInPolygon(const vtkContextPolygon& polygon);
146 
148 
151  virtual void SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
152  virtual void SetColor(double r, double g, double b);
153  virtual void GetColor(double rgb[3]);
154  void GetColor(unsigned char rgb[3]);
156 
160  virtual void SetWidth(float width);
161 
165  virtual float GetWidth();
166 
168 
171  void SetPen(vtkPen* pen);
172  vtkPen* GetPen();
174 
176 
179  void SetBrush(vtkBrush* brush);
180  vtkBrush* GetBrush();
182 
184 
188  void SetSelectionPen(vtkPen* pen);
189  vtkPen* GetSelectionPen();
191 
193 
197  void SetSelectionBrush(vtkBrush* brush);
198  vtkBrush* GetSelectionBrush();
200 
204  virtual void SetLabel(const vtkStdString& label);
205 
209  virtual vtkStdString GetLabel();
210 
215  virtual void SetLabels(vtkStringArray* labels);
216 
221  virtual vtkStringArray* GetLabels();
222 
226  virtual int GetNumberOfLabels();
227 
231  vtkStdString GetLabel(vtkIdType index);
232 
238  void SetIndexedLabels(vtkStringArray* labels);
239 
243  virtual vtkStringArray* GetIndexedLabels();
244 
248  vtkContextMapper2D* GetData();
249 
251 
255  vtkGetMacro(UseIndexForXSeries, bool);
257 
259 
263  vtkSetMacro(UseIndexForXSeries, bool);
265 
267 
271  virtual void SetInputData(vtkTable* table);
272  virtual void SetInputData(
273  vtkTable* table, const vtkStdString& xColumn, const vtkStdString& yColumn);
274  void SetInputData(vtkTable* table, vtkIdType xColumn, vtkIdType yColumn);
276 
280  virtual vtkTable* GetInput();
281 
287  virtual void SetInputArray(int index, const vtkStdString& name);
288 
290 
296  vtkSetMacro(Selectable, bool);
297  vtkGetMacro(Selectable, bool);
298  vtkBooleanMacro(Selectable, bool);
300 
302 
307  virtual void SetSelection(vtkIdTypeArray* id);
308  vtkGetObjectMacro(Selection, vtkIdTypeArray);
310 
312 
315  vtkGetObjectMacro(XAxis, vtkAxis);
316  virtual void SetXAxis(vtkAxis* axis);
318 
320 
323  vtkGetObjectMacro(YAxis, vtkAxis);
324  virtual void SetYAxis(vtkAxis* axis);
326 
328 
334  void SetShiftScale(const vtkRectd& scaling);
335  vtkRectd GetShiftScale();
337 
343  virtual void GetBounds(double bounds[4]) { bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; }
344 
369  virtual void GetUnscaledInputBounds(double bounds[4])
370  {
371  // Implemented here by calling GetBounds() to support plot
372  // subclasses that do no log-scaling or plot orientation.
373  return this->GetBounds(bounds);
374  }
375 
382  virtual void UpdateCache() {}
383 
385 
389  virtual void SetProperty(const vtkStdString& property, const vtkVariant& var);
390  virtual vtkVariant GetProperty(const vtkStdString& property);
392 
394 
398  static bool ClampPos(double pos[2], double bounds[4]);
399  virtual bool ClampPos(double pos[2]);
401 
402 protected:
403  vtkPlot();
404  ~vtkPlot() override;
405 
409  vtkStdString GetNumber(double position, vtkAxis* axis);
410 
412 
416  virtual void TransformScreenToData(const vtkVector2f& in, vtkVector2f& out);
417  virtual void TransformDataToScreen(const vtkVector2f& in, vtkVector2f& out);
418  virtual void TransformScreenToData(
419  const double inX, const double inY, double& outX, double& outY);
420  virtual void TransformDataToScreen(
421  const double inX, const double inY, double& outX, double& outY);
423 
428 
433 
439 
445 
450 
455 
460 
466 
472 
477 
482 
487 
492 
498 
504 
507 
512 
514 
515 #ifndef VTK_LEGACY_REMOVE
516 
520  bool LegacyRecursionFlag = false;
521 #endif // VTK_LEGACY_REMOVE
522 
523 private:
524  vtkPlot(const vtkPlot&) = delete;
525  void operator=(const vtkPlot&) = delete;
526 };
527 
528 #endif // vtkPlot_h
vtkBrush
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:37
vtkPlot::AutoLabels
vtkSmartPointer< vtkStringArray > AutoLabels
Holds Labels when they're auto-created.
Definition: vtkPlot.h:454
vtkStdString.h
vtkPlot::TooltipLabelFormat
vtkStdString TooltipLabelFormat
A printf-style string to build custom tooltip labels from.
Definition: vtkPlot.h:497
vtkPlot::IndexedLabels
vtkSmartPointer< vtkStringArray > IndexedLabels
Holds Labels when they're auto-created.
Definition: vtkPlot.h:459
vtkContextPolygon.h
vtkPlot::Brush
vtkSmartPointer< vtkBrush > Brush
This object stores the vtkBrush that controls how the plot is drawn.
Definition: vtkPlot.h:432
vtkPlot::TooltipNotation
int TooltipNotation
Definition: vtkPlot.h:505
vtkContextMapper2D
Abstract class for 2D context mappers.
Definition: vtkContextMapper2D.h:37
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkTable
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:62
vtkPlot::LegendVisibility
bool LegendVisibility
Definition: vtkPlot.h:513
vtkPlot::Data
vtkSmartPointer< vtkContextMapper2D > Data
This data member contains the data that will be plotted, it inherits from vtkAlgorithm.
Definition: vtkPlot.h:471
vtkPlot::TooltipPrecision
int TooltipPrecision
Definition: vtkPlot.h:506
vtkSmartPointer< vtkPen >
vtkPlot::Selectable
bool Selectable
Whether plot points can be selected or not.
Definition: vtkPlot.h:476
vtkContext2D
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:52
vtkContextItem.h
vtkPlot
Abstract class for 2D plots.
Definition: vtkPlot.h:46
vtkPlot::Labels
vtkSmartPointer< vtkStringArray > Labels
Plot labels, used by legend.
Definition: vtkPlot.h:449
vtkRectd
Definition: vtkRect.h:340
max
#define max(a, b)
Definition: vtkX3DExporterFIWriterHelper.h:31
vtkVector2d
Definition: vtkVector.h:444
vtkX3D::position
@ position
Definition: vtkX3D.h:267
vtkX3D::point
@ point
Definition: vtkX3D.h:242
vtkPlot::UpdateCache
virtual void UpdateCache()
Subclasses that build data caches to speed up painting should override this method to update such cac...
Definition: vtkPlot.h:382
vtkPlot::UseIndexForXSeries
bool UseIndexForXSeries
Use the Y array index for the X value.
Definition: vtkPlot.h:465
vtkRect.h
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkPlot::SelectionBrush
vtkSmartPointer< vtkBrush > SelectionBrush
This object stores the vtkBrush that controls how the selected elements of the plot are drawn.
Definition: vtkPlot.h:444
vtkPlot::TooltipDefaultLabelFormat
vtkStdString TooltipDefaultLabelFormat
The default printf-style string to build custom tooltip labels from.
Definition: vtkPlot.h:503
vtkSmartPointer.h
vtkVariant
A atomic type representing the union of many types.
Definition: vtkVariant.h:65
vtkContextItem::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkPlot::Pen
vtkSmartPointer< vtkPen > Pen
This object stores the vtkPen that controls how the plot is drawn.
Definition: vtkPlot.h:427
vtkContextPolygon
Definition: vtkContextPolygon.h:26
vtkPlot::SelectionPen
vtkSmartPointer< vtkPen > SelectionPen
This object stores the vtkPen that controls how the selected elements of the plot are drawn.
Definition: vtkPlot.h:438
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkPlot::Selection
vtkIdTypeArray * Selection
Selected indices for the table the plot is rendering.
Definition: vtkPlot.h:481
vtkPlot::XAxis
vtkAxis * XAxis
The X axis associated with this plot.
Definition: vtkPlot.h:486
vtkContextItem
base class for items that are part of a vtkContextScene.
Definition: vtkContextItem.h:31
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkPlot::GetUnscaledInputBounds
virtual void GetUnscaledInputBounds(double bounds[4])
Provide un-log-scaled bounds for the plot inputs.
Definition: vtkPlot.h:369
vtkAxis
takes care of drawing 2D axes
Definition: vtkAxis.h:68
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:36
vtkX3D::location
@ location
Definition: vtkX3D.h:412
vtkPlot::ShiftScale
vtkRectd ShiftScale
The current shift in origin and scaling factor applied to the plot.
Definition: vtkPlot.h:511
vtkPen
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:36
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkPlot::GetBounds
virtual void GetBounds(double bounds[4])
Get the bounds for this plot as (Xmin, Xmax, Ymin, Ymax).
Definition: vtkPlot.h:343
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkRectf
Definition: vtkRect.h:326
vtkVector2f
Definition: vtkVector.h:432
vtkPlot::YAxis
vtkAxis * YAxis
The X axis associated with this plot.
Definition: vtkPlot.h:491