VTK  9.0.2
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 
122  void AllOn()
123  {
124  this->OutlineOn();
125  this->XShadowsOn();
126  this->YShadowsOn();
127  this->ZShadowsOn();
128  }
129  void AllOff()
130  {
131  this->OutlineOff();
132  this->XShadowsOff();
133  this->YShadowsOff();
134  this->ZShadowsOff();
135  }
137 
139 
144  vtkGetObjectMacro(Property, vtkProperty);
145  vtkGetObjectMacro(SelectedProperty, vtkProperty);
147 
149 
155  vtkSetClampMacro(HotSpotSize, double, 0.0, 1.0);
156  vtkGetMacro(HotSpotSize, double);
158 
162  void SetHandleSize(double size) override;
163 
165 
168  double* GetBounds() VTK_SIZEHINT(6) override;
169  void BuildRepresentation() override;
170  void StartWidgetInteraction(double eventPos[2]) override;
171  void WidgetInteraction(double eventPos[2]) override;
172  int ComputeInteractionState(int X, int Y, int modify = 0) override;
173  void PlaceWidget(double bounds[6]) override;
174  void StartComplexInteraction(vtkRenderWindowInteractor* iren, vtkAbstractWidget* widget,
175  unsigned long event, void* calldata) override;
176  void ComplexInteraction(vtkRenderWindowInteractor* iren, vtkAbstractWidget* widget,
177  unsigned long event, void* calldata) override;
178  int ComputeComplexInteractionState(vtkRenderWindowInteractor* iren, vtkAbstractWidget* widget,
179  unsigned long event, void* calldata, int modify = 0) override;
181 
183 
186  void ShallowCopy(vtkProp* prop) override;
187  void DeepCopy(vtkProp* prop) override;
188  void GetActors(vtkPropCollection*) override;
189  void ReleaseGraphicsResources(vtkWindow*) override;
190  int RenderOpaqueGeometry(vtkViewport* viewport) override;
191  int RenderTranslucentPolygonalGeometry(vtkViewport* viewport) override;
192  vtkTypeBool HasTranslucentPolygonalGeometry() override;
194 
195  void Highlight(int highlight) override;
196 
198 
209  vtkSetMacro(SmoothMotion, vtkTypeBool);
210  vtkGetMacro(SmoothMotion, vtkTypeBool);
211  vtkBooleanMacro(SmoothMotion, vtkTypeBool);
213 
214  /*
215  * Register internal Pickers within PickingManager
216  */
217  void RegisterPickers() override;
218 
225  void SetVisibility(vtkTypeBool visible) override;
226 
227 protected:
230 
231  // the cursor3D
232  vtkActor* Actor;
234  vtkCursor3D* Cursor3D;
235 
236  // Do the picking
237  vtkCellPicker* CursorPicker;
238  double LastPickPosition[3];
239  double LastEventPosition[3];
240 
241  // Methods to manipulate the cursor
242  int ConstraintAxis;
243  virtual void Translate(const double* p1, const double* p2) override;
244  void Scale(const double* p1, const double* p2, const double eventPos[2]);
245  void MoveFocus(const double* p1, const double* p2);
246  void SizeBounds();
247 
259  void MoveFocusRequest(
260  const double* p1, const double* p2, const double currPos[2], double center[3]);
261 
262  // Properties used to control the appearance of selected objects and
263  // the manipulator in general.
264  vtkProperty* Property;
265  vtkProperty* SelectedProperty;
266  void CreateDefaultProperties();
267 
268  // The size of the hot spot.
269  double HotSpotSize;
270  int DetermineConstraintAxis(int constraint, double* x, double* startPoint);
271  int WaitingForMotion;
272  int WaitCount;
273 
274  // Current handle sized (may reflect scaling)
275  double CurrentHandleSize;
276 
277  // Control how translation works
278  vtkTypeBool TranslationMode;
279 
280  vtkTypeBool SmoothMotion;
281 
282 private:
284  void operator=(const vtkPointHandleRepresentation3D&) = delete;
285 };
286 
287 #endif
define the API for widget / widget representation
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:46
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:67
generate a 3D cursor representation
Definition: vtkCursor3D.h:37
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:34
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 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
Methods invoked by print to print information about the object including superclasses.
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 *)
void SetDisplayPosition(double p[3]) override
Handles usually have their coordinates set in display coordinates (generally by an associated widget)...
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:54
represent surface properties of a geometric object
Definition: vtkProperty.h:62
platform-independent render window interaction including picking and frame rate control.
abstract specification for Viewports
Definition: vtkViewport.h:45
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
@ mode
Definition: vtkX3D.h:253
@ center
Definition: vtkX3D.h:236
@ size
Definition: vtkX3D.h:259
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SIZEHINT(...)