28 #ifndef vtkControlPointsItem_h
29 #define vtkControlPointsItem_h
31 #include "vtkChartsCoreModule.h"
39 class vtkControlPointsAddPointItem;
74 vtkSetVector4Macro(UserBounds,
double);
75 vtkGetVector4Macro(UserBounds,
double);
84 vtkSetVector4Macro(ValidBounds,
double);
85 vtkGetVector4Macro(ValidBounds,
double);
93 vtkGetMacro(ScreenPointRadius,
float);
94 vtkSetMacro(ScreenPointRadius,
float);
192 vtkGetMacro(StrokeMode,
bool);
202 vtkSetMacro(SwitchPointsMode,
bool);
203 vtkGetMacro(SwitchPointsMode,
bool);
211 vtkSetMacro(EndPointsXMovable,
bool);
212 vtkGetMacro(EndPointsXMovable,
bool);
213 vtkSetMacro(EndPointsYMovable,
bool);
214 vtkGetMacro(EndPointsYMovable,
bool);
223 vtkSetMacro(EndPointsRemovable,
bool);
224 vtkGetMacro(EndPointsRemovable,
bool);
232 vtkSetMacro(ShowLabels,
bool);
233 vtkGetMacro(ShowLabels,
bool);
240 vtkSetStringMacro(LabelFormat);
241 vtkGetStringMacro(LabelFormat);
267 inline void RemoveCurrentPoint();
336 vtkGetObjectMacro(SelectedPointPen,
vtkPen);
354 vtkGetMacro(UseAddPointItem,
bool);
355 vtkSetMacro(UseAddPointItem,
bool);
356 vtkBooleanMacro(UseAddPointItem,
bool);
396 virtual void emitEvent(
unsigned long event,
void* params =
nullptr) = 0;
399 vtkObject* sender,
unsigned long event,
void* receiver,
void* params);
441 inline vtkVector2f GetSelectionCenterOfMass()
const;
445 virtual void EditPoint(
float vtkNotUsed(tX),
float vtkNotUsed(tY));
482 double UserBounds[4];
483 double ValidBounds[4];
507 void ComputeBounds();
511 bool UseAddPointItem =
false;
provides a brush that fills shapes drawn by vtkContext2D.
supports function callbacks
Class for drawing 2D primitives to a graphical context.
data structure to represent key events.
data structure to represent mouse events.
Abstract class for control points items.
void SetCurrentPoint(vtkIdType index)
Sets the current point selected.
bool PointAboutToBeDeleted
virtual vtkIdType RemovePoint(double *pos)=0
Remove a point of the function.
virtual void DrawPoint(vtkContext2D *painter, vtkIdType index)
bool MouseButtonReleaseEvent(const vtkContextMouseEvent &mouse) override
Mouse button release event.
static void CallComputePoints(vtkObject *sender, unsigned long event, void *receiver, void *params)
void SpreadPoints(float factor, bool dontSpreadFirstAndLast=false)
Utility function to spread all the control points of a given factor If dontSpreadFirstAndLast is true...
vtkBrush * SelectedPointBrush
bool IsEndPointPicked()
Return true if any of the end points is current point or part of the selection.
~vtkControlPointsItem() override
vtkCallbackCommand * Callback
bool MouseDoubleClickEvent(const vtkContextMouseEvent &mouse) override
Mouse button double click event.
virtual void ComputeBounds(double *bounds)
Compute the bounds for this item.
void DeselectPoint(double *currentPoint)
Utility function that unselects a point providing its coordinates.
virtual void GetControlPoint(vtkIdType index, double *point) const =0
Returns the x and y coordinates as well as the midpoint and sharpness of the control point correspond...
vtkIdType GetCurrentPoint() const
Returns the current point ID selected or -1 if there is no point current.
bool Paint(vtkContext2D *painter) override
Paint the points with a fixed size (cosmetic) which doesn't depend on the scene zoom factor.
void AddPointId(vtkIdType addedPointId)
bool MouseButtonPressEvent(const vtkContextMouseEvent &mouse) override
Mouse and key events.
void ToggleSelectPoint(double *currentPoint)
Utility function that toggles the selection a point providing its coordinates.
void ToggleSelectPoint(vtkIdType pointId)
Toggle the selection of a point by its ID.
virtual void SetControlPoint(vtkIdType index, double *point)=0
Sets the x and y coordinates as well as the midpoint and sharpness of the control point corresponding...
bool PointAboutToBeToggled
void MovePoints(const vtkVector2f &translation, bool dontMoveFirstAndLast=false)
Utility function to move all the control points of the given translation If dontMoveFirstAndLast is t...
void StartInteractionIfNotStarted()
void ResetBounds()
Recompute the bounds next time they are requested.
bool IsPointRemovable(vtkIdType pointId)
Return true if the point is removable.
bool SelectPoints(const vtkVector2f &min, const vtkVector2f &max) override
Select all points in the specified rectangle.
virtual void ComputePoints()
Must be reimplemented by subclasses to calculate the points to draw.
virtual bool GetEndPointsMovable()
vtkIdType RemovePoint(vtkIdType pointId)
Remove a point give its id.
bool KeyPressEvent(const vtkContextKeyEvent &key) override
Key press event.
void GetBounds(double bounds[4]) override
Bounds of the item, typically the bound of all the control points except if custom bounds have been s...
vtkVector2f GetSelectionCenterOfMass() const
void MoveCurrentPoint(const vtkVector2f &translation)
void SpreadPoints(float factor, vtkIdTypeArray *pointIds)
Spread the points referred by pointIds If factor > 0, points are moved away from each other.
virtual vtkIdType AddPoint(double *newPos)=0
Add a point to the function.
virtual void emitEvent(unsigned long event, void *params=nullptr)=0
vtkIdType FindPoint(double *pos)
Returns the vtkIdType of the point given its coordinates and a tolerance based on the screen point si...
void RemoveCurrentPoint()
Remove the current point.
void SelectPoint(double *currentPoint)
Utility function that selects a point providing its coordinates.
bool Hit(const vtkContextMouseEvent &mouse) override
Returns true if the supplied x, y are within the bounds or on a control point.
vtkPen * SelectedPointPen
vtkTransform2D * Transform
void Stroke(const vtkVector2f &newPos)
virtual vtkMTimeType GetControlPointsMTime()=0
void SelectAllPoints()
Select all the points.
vtkIdType SetPointPos(vtkIdType point, const vtkVector2f &newPos)
void DrawUnselectedPoints(vtkContext2D *painter)
Internal function that paints a collection of points and optionally excludes some.
bool EnforceValidFunction
bool IsOverPoint(double *pos, vtkIdType pointId)
Returns true if pos is above the pointId point, false otherwise.
vtkIdType MovePoint(vtkIdType point, const vtkVector2f &translation)
void DeselectAllPoints()
Unselect all the previously selected points.
void DrawSelectedPoints(vtkContext2D *painter)
virtual vtkIdType GetNumberOfPoints() const =0
Returns the total number of points.
vtkVector2f GetCenterOfMass(vtkIdTypeArray *pointIDs) const
bool ClampValidDataPos(double pos[2])
Clamp the given 2D pos into the bounds of the function.
void SetCurrentPointPos(const vtkVector2f &newPos)
vtkPlot * GetAddPointItem()
Item dedicated to add point, to be added below all other items.
void SelectPoint(vtkIdType pointId)
Select a point by its ID.
bool KeyReleaseEvent(const vtkContextKeyEvent &key) override
Key release event.
vtkIdType GetControlPointId(double *pos)
Returns the id of the control point exactly matching pos, -1 if not found.
void MovePoints(const vtkVector2f &translation, vtkIdTypeArray *pointIds)
Move the points referred by pointIds by a given translation.
int GetInteractionsCount() const
vtkIdType GetNumberOfSelectedPoints() const
Return the number of selected points.
virtual vtkStdString GetControlPointLabel(vtkIdType index)
Generate label for a control point.
void GetControlPointsIds(vtkIdTypeArray *ids, bool excludeFirstAndLast=false) const
Utility function that returns an array of all the control points IDs Typically: [0,...
void DeselectPoint(vtkIdType pointId)
Unselect a point by its ID.
bool ClampValidScreenPos(double pos[2])
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool MouseMoveEvent(const vtkContextMouseEvent &mouse) override
Mouse move event.
virtual void EditPoint(float vtkNotUsed(tX), float vtkNotUsed(tY))
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
abstract base class for most VTK objects
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
a vtkContextItem that draws handles around a point of a piecewise function
Abstract class for 2D plots.
vtkIdTypeArray * Selection
Selected indices for the table the plot is rendering.
represent and manipulate 2D points
Wrapper around std::string to keep symbols short.
vtkTypeUInt32 vtkMTimeType