VTK  9.1.0
vtkPointHandleRepresentation3D.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkPointHandleRepresentation3D.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=========================================================================*/
27#ifndef vtkPointHandleRepresentation3D_h
28#define vtkPointHandleRepresentation3D_h
29
30#include "vtkCursor3D.h" // Needed for delegation to cursor3D
32#include "vtkInteractionWidgetsModule.h" // For export macro
33
34class vtkCursor3D;
35class vtkProperty;
36class vtkActor;
38class vtkCellPicker;
39
40class VTKINTERACTIONWIDGETS_EXPORT vtkPointHandleRepresentation3D : public vtkHandleRepresentation
41{
42public:
47
49
53 void PrintSelf(ostream& os, vtkIndent indent) override;
55
57
59
66 void SetWorldPosition(double p[3]) override;
67 void SetDisplayPosition(double p[3]) override;
69
73 void SetOutline(int o) { this->Cursor3D->SetOutline(o); }
74 int GetOutline() { return this->Cursor3D->GetOutline(); }
75 void OutlineOn() { this->Cursor3D->OutlineOn(); }
76 void OutlineOff() { this->Cursor3D->OutlineOff(); }
77
81 void SetXShadows(int o) { this->Cursor3D->SetXShadows(o); }
82 int GetXShadows() { return this->Cursor3D->GetXShadows(); }
83 void XShadowsOn() { this->Cursor3D->XShadowsOn(); }
84 void XShadowsOff() { this->Cursor3D->XShadowsOff(); }
85
89 void SetYShadows(int o) { this->Cursor3D->SetYShadows(o); }
90 int GetYShadows() { return this->Cursor3D->GetYShadows(); }
91 void YShadowsOn() { this->Cursor3D->YShadowsOn(); }
92 void YShadowsOff() { this->Cursor3D->YShadowsOff(); }
93
97 void SetZShadows(int o) { this->Cursor3D->SetZShadows(o); }
98 int GetZShadows() { return this->Cursor3D->GetZShadows(); }
99 void ZShadowsOn() { this->Cursor3D->ZShadowsOn(); }
100 void ZShadowsOff() { this->Cursor3D->ZShadowsOff(); }
101
103
115 vtkGetMacro(TranslationMode, vtkTypeBool);
116 vtkBooleanMacro(TranslationMode, vtkTypeBool);
118
120
123 void AllOn()
124 {
125 this->OutlineOn();
126 this->XShadowsOn();
127 this->YShadowsOn();
128 this->ZShadowsOn();
129 }
130 void AllOff()
131 {
132 this->OutlineOff();
133 this->XShadowsOff();
134 this->YShadowsOff();
135 this->ZShadowsOff();
136 }
138
140
145 vtkGetObjectMacro(Property, vtkProperty);
146 vtkGetObjectMacro(SelectedProperty, vtkProperty);
148
150
156 vtkSetClampMacro(HotSpotSize, double, 0.0, 1.0);
157 vtkGetMacro(HotSpotSize, double);
159
163 void SetHandleSize(double size) override;
164
166
169 double* GetBounds() VTK_SIZEHINT(6) override;
170 void BuildRepresentation() override;
171 void StartWidgetInteraction(double eventPos[2]) override;
172 void WidgetInteraction(double eventPos[2]) override;
173 int ComputeInteractionState(int X, int Y, int modify = 0) override;
174 void PlaceWidget(double bounds[6]) override;
175 void StartComplexInteraction(vtkRenderWindowInteractor* iren, vtkAbstractWidget* widget,
176 unsigned long event, void* calldata) override;
177 void ComplexInteraction(vtkRenderWindowInteractor* iren, vtkAbstractWidget* widget,
178 unsigned long event, void* calldata) override;
179 int ComputeComplexInteractionState(vtkRenderWindowInteractor* iren, vtkAbstractWidget* widget,
180 unsigned long event, void* calldata, int modify = 0) override;
182
184
187 void ShallowCopy(vtkProp* prop) override;
188 void DeepCopy(vtkProp* prop) override;
189 void GetActors(vtkPropCollection*) override;
190 void ReleaseGraphicsResources(vtkWindow*) override;
191 int RenderOpaqueGeometry(vtkViewport* viewport) override;
192 int RenderTranslucentPolygonalGeometry(vtkViewport* viewport) override;
193 vtkTypeBool HasTranslucentPolygonalGeometry() override;
195
196 void Highlight(int highlight) override;
197
199
210 vtkSetMacro(SmoothMotion, vtkTypeBool);
211 vtkGetMacro(SmoothMotion, vtkTypeBool);
212 vtkBooleanMacro(SmoothMotion, vtkTypeBool);
214
215 /*
216 * Register internal Pickers within PickingManager
217 */
218 void RegisterPickers() override;
219
226 void SetVisibility(vtkTypeBool visible) override;
227
228protected:
231
232 // the cursor3D
233 vtkActor* Actor;
235 vtkCursor3D* Cursor3D;
236
237 // Do the picking
238 vtkCellPicker* CursorPicker;
239 double LastPickPosition[3];
240 double LastEventPosition[3];
241
242 // Methods to manipulate the cursor
243 int ConstraintAxis;
244 void Translate(const double* p1, const double* p2) override;
245 void Scale(const double* p1, const double* p2, const double eventPos[2]);
246 void MoveFocus(const double* p1, const double* p2);
247 void SizeBounds();
248
260 void MoveFocusRequest(
261 const double* p1, const double* p2, const double currPos[2], double center[3]);
262
263 // Properties used to control the appearance of selected objects and
264 // the manipulator in general.
265 vtkProperty* Property;
266 vtkProperty* SelectedProperty;
267 void CreateDefaultProperties();
268
269 // The size of the hot spot.
270 double HotSpotSize;
271 int DetermineConstraintAxis(int constraint, double* x, double* startPoint);
272 int WaitingForMotion;
273 int WaitCount;
274
275 // Current handle sized (may reflect scaling)
276 double CurrentHandleSize;
277
278 // Control how translation works
279 vtkTypeBool TranslationMode;
280
281 vtkTypeBool SmoothMotion;
282
283private:
285 void operator=(const vtkPointHandleRepresentation3D&) = delete;
286};
287
288#endif
define the API for widget / widget representation
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:96
generate a 3D cursor representation
Definition: vtkCursor3D.h:56
abstract class for representing widget handles
virtual void Translate(const double *p1, const double *p2)
Translates world position by vector p1p2 projected on the constraint axis if any.
a simple class to control print indentation
Definition: vtkIndent.h:113
represent the position of a point in 3D space
void AllOn()
Convenience methods to turn outline and shadows on and off.
void SetHandleSize(double size) override
Overload the superclasses SetHandleSize() method to update internal variables.
void AllOff()
Convenience methods to turn outline and shadows on and off.
void SetYShadows(int o)
Turn on/off the wireframe y-shadows.
void SetOutline(int o)
Turn on/off the wireframe bounding box.
void SetProperty(vtkProperty *)
Set/Get the handle properties when unselected and selected.
void SetZShadows(int o)
Turn on/off the wireframe z-shadows.
void SetXShadows(int o)
Turn on/off the wireframe x-shadows.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instances of this class.
void SetTranslationMode(vtkTypeBool mode)
If translation mode is on, as the widget is moved the bounding box, shadows, and cursor are all trans...
void SetSelectedProperty(vtkProperty *)
Set/Get the handle properties when unselected and selected.
void SetDisplayPosition(double p[3]) override
Set the position of the point in world and display coordinates.
static vtkPointHandleRepresentation3D * New()
Instantiate this class.
double * GetBounds() override
Methods to make this class properly act like a vtkWidgetRepresentation.
void SetWorldPosition(double p[3]) override
Set the position of the point in world and display coordinates.
map vtkPolyData to graphics primitives
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:76
represent surface properties of a geometric object
Definition: vtkProperty.h:171
platform-independent render window interaction including picking and frame rate control.
abstract specification for Viewports
Definition: vtkViewport.h:47
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SIZEHINT(...)