VTK  9.0.2
vtkPointWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPointWidget.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 =========================================================================*/
73 #ifndef vtkPointWidget_h
74 #define vtkPointWidget_h
75 
76 #include "vtk3DWidget.h"
77 #include "vtkCursor3D.h" // Needed for faster access to the Cursor3D
78 #include "vtkInteractionWidgetsModule.h" // For export macro
79 
80 class vtkActor;
81 class vtkPolyDataMapper;
82 class vtkCellPicker;
83 class vtkPolyData;
84 class vtkProperty;
85 
86 class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
87 {
88 public:
92  static vtkPointWidget* New();
93 
94  vtkTypeMacro(vtkPointWidget, vtk3DWidget);
95  void PrintSelf(ostream& os, vtkIndent indent) override;
96 
98 
101  void SetEnabled(int) override;
102  void PlaceWidget(double bounds[6]) override;
103  void PlaceWidget() override { this->Superclass::PlaceWidget(); }
105  double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
106  {
107  this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
108  }
110 
116 
122  void SetPosition(double x, double y, double z) { this->Cursor3D->SetFocalPoint(x, y, z); }
123  void SetPosition(double x[3]) { this->SetPosition(x[0], x[1], x[2]); }
124  double* GetPosition() VTK_SIZEHINT(3) { return this->Cursor3D->GetFocalPoint(); }
125  void GetPosition(double xyz[3]) { this->Cursor3D->GetFocalPoint(xyz); }
126 
130  void SetOutline(int o) { this->Cursor3D->SetOutline(o); }
131  int GetOutline() { return this->Cursor3D->GetOutline(); }
132  void OutlineOn() { this->Cursor3D->OutlineOn(); }
133  void OutlineOff() { this->Cursor3D->OutlineOff(); }
134 
138  void SetXShadows(int o) { this->Cursor3D->SetXShadows(o); }
139  int GetXShadows() { return this->Cursor3D->GetXShadows(); }
140  void XShadowsOn() { this->Cursor3D->XShadowsOn(); }
141  void XShadowsOff() { this->Cursor3D->XShadowsOff(); }
142 
146  void SetYShadows(int o) { this->Cursor3D->SetYShadows(o); }
147  int GetYShadows() { return this->Cursor3D->GetYShadows(); }
148  void YShadowsOn() { this->Cursor3D->YShadowsOn(); }
149  void YShadowsOff() { this->Cursor3D->YShadowsOff(); }
150 
154  void SetZShadows(int o) { this->Cursor3D->SetZShadows(o); }
155  int GetZShadows() { return this->Cursor3D->GetZShadows(); }
156  void ZShadowsOn() { this->Cursor3D->ZShadowsOn(); }
157  void ZShadowsOff() { this->Cursor3D->ZShadowsOff(); }
158 
165  {
166  this->Cursor3D->SetTranslationMode(mode);
167  this->Cursor3D->Update();
168  }
169  int GetTranslationMode() { return this->Cursor3D->GetTranslationMode(); }
170  void TranslationModeOn() { this->SetTranslationMode(1); }
171  void TranslationModeOff() { this->SetTranslationMode(0); }
172 
174 
177  void AllOn()
178  {
179  this->OutlineOn();
180  this->XShadowsOn();
181  this->YShadowsOn();
182  this->ZShadowsOn();
183  }
184  void AllOff()
185  {
186  this->OutlineOff();
187  this->XShadowsOff();
188  this->YShadowsOff();
189  this->ZShadowsOff();
190  }
192 
194 
199  vtkGetObjectMacro(Property, vtkProperty);
200  vtkGetObjectMacro(SelectedProperty, vtkProperty);
202 
204 
210  vtkSetClampMacro(HotSpotSize, double, 0.0, 1.0);
211  vtkGetMacro(HotSpotSize, double);
213 
214 protected:
216  ~vtkPointWidget() override;
217 
218  // Manage the state of the widget
219  friend class vtkLineWidget;
220 
221  int State;
223  {
224  Start = 0,
228  Outside
229  };
230 
231  // Handles the events
232  static void ProcessEvents(
233  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
234 
235  // ProcessEvents() dispatches to these methods.
236  virtual void OnMouseMove();
237  virtual void OnLeftButtonDown();
238  virtual void OnLeftButtonUp();
239  virtual void OnMiddleButtonDown();
240  virtual void OnMiddleButtonUp();
241  virtual void OnRightButtonDown();
242  virtual void OnRightButtonUp();
243 
244  // the cursor3D
248  void Highlight(int highlight);
249 
250  // Do the picking
252 
253  // Register internal Pickers within PickingManager
254  void RegisterPickers() override;
255 
256  // Methods to manipulate the cursor
258  void Translate(double* p1, double* p2);
259  void Scale(double* p1, double* p2, int X, int Y);
260  void MoveFocus(double* p1, double* p2);
262 
263  // Properties used to control the appearance of selected objects and
264  // the manipulator in general.
268 
269  // The size of the hot spot.
270  double HotSpotSize;
271  int DetermineConstraintAxis(int constraint, double* x);
274 
275 private:
276  vtkPointWidget(const vtkPointWidget&) = delete;
277  void operator=(const vtkPointWidget&) = delete;
278 };
279 
280 #endif
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:71
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
a simple class to control print indentation
Definition: vtkIndent.h:34
3D widget for manipulating a line
Definition: vtkLineWidget.h:97
abstract base class for most VTK objects
Definition: vtkObject.h:63
position a point in 3D space
void CreateDefaultProperties()
void PlaceWidget(double bounds[6]) override
This method is used to initially place the widget.
virtual void OnMouseMove()
void GetPolyData(vtkPolyData *pd)
Grab the polydata (including points) that defines the point.
vtkPolyDataMapper * Mapper
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
void TranslationModeOn()
double * GetPosition()
void TranslationModeOff()
~vtkPointWidget() override
void Highlight(int highlight)
void SetOutline(int o)
Turn on/off the wireframe bounding box.
void SetZShadows(int o)
Turn on/off the wireframe z-shadows.
vtkCursor3D * Cursor3D
int DetermineConstraintAxis(int constraint, double *x)
virtual void OnRightButtonDown()
void SetTranslationMode(int mode)
If translation mode is on, as the widget is moved the bounding box, shadows, and cursor are all trans...
void SetXShadows(int o)
Turn on/off the wireframe x-shadows.
vtkActor * Actor
virtual void OnLeftButtonUp()
void GetPosition(double xyz[3])
void Translate(double *p1, double *p2)
static vtkPointWidget * New()
Instantiate this widget.
virtual void OnRightButtonUp()
void SetEnabled(int) override
Methods that satisfy the superclass' API.
void SetPosition(double x[3])
virtual void OnMiddleButtonUp()
int GetTranslationMode()
virtual void OnMiddleButtonDown()
void SetPosition(double x, double y, double z)
Set/Get the position of the point.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkProperty * SelectedProperty
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
void PlaceWidget() override
virtual void OnLeftButtonDown()
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
vtkProperty * Property
void SetYShadows(int o)
Turn on/off the wireframe y-shadows.
vtkCellPicker * CursorPicker
void AllOn()
Convenience methods to turn outline and shadows on and off.
void Scale(double *p1, double *p2, int X, int Y)
void MoveFocus(double *p1, double *p2)
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
represent surface properties of a geometric object
Definition: vtkProperty.h:62
@ mode
Definition: vtkX3D.h:253
#define VTK_SIZEHINT(...)