VTK  9.1.0
vtkAffineRepresentation2D.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkAffineRepresentation2D.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
50#ifndef vtkAffineRepresentation2D_h
51#define vtkAffineRepresentation2D_h
52
54#include "vtkInteractionWidgetsModule.h" // For export macro
55
56class vtkProperty2D;
57class vtkActor2D;
59class vtkPolyData;
60class vtkPoints;
61class vtkCellArray;
62class vtkTextProperty;
64class vtkTextMapper;
65class vtkActor2D;
66
67class VTKINTERACTIONWIDGETS_EXPORT vtkAffineRepresentation2D : public vtkAffineRepresentation
68{
69public:
74
76
80 void PrintSelf(ostream& os, vtkIndent indent) override;
82
84
91 vtkSetClampMacro(BoxWidth, int, 10, VTK_INT_MAX);
92 vtkGetMacro(BoxWidth, int);
93 vtkSetClampMacro(CircleWidth, int, 10, VTK_INT_MAX);
94 vtkGetMacro(CircleWidth, int);
95 vtkSetClampMacro(AxesWidth, int, 10, VTK_INT_MAX);
96 vtkGetMacro(AxesWidth, int);
98
100
105 void SetOrigin(const double o[3]) { this->SetOrigin(o[0], o[1], o[2]); }
106 void SetOrigin(double ox, double oy, double oz);
107 vtkGetVector3Macro(Origin, double);
109
118 void GetTransform(vtkTransform* t) override;
119
121
127 vtkGetObjectMacro(Property, vtkProperty2D);
128 vtkGetObjectMacro(SelectedProperty, vtkProperty2D);
129 vtkGetObjectMacro(TextProperty, vtkTextProperty);
131
133
138 vtkSetMacro(DisplayText, vtkTypeBool);
139 vtkGetMacro(DisplayText, vtkTypeBool);
140 vtkBooleanMacro(DisplayText, vtkTypeBool);
142
144
151 void PlaceWidget(double bounds[6]) override;
152 void StartWidgetInteraction(double eventPos[2]) override;
153 void WidgetInteraction(double eventPos[2]) override;
154 void EndWidgetInteraction(double eventPos[2]) override;
155 int ComputeInteractionState(int X, int Y, int modify = 0) override;
156 void BuildRepresentation() override;
158
160
163 void ShallowCopy(vtkProp* prop) override;
166 int RenderOverlay(vtkViewport* viewport) override;
168
169protected:
172
173 // Methods to manipulate the cursor
174 void Translate(double eventPos[2]);
175 void Scale(double eventPos[2]);
176 void Rotate(double eventPos[2]);
177 void Shear(double eventPos[2]);
178 void Highlight(int highlight) override;
179 void UpdateText(const char* text, double eventPos[2]);
180
181 // The width of the widget in normalized viewport coordinates.
185
186 // Display text
188
189 // Internal variables for bookkeeping (in display coordinates unless noted)
193
194 // The internal transformation matrix
197 double Origin[4]; // the current origin in world coordinates
198 double DisplayOrigin[3]; // the current origin in display coordinates
199 double CurrentTranslation[3]; // translation this movement
200 double StartWorldPosition[4]; // Start event position converted to world
201 double StartAngle; // The starting angle (always positive)
203 double CurrentScale[2];
204 double CurrentShear[2];
205 void ApplyShear(); // helper method to apply shear to matrix
206
207 // Properties used to control the appearance of selected objects and
208 // the manipulator in general.
213 double Opacity;
215
216 // Support picking
217 double LastEventPosition[2];
218
219 // These are the classes that form the geometric representation -----------
220 // The label
223
224 // The outer box
230
236
237 // The circle
243
249
250 // The translation axes
255
256private:
258 void operator=(const vtkAffineRepresentation2D&) = delete;
259};
260
261#endif
a actor that draws 2D data
Definition: vtkActor2D.h:49
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
Definition: vtkCellArray.h:190
a simple class to control print indentation
Definition: vtkIndent.h:43
create a leader with optional label and arrows
represent and manipulate 3D points
Definition: vtkPoints.h:43
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:95
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:57
represent surface properties of a 2D image
Definition: vtkProperty2D.h:47
2D text annotation
Definition: vtkTextMapper.h:57
represent text properties.
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:64
abstract specification for Viewports
Definition: vtkViewport.h:56
window superclass for vtkRenderWindow
Definition: vtkWindow.h:45
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_INT_MAX
Definition: vtkType.h:155