VTK  9.3.20240420
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
130#ifndef vtkPlot_h
131#define vtkPlot_h
132
133#include "vtkChartsCoreModule.h" // For export macro
134#include "vtkContextItem.h"
135#include "vtkContextPolygon.h" // For vtkContextPolygon
136#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_3_0
137#include "vtkRect.h" // For vtkRectd ivar
138#include "vtkSmartPointer.h" // Needed to hold SP ivars
139#include "vtkStdString.h" // Needed to hold TooltipLabelFormat ivar
140
141VTK_ABI_NAMESPACE_BEGIN
142class vtkVariant;
143class vtkTable;
144class vtkIdTypeArray;
146class vtkPen;
147class vtkBrush;
148class vtkAxis;
149class vtkStringArray;
151
152class VTKCHARTSCORE_EXPORT vtkPlot : public vtkContextItem
153{
154public:
155 vtkTypeMacro(vtkPlot, vtkContextItem);
156 void PrintSelf(ostream& os, vtkIndent indent) override;
157
163 void Update() override;
164
166
171 vtkSetMacro(LegendVisibility, bool);
172 vtkGetMacro(LegendVisibility, bool);
173 vtkBooleanMacro(LegendVisibility, bool);
175
183 virtual bool PaintLegend(vtkContext2D* painter, const vtkRectf& rect, int legendIndex);
184
186
198 virtual void SetTooltipLabelFormat(const vtkStdString& label);
201
203
206 virtual void SetTooltipNotation(int notation);
207 virtual int GetTooltipNotation();
209
211
214 virtual void SetTooltipPrecision(int precision);
215 virtual int GetTooltipPrecision();
217
223 const vtkVector2d& plotPos, vtkIdType seriesIndex, vtkIdType segmentIndex);
224
230 virtual vtkIdType GetNearestPoint(const vtkVector2f& point, const vtkVector2f& tolerance,
231 vtkVector2f* location, vtkIdType* segmentId);
232
236 virtual bool SelectPoints(const vtkVector2f& min, const vtkVector2f& max);
237
241 virtual bool SelectPointsInPolygon(const vtkContextPolygon& polygon);
242
246 virtual void SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
247
249
252 virtual void SetColorF(double r, double g, double b, double a);
253 virtual void SetColorF(double r, double g, double b);
254
255 // If removed, please remplace it with the following function:
256 // SetColor(unsigned char r, unsigned char g, unsigned char b)
257 // here and in the inheriting classes overriding it
258 VTK_DEPRECATED_IN_9_3_0("Please use unambiguous SetColorF method instead.")
259 virtual void SetColor(double r, double g, double b) { this->SetColorF(r, g, b); }
261
265 void GetColor(unsigned char rgb[3]);
266
268
271 virtual void GetColorF(double rgb[3]);
272
273 // If removed, please make GetColor(unsigned char rgb[3]) virtual
274 VTK_DEPRECATED_IN_9_3_0("Please use unambiguous GetColorF method instead.")
275 virtual void GetColor(double rgb[3]) { this->GetColorF(rgb); }
277
281 virtual void SetWidth(float width);
282
286 virtual float GetWidth();
287
289
292 void SetPen(vtkPen* pen);
295
297
300 void SetBrush(vtkBrush* brush);
303
305
312
314
321
325 virtual void SetLabel(const vtkStdString& label);
326
331
336 virtual void SetLabels(vtkStringArray* labels);
337
343
347 virtual int GetNumberOfLabels();
348
353
360
365
370
372
376 vtkGetMacro(UseIndexForXSeries, bool);
378
380
384 vtkSetMacro(UseIndexForXSeries, bool);
386
388
392 virtual void SetInputData(vtkTable* table);
393 virtual void SetInputData(
394 vtkTable* table, const vtkStdString& xColumn, const vtkStdString& yColumn);
395 void SetInputData(vtkTable* table, vtkIdType xColumn, vtkIdType yColumn);
397
399
404
408 virtual vtkTable* GetInput();
409
414
420 virtual void SetInputArray(int index, const vtkStdString& name);
421
423
429 vtkSetMacro(Selectable, bool);
430 vtkGetMacro(Selectable, bool);
431 vtkBooleanMacro(Selectable, bool);
433
435
440 virtual void SetSelection(vtkIdTypeArray* id);
441 vtkGetObjectMacro(Selection, vtkIdTypeArray);
443
445
448 vtkGetObjectMacro(XAxis, vtkAxis);
449 virtual void SetXAxis(vtkAxis* axis);
451
453
456 vtkGetObjectMacro(YAxis, vtkAxis);
457 virtual void SetYAxis(vtkAxis* axis);
459
461
467 void SetShiftScale(const vtkRectd& shiftScale);
470
476 virtual void GetBounds(double bounds[4]) { bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; }
477
502 virtual void GetUnscaledInputBounds(double bounds[4])
503 {
504 // Implemented here by calling GetBounds() to support plot
505 // subclasses that do no log-scaling or plot orientation.
506 return this->GetBounds(bounds);
507 }
508
510
514 virtual void SetProperty(const vtkStdString& property, const vtkVariant& var);
515 virtual vtkVariant GetProperty(const vtkStdString& property);
517
519
523 static bool ClampPos(double pos[2], double bounds[4]);
524 virtual bool ClampPos(double pos[2]);
526
530 bool Hit(const vtkContextMouseEvent& mouse) override;
531
538 virtual bool UpdateCache() { return true; }
539
545 vtkDataArray* points, vtkDataArray* selectedPoints, vtkIdTypeArray* selectedIds);
546
547protected:
549 ~vtkPlot() override;
550
554 vtkStdString GetNumber(double position, vtkAxis* axis);
555
557
561 virtual void TransformScreenToData(const vtkVector2f& in, vtkVector2f& out);
562 virtual void TransformDataToScreen(const vtkVector2f& in, vtkVector2f& out);
563 virtual void TransformScreenToData(double inX, double inY, double& outX, double& outY);
564 virtual void TransformDataToScreen(double inX, double inY, double& outX, double& outY);
566
570 virtual bool CacheRequiresUpdate();
571
576
581
586
592
598
603
608
613
619
625
630
635
640
645
651
657
660
665
667
668private:
669 vtkPlot(const vtkPlot&) = delete;
670 void operator=(const vtkPlot&) = delete;
671};
672
673VTK_ABI_NAMESPACE_END
674#endif // vtkPlot_h
Proxy object to connect input/output ports.
takes care of drawing 2D axes
Definition vtkAxis.h:170
provides a brush that fills shapes drawn by vtkContext2D.
Definition vtkBrush.h:89
Class for drawing 2D primitives to a graphical context.
base class for items that are part of a vtkContextScene.
Abstract class for 2D context mappers.
data structure to represent mouse events.
abstract superclass for arrays of numeric data
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition vtkIndent.h:108
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition vtkPen.h:78
Abstract class for 2D plots.
Definition vtkPlot.h:153
bool UseIndexForXSeries
Use the Y array index for the X value.
Definition vtkPlot.h:618
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:664
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:659
vtkSmartPointer< vtkStringArray > IndexedLabels
Holds Labels when they're auto-created.
Definition vtkPlot.h:612
void SetIndexedLabels(vtkStringArray *labels)
Set indexed labels for the plot.
virtual void SetInputData(vtkTable *table, const vtkStdString &xColumn, const vtkStdString &yColumn)
This is a convenience function to set the input table and the x, y column 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:639
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.
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)
vtkStdString GetLabel(vtkIdType index)
Get the label at the specified index.
bool LegendVisibility
Definition vtkPlot.h:666
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:502
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:634
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:597
virtual void GetBounds(double bounds[4])
Get the bounds for this plot as (Xmin, Xmax, Ymin, Ymax).
Definition vtkPlot.h:476
virtual void SetTooltipLabelFormat(const vtkStdString &label)
Sets/gets a printf-style string to build custom tooltip labels from.
virtual void SetXAxis(vtkAxis *axis)
Get/set the X axis associated with this plot.
virtual bool UpdateCache()
Update the internal cache.
Definition vtkPlot.h:538
vtkAxis * YAxis
The X axis associated with this plot.
Definition vtkPlot.h:644
vtkStdString TooltipDefaultLabelFormat
The default printf-style string to build custom tooltip labels from.
Definition vtkPlot.h:656
vtkSmartPointer< vtkPen > SelectionPen
This object stores the vtkPen that controls how the selected elements of the plot are drawn.
Definition vtkPlot.h:591
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 GetColor(unsigned char rgb[3])
Get the plot color as integer rgb values (comprised between 0 and 255)
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:650
bool Selectable
Whether plot points can be selected or not.
Definition vtkPlot.h:629
int TooltipNotation
Definition vtkPlot.h:658
vtkRectd GetShiftScale()
Get/set the origin shift and scaling factor used by the plot, this is normally 0.0 offset and 1....
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:624
vtkSmartPointer< vtkStringArray > Labels
Plot labels, used by legend.
Definition vtkPlot.h:602
void SetInputData(vtkTable *table, vtkIdType xColumn, vtkIdType yColumn)
This is a convenience function to set the input table and the x, y column for the plot.
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:575
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:607
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:585
virtual void SetColorF(double r, double g, double b)
Set the plot color with floating values (comprised between 0.0 and 1.0)
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:580
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:168
record modification and/or execution time
A type representing the union of many types.
Definition vtkVariant.h:162
#define VTK_DEPRECATED_IN_9_3_0(reason)
int vtkIdType
Definition vtkType.h:315
#define max(a, b)