VTK  9.6.1
vtkPlot.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
20
21#ifndef vtkPlot_h
22#define vtkPlot_h
23
24#include "vtkChartsCoreModule.h" // For export macro
25#include "vtkContextItem.h"
26#include "vtkContextPolygon.h" // For vtkContextPolygon
27#include "vtkRect.h" // For vtkRectd ivar
28#include "vtkSmartPointer.h" // Needed to hold SP ivars
29#include "vtkStdString.h" // Needed to hold TooltipLabelFormat ivar
30#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
31
32VTK_ABI_NAMESPACE_BEGIN
33class vtkVariant;
34class vtkTable;
35class vtkIdTypeArray;
37class vtkPen;
38class vtkBrush;
39class vtkAxis;
40class vtkStringArray;
42
43class VTKCHARTSCORE_EXPORT VTK_MARSHALAUTO vtkPlot : public vtkContextItem
44{
45public:
46 vtkTypeMacro(vtkPlot, vtkContextItem);
47 void PrintSelf(ostream& os, vtkIndent indent) override;
48
54 void Update() override;
55
57
62 vtkSetMacro(LegendVisibility, bool);
63 vtkGetMacro(LegendVisibility, bool);
64 vtkBooleanMacro(LegendVisibility, bool);
66
74 virtual bool PaintLegend(vtkContext2D* painter, const vtkRectf& rect, int legendIndex);
75
77
99 virtual void SetTooltipLabelFormat(const vtkStdString& label);
102
104
107 virtual void SetTooltipNotation(int notation);
108 virtual int GetTooltipNotation();
110
112
115 virtual void SetTooltipPrecision(int precision);
116 virtual int GetTooltipPrecision();
118
124 const vtkVector2d& plotPos, vtkIdType seriesIndex, vtkIdType segmentIndex);
125
131 virtual vtkIdType GetNearestPoint(const vtkVector2f& point, const vtkVector2f& tolerance,
132 vtkVector2f* location, vtkIdType* segmentId);
133
137 virtual bool SelectPoints(const vtkVector2f& min, const vtkVector2f& max);
138
142 virtual bool SelectPointsInPolygon(const vtkContextPolygon& polygon);
143
145
148 VTK_MARSHALSETTER(ColorRGBA)
149 virtual void SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
150 virtual void SetColor(unsigned char r, unsigned char g, unsigned char b);
152
154
158 virtual void SetColorF(double r, double g, double b, double a);
160 virtual void SetColorF(double r, double g, double b);
162
164
167 virtual void GetColor(unsigned char rgb[3]);
168 VTK_MARSHALGETTER(ColorRGBA)
169 void GetColorRGBA(unsigned char rgba[4]);
171
173
177 virtual void GetColorF(double rgb[3]);
179
183 virtual void SetWidth(float width);
184
188 virtual float GetWidth();
189
191
194 void SetPen(vtkPen* pen);
197
199
202 void SetBrush(vtkBrush* brush);
205
207
214
216
223
227 virtual void SetLabel(const vtkStdString& label);
228
233
238 virtual void SetLabels(vtkStringArray* labels);
239
245
249 virtual int GetNumberOfLabels();
250
255
262
267
272
274
278 vtkGetMacro(UseIndexForXSeries, bool);
280
282
286 vtkSetMacro(UseIndexForXSeries, bool);
288
290
294 VTK_MARSHALSETTER(Input)
295 virtual void SetInputData(vtkTable* table);
296 virtual void SetInputData(
297 vtkTable* table, const vtkStdString& xColumn, const vtkStdString& yColumn);
298 void SetInputData(vtkTable* table, vtkIdType xColumn, vtkIdType yColumn);
300
302
308
312 VTK_MARSHALGETTER(Input)
313 virtual vtkTable* GetInput();
314
320
326 virtual void SetInputArray(int index, const vtkStdString& name);
327
329
333 void SetXAxisInputArrayToProcess(const std::string& name);
335 void SetYAxisInputArrayToProcess(const std::string& name);
338
340
346 vtkSetMacro(Selectable, bool);
347 vtkGetMacro(Selectable, bool);
348 vtkBooleanMacro(Selectable, bool);
350
352
357 virtual void SetSelection(vtkIdTypeArray* id);
358 vtkGetObjectMacro(Selection, vtkIdTypeArray);
360
362
365 vtkGetObjectMacro(XAxis, vtkAxis);
366 virtual void SetXAxis(vtkAxis* axis);
368
370
373 vtkGetObjectMacro(YAxis, vtkAxis);
374 virtual void SetYAxis(vtkAxis* axis);
376
378
384 void SetShiftScale(const vtkRectd& shiftScale);
387
393 virtual void GetBounds(double bounds[4]) { bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; }
394
419 virtual void GetUnscaledInputBounds(double bounds[4])
420 {
421 // Implemented here by calling GetBounds() to support plot
422 // subclasses that do no log-scaling or plot orientation.
423 this->GetBounds(bounds);
424 }
425
427
431 virtual void SetProperty(const vtkStdString& property, const vtkVariant& var);
432 virtual vtkVariant GetProperty(const vtkStdString& property);
434
436
440 static bool ClampPos(double pos[2], double bounds[4]);
441 virtual bool ClampPos(double pos[2]);
443
447 bool Hit(const vtkContextMouseEvent& mouse) override;
448
455 virtual bool UpdateCache() { return true; }
456
462 vtkDataArray* points, vtkDataArray* selectedPoints, vtkIdTypeArray* selectedIds);
463
464protected:
466 ~vtkPlot() override;
467
471 vtkStdString GetNumber(double position, vtkAxis* axis);
472
474
478 virtual void TransformScreenToData(const vtkVector2f& in, vtkVector2f& out);
479 virtual void TransformDataToScreen(const vtkVector2f& in, vtkVector2f& out);
480 virtual void TransformScreenToData(double inX, double inY, double& outX, double& outY);
481 virtual void TransformDataToScreen(double inX, double inY, double& outX, double& outY);
483
487 virtual bool CacheRequiresUpdate();
488
493
498
503
509
515
520
525
530
536
542
547
552
557
562
568
574
577
582
584
585private:
586 vtkPlot(const vtkPlot&) = delete;
587 void operator=(const vtkPlot&) = delete;
588};
589
590VTK_ABI_NAMESPACE_END
591#endif // vtkPlot_h
Proxy object to connect input/output ports.
takes care of drawing 2D axes
Definition vtkAxis.h:62
provides a brush that fills shapes drawn by vtkContext2D.
Definition vtkBrush.h:31
Class for drawing 2D primitives to a graphical context.
vtkContextItem()=default
Abstract class for 2D context mappers.
data structure to represent mouse events.
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition vtkIndent.h:29
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition vtkPen.h:30
bool UseIndexForXSeries
Use the Y array index for the X value.
Definition vtkPlot.h:535
virtual vtkStdString GetLabel()
Get the label of this plot.
virtual int GetTooltipPrecision()
Sets/gets the tooltip precision.
vtkContextMapper2D * GetData()
Get the data object that the plot will draw.
vtkRectd ShiftScale
The current shift in origin and scaling factor applied to the plot.
Definition vtkPlot.h:581
virtual int GetTooltipNotation()
Sets/gets the tooltip notation style.
virtual vtkTable * GetInput()
Get the input table used by the plot.
void SetSelectionPen(vtkPen *pen)
Set/get the vtkBrush object that controls how this plot fills selected shapes.
int TooltipPrecision
Definition vtkPlot.h:576
vtkSmartPointer< vtkStringArray > IndexedLabels
Holds Labels when they're auto-created.
Definition vtkPlot.h:529
void SetYAxisInputArrayToProcess(const std::string &name)
Convenient function to directly set/get the names of columns used for X and Y axis respectively.
void SetIndexedLabels(vtkStringArray *labels)
Set indexed labels for the plot.
virtual bool SelectPoints(const vtkVector2f &min, const vtkVector2f &max)
Select all points in the specified rectangle.
vtkAxis * XAxis
The X axis associated with this plot.
Definition vtkPlot.h:556
virtual vtkStdString GetTooltipLabel(const vtkVector2d &plotPos, vtkIdType seriesIndex, vtkIdType segmentIndex)
Generate and return the tooltip label string for this plot The segmentIndex parameter is ignored,...
static void FilterSelectedPoints(vtkDataArray *points, vtkDataArray *selectedPoints, vtkIdTypeArray *selectedIds)
Utility function that fills up selectedPoints with tuples from points.
vtkPen * GetPen()
Get the plot color as floating rgb values (comprised between 0.0 and 1.0).
virtual void SetWidth(float width)
@
virtual int GetNumberOfLabels()
Get the number of labels associated with this plot.
~vtkPlot() override
virtual vtkStdString GetTooltipLabelFormat()
Sets/gets a std::format or printf style string to build custom tooltip labels from.
std::string GetXAxisInputArrayToProcess()
Convenient function to directly set/get the names of columns used for X and Y axis respectively.
virtual vtkVariant GetProperty(const vtkStdString &property)
A General setter/getter that should be overridden.
virtual void SetInputData(vtkTable *table)
This is a convenience function to set the input table and the x, y column for the plot.
virtual void SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
Set the plot color with integer values (comprised between 0 and 255).
bool LegendVisibility
Definition vtkPlot.h:583
virtual void SetInputArray(int index, const vtkStdString &name)
Convenience function to set the input arrays.
virtual void GetUnscaledInputBounds(double bounds[4])
Provide un-log-scaled bounds for the plot inputs.
Definition vtkPlot.h:419
vtkAlgorithmOutput * GetInputConnection()
Get the input connection used by the plot.
vtkPen * GetSelectionPen()
Set/get the vtkBrush object that controls how this plot fills selected shapes.
virtual void TransformScreenToData(double inX, double inY, double &outX, double &outY)
Transform the mouse event in the control-points space.
void SetBrush(vtkBrush *brush)
Set/get the vtkBrush object that controls how this plot fills shapes.
vtkIdTypeArray * Selection
Selected indices for the table the plot is rendering.
Definition vtkPlot.h:551
virtual vtkStringArray * GetLabels()
Get the plot labels.
virtual void SetLabel(const vtkStdString &label)
Set the label of this plot.
virtual void SetColorF(double r, double g, double b, double a)
Set the plot color with floating values (comprised between 0.0 and 1.0).
vtkSmartPointer< vtkBrush > SelectionBrush
This object stores the vtkBrush that controls how the selected elements of the plot are drawn.
Definition vtkPlot.h:514
virtual void GetBounds(double bounds[4])
Get the bounds for this plot as (Xmin, Xmax, Ymin, Ymax).
Definition vtkPlot.h:393
virtual void SetTooltipLabelFormat(const vtkStdString &label)
Sets/gets a std::format or printf style string to build custom tooltip labels from.
virtual void GetColor(unsigned char rgb[3])
Get the plot color as integer rgb values (comprised between 0 and 255).
virtual void SetXAxis(vtkAxis *axis)
Get/set the X axis associated with this plot.
virtual bool UpdateCache()
Update the internal cache.
Definition vtkPlot.h:455
vtkAxis * YAxis
The X axis associated with this plot.
Definition vtkPlot.h:561
vtkStdString TooltipDefaultLabelFormat
The default printf-style string to build custom tooltip labels from.
Definition vtkPlot.h:573
vtkSmartPointer< vtkPen > SelectionPen
This object stores the vtkPen that controls how the selected elements of the plot are drawn.
Definition vtkPlot.h:508
virtual bool PaintLegend(vtkContext2D *painter, const vtkRectf &rect, int legendIndex)
Paint legend event for the plot, called whenever the legend needs the plot items symbol/mark/line dra...
void SetSelectionBrush(vtkBrush *brush)
Set/get the vtkBrush object that controls how this plot fills selected shapes.
virtual void SetProperty(const vtkStdString &property, const vtkVariant &var)
A General setter/getter that should be overridden.
void SetPen(vtkPen *pen)
Set/get the vtkPen object that controls how this plot draws (out)lines.
vtkStdString TooltipLabelFormat
A printf-style string to build custom tooltip labels from.
Definition vtkPlot.h:567
bool Selectable
Whether plot points can be selected or not.
Definition vtkPlot.h:546
int TooltipNotation
Definition vtkPlot.h:575
void SetXAxisInputArrayToProcess(const std::string &name)
Convenient function to directly set/get the names of columns used for X and Y axis respectively.
vtkRectd GetShiftScale()
Get/set the origin shift and scaling factor used by the plot, this is normally 0.0 offset and 1....
void GetColorRGBA(unsigned char rgba[4])
Get the plot color as integer rgb values (comprised between 0 and 255).
virtual vtkStringArray * GetIndexedLabels()
Get the indexed labels array.
virtual void TransformDataToScreen(double inX, double inY, double &outX, double &outY)
Transform the mouse event in the control-points space.
vtkSmartPointer< vtkContextMapper2D > Data
This data member contains the data that will be plotted, it inherits from vtkAlgorithm.
Definition vtkPlot.h:541
vtkSmartPointer< vtkStringArray > Labels
Plot labels, used by legend.
Definition vtkPlot.h:519
std::string GetYAxisInputArrayToProcess()
Convenient function to directly set/get the names of columns used for X and Y axis respectively.
void Update() override
Perform any updates to the item that may be necessary before rendering.
virtual void SetTooltipPrecision(int precision)
Sets/gets the tooltip precision.
void SetShiftScale(const vtkRectd &shiftScale)
Get/set the origin shift and scaling factor used by the plot, this is normally 0.0 offset and 1....
static bool ClampPos(double pos[2], double bounds[4])
Clamp the given 2D pos into the provided bounds Return true if the pos has been clamped,...
virtual void TransformScreenToData(const vtkVector2f &in, vtkVector2f &out)
Transform the mouse event in the control-points space.
virtual void SetYAxis(vtkAxis *axis)
Get/set the Y axis associated with this plot.
bool Hit(const vtkContextMouseEvent &mouse) override
Returns true if the supplied x, y coordinate is inside the item.
vtkTimeStamp BuildTime
The point cache is marked dirty until it has been initialized.
Definition vtkPlot.h:492
vtkBrush * GetSelectionBrush()
Set/get the vtkBrush object that controls how this plot fills selected shapes.
virtual vtkIdType GetNearestPoint(const vtkVector2f &point, const vtkVector2f &tolerance, vtkVector2f *location, vtkIdType *segmentId)
Function to query a plot for the nearest point to the specified coordinate.
vtkSmartPointer< vtkStringArray > AutoLabels
Holds Labels when they're auto-created.
Definition vtkPlot.h:524
virtual void TransformDataToScreen(const vtkVector2f &in, vtkVector2f &out)
Transform the mouse event in the control-points space.
virtual bool ClampPos(double pos[2])
Clamp the given 2D pos into the provided bounds Return true if the pos has been clamped,...
vtkStdString GetNumber(double position, vtkAxis *axis)
Get the properly formatted number for the supplied position and axis.
virtual void SetInputConnection(vtkAlgorithmOutput *input)
This is a convenience function to set the input connection for the plot.
vtkSmartPointer< vtkBrush > Brush
This object stores the vtkBrush that controls how the plot is drawn.
Definition vtkPlot.h:502
virtual bool CacheRequiresUpdate()
Test if the internal cache requires an update.
virtual bool SelectPointsInPolygon(const vtkContextPolygon &polygon)
Select all points in the specified polygon.
vtkBrush * GetBrush()
Set/get the vtkBrush object that controls how this plot fills shapes.
virtual void SetSelection(vtkIdTypeArray *id)
Sets the list of points that must be selected.
vtkSmartPointer< vtkPen > Pen
This object stores the vtkPen that controls how the plot is drawn.
Definition vtkPlot.h:497
virtual float GetWidth()
Get the width of the line.
virtual void GetColorF(double rgb[3])
Get the plot color as floating rgb values (comprised between 0.0 and 1.0).
virtual void SetLabels(vtkStringArray *labels)
Set the plot labels, these are used for stacked chart variants, with the index referring to the stack...
virtual void SetTooltipNotation(int notation)
Sets/gets the tooltip notation style.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Hold a reference to a vtkObjectBase instance.
Wrapper around std::string to keep symbols short.
a vtkAbstractArray subclass for strings
A table, which contains similar-typed columns of data.
Definition vtkTable.h:60
record modification and/or execution time
A type representing the union of many types.
Definition vtkVariant.h:53
#define vtkDataArray
virtual double * GetBounds()
Compute the bounding box of the current cell in `bounds' in global coordinates.
int vtkIdType
Definition vtkType.h:368
#define VTK_MARSHALSETTER(property)
#define VTK_MARSHAL_EXCLUDE_REASON_IS_REDUNDANT
#define VTK_MARSHALGETTER(property)
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)
#define max(a, b)