VTK  9.3.0
vtkAffineRepresentation2D.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
32#ifndef vtkAffineRepresentation2D_h
33#define vtkAffineRepresentation2D_h
34
36#include "vtkInteractionWidgetsModule.h" // For export macro
37
38VTK_ABI_NAMESPACE_BEGIN
39class vtkProperty2D;
40class vtkActor2D;
42class vtkPolyData;
43class vtkPoints;
44class vtkCellArray;
45class vtkTextProperty;
47class vtkTextMapper;
48class vtkActor2D;
49
50class VTKINTERACTIONWIDGETS_EXPORT vtkAffineRepresentation2D : public vtkAffineRepresentation
51{
52public:
57
59
63 void PrintSelf(ostream& os, vtkIndent indent) override;
65
67
74 vtkSetClampMacro(BoxWidth, int, 10, VTK_INT_MAX);
75 vtkGetMacro(BoxWidth, int);
76 vtkSetClampMacro(CircleWidth, int, 10, VTK_INT_MAX);
77 vtkGetMacro(CircleWidth, int);
78 vtkSetClampMacro(AxesWidth, int, 10, VTK_INT_MAX);
79 vtkGetMacro(AxesWidth, int);
81
83
88 void SetOrigin(const double o[3]) { this->SetOrigin(o[0], o[1], o[2]); }
89 void SetOrigin(double ox, double oy, double oz);
90 vtkGetVector3Macro(Origin, double);
92
101 void GetTransform(vtkTransform* t) override;
102
104
110 vtkGetObjectMacro(Property, vtkProperty2D);
111 vtkGetObjectMacro(SelectedProperty, vtkProperty2D);
112 vtkGetObjectMacro(TextProperty, vtkTextProperty);
114
116
121 vtkSetMacro(DisplayText, vtkTypeBool);
122 vtkGetMacro(DisplayText, vtkTypeBool);
123 vtkBooleanMacro(DisplayText, vtkTypeBool);
125
127
134 void PlaceWidget(double bounds[6]) override;
135 void StartWidgetInteraction(double eventPos[2]) override;
136 void WidgetInteraction(double eventPos[2]) override;
137 void EndWidgetInteraction(double eventPos[2]) override;
138 int ComputeInteractionState(int X, int Y, int modify = 0) override;
139 void BuildRepresentation() override;
141
143
146 void ShallowCopy(vtkProp* prop) override;
149 int RenderOverlay(vtkViewport* viewport) override;
151
152protected:
155
156 // Methods to manipulate the cursor
157 void Translate(double eventPos[2]);
158 void Scale(double eventPos[2]);
159 void Rotate(double eventPos[2]);
160 void Shear(double eventPos[2]);
161 void Highlight(int highlight) override;
162 void UpdateText(const char* text, double eventPos[2]);
163
164 // The width of the widget in normalized viewport coordinates.
168
169 // Display text
171
172 // Internal variables for bookkeeping (in display coordinates unless noted)
176
177 // The internal transformation matrix
180 double Origin[4]; // the current origin in world coordinates
181 double DisplayOrigin[3]; // the current origin in display coordinates
182 double CurrentTranslation[3]; // translation this movement
183 double StartWorldPosition[4]; // Start event position converted to world
184 double StartAngle; // The starting angle (always positive)
186 double CurrentScale[2];
187 double CurrentShear[2];
188 void ApplyShear(); // helper method to apply shear to matrix
189
190 // Properties used to control the appearance of selected objects and
191 // the manipulator in general.
196 double Opacity;
198
199 // Support picking
200 double LastEventPosition[2];
201
202 // These are the classes that form the geometric representation -----------
203 // The label
206
207 // The outer box
213
219
220 // The circle
226
232
233 // The translation axes
238
239private:
241 void operator=(const vtkAffineRepresentation2D&) = delete;
242};
243
244VTK_ABI_NAMESPACE_END
245#endif
a actor that draws 2D data
Definition vtkActor2D.h:35
represent 2D affine transformations
void EndWidgetInteraction(double eventPos[2]) override
Subclasses of vtkAffineRepresentation2D must implement these methods.
void GetTransform(vtkTransform *t) override
Retrieve a linear transform characterizing the affine transformation generated by this widget.
void PlaceWidget(double bounds[6]) override
Subclasses of vtkAffineRepresentation2D must implement these methods.
void ReleaseGraphicsResources(vtkWindow *) override
Methods to make this class behave as a vtkProp.
void WidgetInteraction(double eventPos[2]) override
Subclasses of vtkAffineRepresentation2D must implement these methods.
void Shear(double eventPos[2])
int RenderOverlay(vtkViewport *viewport) override
Methods to make this class behave as a vtkProp.
void UpdateText(const char *text, double eventPos[2])
void Highlight(int highlight) override
void ShallowCopy(vtkProp *prop) override
Methods to make this class behave as a vtkProp.
void BuildRepresentation() override
Subclasses of vtkAffineRepresentation2D must implement these methods.
void StartWidgetInteraction(double eventPos[2]) override
Subclasses of vtkAffineRepresentation2D must implement these methods.
static vtkAffineRepresentation2D * New()
Instantiate this class.
void GetActors2D(vtkPropCollection *) override
Methods to make this class behave as a vtkProp.
void Translate(double eventPos[2])
void SetOrigin(const double o[3])
Specify the origin of the widget (in world coordinates).
int ComputeInteractionState(int X, int Y, int modify=0) override
Subclasses of vtkAffineRepresentation2D must implement these methods.
void SetSelectedProperty(vtkProperty2D *)
Set/Get the properties when unselected and selected.
void SetOrigin(double ox, double oy, double oz)
Specify the origin of the widget (in world coordinates).
void Scale(double eventPos[2])
void Rotate(double eventPos[2])
void SetTextProperty(vtkTextProperty *)
Set/Get the properties when unselected and selected.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instances of this class.
void SetProperty(vtkProperty2D *)
Set/Get the properties when unselected and selected.
~vtkAffineRepresentation2D() override
abstract class for representing affine transformation widgets
object to represent cell connectivity
a simple class to control print indentation
Definition vtkIndent.h:29
create a leader with optional label and arrows
represent and manipulate 3D points
Definition vtkPoints.h:29
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:80
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:43
represent surface properties of a 2D image
2D text annotation
represent text properties.
describes linear transformations via a 4x4 matrix
abstract specification for Viewports
Definition vtkViewport.h:45
window superclass for vtkRenderWindow
Definition vtkWindow.h:25
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_INT_MAX
Definition vtkType.h:144