VTK  9.1.20211115
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 
34 class vtkCursor3D;
35 class vtkProperty;
36 class vtkActor;
37 class vtkPolyDataMapper;
38 class vtkCellPicker;
39 
40 class VTKINTERACTIONWIDGETS_EXPORT vtkPointHandleRepresentation3D : public vtkHandleRepresentation
41 {
42 public:
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 
228 protected:
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 
283 private:
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.
double * GetBounds() override
Methods to make this class properly act like a vtkWidgetRepresentation.
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.
static vtkPointHandleRepresentation3D * New()
Instantiate 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.
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
@ mode
Definition: vtkX3D.h:253
@ center
Definition: vtkX3D.h:236
@ size
Definition: vtkX3D.h:259
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SIZEHINT(...)