VTK  9.2.5
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 =========================================================================*/
89 #ifndef vtkPointWidget_h
90 #define vtkPointWidget_h
91 
92 #include "vtk3DWidget.h"
93 #include "vtkCursor3D.h" // Needed for faster access to the Cursor3D
94 #include "vtkInteractionWidgetsModule.h" // For export macro
95 
96 class vtkActor;
97 class vtkPolyDataMapper;
98 class vtkCellPicker;
99 class vtkPolyData;
100 class vtkProperty;
101 
102 class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
103 {
104 public:
108  static vtkPointWidget* New();
109 
110  vtkTypeMacro(vtkPointWidget, vtk3DWidget);
111  void PrintSelf(ostream& os, vtkIndent indent) override;
112 
114 
117  void SetEnabled(int) override;
118  void PlaceWidget(double bounds[6]) override;
119  void PlaceWidget() override { this->Superclass::PlaceWidget(); }
121  double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
122  {
123  this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
124  }
126 
132 
138  void SetPosition(double x, double y, double z) { this->Cursor3D->SetFocalPoint(x, y, z); }
139  void SetPosition(double x[3]) { this->SetPosition(x[0], x[1], x[2]); }
140  double* GetPosition() VTK_SIZEHINT(3) { return this->Cursor3D->GetFocalPoint(); }
141  void GetPosition(double xyz[3]) { this->Cursor3D->GetFocalPoint(xyz); }
142 
146  void SetOutline(int o) { this->Cursor3D->SetOutline(o); }
147  int GetOutline() { return this->Cursor3D->GetOutline(); }
148  void OutlineOn() { this->Cursor3D->OutlineOn(); }
149  void OutlineOff() { this->Cursor3D->OutlineOff(); }
150 
154  void SetXShadows(int o) { this->Cursor3D->SetXShadows(o); }
155  int GetXShadows() { return this->Cursor3D->GetXShadows(); }
156  void XShadowsOn() { this->Cursor3D->XShadowsOn(); }
157  void XShadowsOff() { this->Cursor3D->XShadowsOff(); }
158 
162  void SetYShadows(int o) { this->Cursor3D->SetYShadows(o); }
163  int GetYShadows() { return this->Cursor3D->GetYShadows(); }
164  void YShadowsOn() { this->Cursor3D->YShadowsOn(); }
165  void YShadowsOff() { this->Cursor3D->YShadowsOff(); }
166 
170  void SetZShadows(int o) { this->Cursor3D->SetZShadows(o); }
171  int GetZShadows() { return this->Cursor3D->GetZShadows(); }
172  void ZShadowsOn() { this->Cursor3D->ZShadowsOn(); }
173  void ZShadowsOff() { this->Cursor3D->ZShadowsOff(); }
174 
181  {
182  this->Cursor3D->SetTranslationMode(mode);
183  this->Cursor3D->Update();
184  }
185  int GetTranslationMode() { return this->Cursor3D->GetTranslationMode(); }
186  void TranslationModeOn() { this->SetTranslationMode(1); }
187  void TranslationModeOff() { this->SetTranslationMode(0); }
188 
190 
193  void AllOn()
194  {
195  this->OutlineOn();
196  this->XShadowsOn();
197  this->YShadowsOn();
198  this->ZShadowsOn();
199  }
200  void AllOff()
201  {
202  this->OutlineOff();
203  this->XShadowsOff();
204  this->YShadowsOff();
205  this->ZShadowsOff();
206  }
208 
210 
215  vtkGetObjectMacro(Property, vtkProperty);
216  vtkGetObjectMacro(SelectedProperty, vtkProperty);
218 
220 
226  vtkSetClampMacro(HotSpotSize, double, 0.0, 1.0);
227  vtkGetMacro(HotSpotSize, double);
229 
230 protected:
232  ~vtkPointWidget() override;
233 
234  // Manage the state of the widget
235  friend class vtkLineWidget;
236 
237  int State;
239  {
240  Start = 0,
244  Outside
245  };
246 
247  // Handles the events
248  static void ProcessEvents(
249  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
250 
251  // ProcessEvents() dispatches to these methods.
252  virtual void OnMouseMove();
253  virtual void OnLeftButtonDown();
254  virtual void OnLeftButtonUp();
255  virtual void OnMiddleButtonDown();
256  virtual void OnMiddleButtonUp();
257  virtual void OnRightButtonDown();
258  virtual void OnRightButtonUp();
259 
260  // the cursor3D
264  void Highlight(int highlight);
265 
266  // Do the picking
268 
269  // Register internal Pickers within PickingManager
270  void RegisterPickers() override;
271 
272  // Methods to manipulate the cursor
274  void Translate(double* p1, double* p2);
275  void Scale(double* p1, double* p2, int X, int Y);
276  void MoveFocus(double* p1, double* p2);
278 
279  // Properties used to control the appearance of selected objects and
280  // the manipulator in general.
284 
285  // The size of the hot spot.
286  double HotSpotSize;
287  int DetermineConstraintAxis(int constraint, double* x);
290 
291 private:
292  vtkPointWidget(const vtkPointWidget&) = delete;
293  void operator=(const vtkPointWidget&) = delete;
294 };
295 
296 #endif
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:71
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:161
ray-cast cell picker for all kinds of Prop3Ds
generate a 3D cursor representation
Definition: vtkCursor3D.h:59
a simple class to control print indentation
Definition: vtkIndent.h:119
3D widget for manipulating a line
abstract base class for most VTK objects
Definition: vtkObject.h:82
position a point in 3D space
void CreateDefaultProperties()
void PlaceWidget(double bounds[6]) override
Methods that satisfy the superclass' API.
virtual void OnMouseMove()
void AllOff()
Convenience methods to turn outline and shadows on and off.
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
Methods that satisfy the superclass' API.
virtual void OnLeftButtonDown()
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
Methods that satisfy the superclass' API.
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:200
represent surface properties of a geometric object
Definition: vtkProperty.h:177
@ mode
Definition: vtkX3D.h:253
#define VTK_SIZEHINT(...)