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
41 #ifndef vtkAffineRepresentation2D_h
42 #define vtkAffineRepresentation2D_h
43 
45 #include "vtkInteractionWidgetsModule.h" // For export macro
46 
47 VTK_ABI_NAMESPACE_BEGIN
48 class vtkProperty2D;
49 class vtkActor2D;
51 class vtkPolyData;
52 class vtkPoints;
53 class vtkCellArray;
54 class vtkTextProperty;
55 class vtkLeaderActor2D;
56 class vtkTextMapper;
57 class vtkActor2D;
58 
59 class VTKINTERACTIONWIDGETS_EXPORT vtkAffineRepresentation2D : public vtkAffineRepresentation
60 {
61 public:
66 
68 
72  void PrintSelf(ostream& os, vtkIndent indent) override;
74 
76 
83  vtkSetClampMacro(BoxWidth, int, 10, VTK_INT_MAX);
84  vtkGetMacro(BoxWidth, int);
85  vtkSetClampMacro(CircleWidth, int, 10, VTK_INT_MAX);
86  vtkGetMacro(CircleWidth, int);
87  vtkSetClampMacro(AxesWidth, int, 10, VTK_INT_MAX);
88  vtkGetMacro(AxesWidth, int);
90 
92 
97  void SetOrigin(const double o[3]) { this->SetOrigin(o[0], o[1], o[2]); }
98  void SetOrigin(double ox, double oy, double oz);
99  vtkGetVector3Macro(Origin, double);
101 
110  void GetTransform(vtkTransform* t) override;
111 
113 
119  vtkGetObjectMacro(Property, vtkProperty2D);
120  vtkGetObjectMacro(SelectedProperty, vtkProperty2D);
121  vtkGetObjectMacro(TextProperty, vtkTextProperty);
123 
125 
130  vtkSetMacro(DisplayText, vtkTypeBool);
131  vtkGetMacro(DisplayText, vtkTypeBool);
132  vtkBooleanMacro(DisplayText, vtkTypeBool);
134 
136 
143  void PlaceWidget(double bounds[6]) override;
144  void StartWidgetInteraction(double eventPos[2]) override;
145  void WidgetInteraction(double eventPos[2]) override;
146  void EndWidgetInteraction(double eventPos[2]) override;
147  int ComputeInteractionState(int X, int Y, int modify = 0) override;
148  void BuildRepresentation() override;
150 
152 
155  void ShallowCopy(vtkProp* prop) override;
158  int RenderOverlay(vtkViewport* viewport) override;
160 
161 protected:
164 
165  // Methods to manipulate the cursor
166  void Translate(double eventPos[2]);
167  void Scale(double eventPos[2]);
168  void Rotate(double eventPos[2]);
169  void Shear(double eventPos[2]);
170  void Highlight(int highlight) override;
171  void UpdateText(const char* text, double eventPos[2]);
172 
173  // The width of the widget in normalized viewport coordinates.
174  int BoxWidth;
177 
178  // Display text
180 
181  // Internal variables for bookkeeping (in display coordinates unless noted)
182  double CurrentWidth;
185 
186  // The internal transformation matrix
189  double Origin[4]; // the current origin in world coordinates
190  double DisplayOrigin[3]; // the current origin in display coordinates
191  double CurrentTranslation[3]; // translation this movement
192  double StartWorldPosition[4]; // Start event position converted to world
193  double StartAngle; // The starting angle (always positive)
194  double CurrentAngle;
195  double CurrentScale[2];
196  double CurrentShear[2];
197  void ApplyShear(); // helper method to apply shear to matrix
198 
199  // Properties used to control the appearance of selected objects and
200  // the manipulator in general.
205  double Opacity;
207 
208  // Support picking
209  double LastEventPosition[2];
210 
211  // These are the classes that form the geometric representation -----------
212  // The label
215 
216  // The outer box
222 
228 
229  // The circle
235 
241 
242  // The translation axes
247 
248 private:
250  void operator=(const vtkAffineRepresentation2D&) = delete;
251 };
252 
253 VTK_ABI_NAMESPACE_END
254 #endif
a actor that draws 2D data
Definition: vtkActor2D.h:44
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.
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).
static vtkAffineRepresentation2D * New()
Instantiate this class.
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
Definition: vtkCellArray.h:185
a simple class to control print indentation
Definition: vtkIndent.h:38
create a leader with optional label and arrows
represent and manipulate 3D points
Definition: vtkPoints.h:38
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:89
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:55
represent surface properties of a 2D image
Definition: vtkProperty2D.h:39
2D text annotation
Definition: vtkTextMapper.h:49
represent text properties.
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:59
abstract specification for Viewports
Definition: vtkViewport.h:54
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_INT_MAX
Definition: vtkType.h:144