VTK  9.0.1
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 
115  void GetPolyData(vtkPolyData* pd);
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:
215  vtkPointWidget();
216  ~vtkPointWidget() override;
217 
218  // Manage the state of the widget
219  friend class vtkLineWidget;
220 
221  int State;
223  {
224  Start = 0,
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
void OnRightButtonDown()
vtkProperty * SelectedProperty
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
void TranslationModeOff()
abstract base class for most VTK objects
Definition: vtkObject.h:62
void OnLeftButtonDown()
represent surface properties of a geometric object
Definition: vtkProperty.h:61
vtkActor * Actor
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Handles the char widget activation event.
void OnMiddleButtonUp()
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
int GetTranslationMode()
void OnMiddleButtonDown()
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetPosition(double x, double y, double z)
Set/Get the position of the point.
virtual void RegisterPickers()
Register internal Pickers in the Picking Manager.
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
Methods that satisfy the superclass' API.
vtkCursor3D * Cursor3D
void CreateDefaultProperties()
vtkProperty * Property
void GetPosition(double xyz[3])
a simple class to control print indentation
Definition: vtkIndent.h:33
void AllOn()
Convenience methods to turn outline and shadows on and off.
3D widget for manipulating a line
Definition: vtkLineWidget.h:96
#define VTK_SIZEHINT(...)
void AllOff()
Convenience methods to turn outline and shadows on and off.
void SetYShadows(int o)
Turn on/off the wireframe y-shadows.
double * GetPosition()
void SetZShadows(int o)
Turn on/off the wireframe z-shadows.
void SetXShadows(int o)
Turn on/off the wireframe x-shadows.
map vtkPolyData to graphics primitives
position a point in 3D space
vtkPolyDataMapper * Mapper
void SetTranslationMode(int mode)
If translation mode is on, as the widget is moved the bounding box, shadows, and cursor are all trans...
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:66
void TranslationModeOn()
void SetPosition(double x[3])
generate a 3D cursor representation
Definition: vtkCursor3D.h:36
void PlaceWidget() override
Methods that satisfy the superclass' API.
void SetOutline(int o)
Turn on/off the wireframe bounding box.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
void OnRightButtonUp()
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:70
virtual void PlaceWidget()
This method is used to initially place the widget.
void OnLeftButtonUp()
virtual void OnMouseMove()
vtkCellPicker * CursorPicker
void Scale(double *p1, double *p2, int X, int Y)