VTK  9.5.2
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
89 virtual void SetTooltipLabelFormat(const vtkStdString& label);
92
94
97 virtual void SetTooltipNotation(int notation);
98 virtual int GetTooltipNotation();
100
102
105 virtual void SetTooltipPrecision(int precision);
106 virtual int GetTooltipPrecision();
108
114 const vtkVector2d& plotPos, vtkIdType seriesIndex, vtkIdType segmentIndex);
115
121 virtual vtkIdType GetNearestPoint(const vtkVector2f& point, const vtkVector2f& tolerance,
122 vtkVector2f* location, vtkIdType* segmentId);
123
127 virtual bool SelectPoints(const vtkVector2f& min, const vtkVector2f& max);
128
132 virtual bool SelectPointsInPolygon(const vtkContextPolygon& polygon);
133
135
138 VTK_MARSHALSETTER(ColorRGBA)
139 virtual void SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
140 virtual void SetColor(unsigned char r, unsigned char g, unsigned char b);
142
144
148 virtual void SetColorF(double r, double g, double b, double a);
150 virtual void SetColorF(double r, double g, double b);
152
154
157 virtual void GetColor(unsigned char rgb[3]);
158 VTK_MARSHALGETTER(ColorRGBA)
159 void GetColorRGBA(unsigned char rgba[4]);
161
163
167 virtual void GetColorF(double rgb[3]);
169
173 virtual void SetWidth(float width);
174
178 virtual float GetWidth();
179
181
184 void SetPen(vtkPen* pen);
187
189
192 void SetBrush(vtkBrush* brush);
195
197
204
206
213
217 virtual void SetLabel(const vtkStdString& label);
218
223
228 virtual void SetLabels(vtkStringArray* labels);
229
235
239 virtual int GetNumberOfLabels();
240
245
252
257
262
264
268 vtkGetMacro(UseIndexForXSeries, bool);
270
272
276 vtkSetMacro(UseIndexForXSeries, bool);
278
280
284 VTK_MARSHALSETTER(Input)
285 virtual void SetInputData(vtkTable* table);
286 virtual void SetInputData(
287 vtkTable* table, const vtkStdString& xColumn, const vtkStdString& yColumn);
288 void SetInputData(vtkTable* table, vtkIdType xColumn, vtkIdType yColumn);
290
292
298
302 VTK_MARSHALGETTER(Input)
303 virtual vtkTable* GetInput();
304
310
316 virtual void SetInputArray(int index, const vtkStdString& name);
317
319
323 void SetXAxisInputArrayToProcess(const std::string& name);
325 void SetYAxisInputArrayToProcess(const std::string& name);
328
330
336 vtkSetMacro(Selectable, bool);
337 vtkGetMacro(Selectable, bool);
338 vtkBooleanMacro(Selectable, bool);
340
342
347 virtual void SetSelection(vtkIdTypeArray* id);
348 vtkGetObjectMacro(Selection, vtkIdTypeArray);
350
352
355 vtkGetObjectMacro(XAxis, vtkAxis);
356 virtual void SetXAxis(vtkAxis* axis);
358
360
363 vtkGetObjectMacro(YAxis, vtkAxis);
364 virtual void SetYAxis(vtkAxis* axis);
366
368
374 void SetShiftScale(const vtkRectd& shiftScale);
377
383 virtual void GetBounds(double bounds[4]) { bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; }
384
409 virtual void GetUnscaledInputBounds(double bounds[4])
410 {
411 // Implemented here by calling GetBounds() to support plot
412 // subclasses that do no log-scaling or plot orientation.
413 this->GetBounds(bounds);
414 }
415
417
421 virtual void SetProperty(const vtkStdString& property, const vtkVariant& var);
422 virtual vtkVariant GetProperty(const vtkStdString& property);
424
426
430 static bool ClampPos(double pos[2], double bounds[4]);
431 virtual bool ClampPos(double pos[2]);
433
437 bool Hit(const vtkContextMouseEvent& mouse) override;
438
445 virtual bool UpdateCache() { return true; }
446
452 vtkDataArray* points, vtkDataArray* selectedPoints, vtkIdTypeArray* selectedIds);
453
454protected:
456 ~vtkPlot() override;
457
461 vtkStdString GetNumber(double position, vtkAxis* axis);
462
464
468 virtual void TransformScreenToData(const vtkVector2f& in, vtkVector2f& out);
469 virtual void TransformDataToScreen(const vtkVector2f& in, vtkVector2f& out);
470 virtual void TransformScreenToData(double inX, double inY, double& outX, double& outY);
471 virtual void TransformDataToScreen(double inX, double inY, double& outX, double& outY);
473
477 virtual bool CacheRequiresUpdate();
478
483
488
493
499
505
510
515
520
526
532
537
542
547
552
558
564
567
572
574
575private:
576 vtkPlot(const vtkPlot&) = delete;
577 void operator=(const vtkPlot&) = delete;
578};
579
580VTK_ABI_NAMESPACE_END
581#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:525
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:571
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:566
vtkSmartPointer< vtkStringArray > IndexedLabels
Holds Labels when they're auto-created.
Definition vtkPlot.h:519
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:546
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 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:573
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:409
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:541
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:504
virtual void GetBounds(double bounds[4])
Get the bounds for this plot as (Xmin, Xmax, Ymin, Ymax).
Definition vtkPlot.h:383
virtual void SetTooltipLabelFormat(const vtkStdString &label)
Sets/gets a 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:445
vtkAxis * YAxis
The X axis associated with this plot.
Definition vtkPlot.h:551
vtkStdString TooltipDefaultLabelFormat
The default printf-style string to build custom tooltip labels from.
Definition vtkPlot.h:563
vtkSmartPointer< vtkPen > SelectionPen
This object stores the vtkPen that controls how the selected elements of the plot are drawn.
Definition vtkPlot.h:498
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:557
bool Selectable
Whether plot points can be selected or not.
Definition vtkPlot.h:536
int TooltipNotation
Definition vtkPlot.h:565
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:531
vtkSmartPointer< vtkStringArray > Labels
Plot labels, used by legend.
Definition vtkPlot.h:509
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:482
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:514
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:492
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:487
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:332
#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)