VTK  9.1.0
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 =========================================================================*/
83 #ifndef vtkPointWidget_h
84 #define vtkPointWidget_h
85 
86 #include "vtk3DWidget.h"
87 #include "vtkCursor3D.h" // Needed for faster access to the Cursor3D
88 #include "vtkInteractionWidgetsModule.h" // For export macro
89 
90 class vtkActor;
91 class vtkPolyDataMapper;
92 class vtkCellPicker;
93 class vtkPolyData;
94 class vtkProperty;
95 
96 class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
97 {
98 public:
102  static vtkPointWidget* New();
103 
104  vtkTypeMacro(vtkPointWidget, vtk3DWidget);
105  void PrintSelf(ostream& os, vtkIndent indent) override;
106 
108 
111  void SetEnabled(int) override;
112  void PlaceWidget(double bounds[6]) override;
113  void PlaceWidget() override { this->Superclass::PlaceWidget(); }
115  double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
116  {
117  this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
118  }
120 
126 
132  void SetPosition(double x, double y, double z) { this->Cursor3D->SetFocalPoint(x, y, z); }
133  void SetPosition(double x[3]) { this->SetPosition(x[0], x[1], x[2]); }
134  double* GetPosition() VTK_SIZEHINT(3) { return this->Cursor3D->GetFocalPoint(); }
135  void GetPosition(double xyz[3]) { this->Cursor3D->GetFocalPoint(xyz); }
136 
140  void SetOutline(int o) { this->Cursor3D->SetOutline(o); }
141  int GetOutline() { return this->Cursor3D->GetOutline(); }
142  void OutlineOn() { this->Cursor3D->OutlineOn(); }
143  void OutlineOff() { this->Cursor3D->OutlineOff(); }
144 
148  void SetXShadows(int o) { this->Cursor3D->SetXShadows(o); }
149  int GetXShadows() { return this->Cursor3D->GetXShadows(); }
150  void XShadowsOn() { this->Cursor3D->XShadowsOn(); }
151  void XShadowsOff() { this->Cursor3D->XShadowsOff(); }
152 
156  void SetYShadows(int o) { this->Cursor3D->SetYShadows(o); }
157  int GetYShadows() { return this->Cursor3D->GetYShadows(); }
158  void YShadowsOn() { this->Cursor3D->YShadowsOn(); }
159  void YShadowsOff() { this->Cursor3D->YShadowsOff(); }
160 
164  void SetZShadows(int o) { this->Cursor3D->SetZShadows(o); }
165  int GetZShadows() { return this->Cursor3D->GetZShadows(); }
166  void ZShadowsOn() { this->Cursor3D->ZShadowsOn(); }
167  void ZShadowsOff() { this->Cursor3D->ZShadowsOff(); }
168 
175  {
176  this->Cursor3D->SetTranslationMode(mode);
177  this->Cursor3D->Update();
178  }
179  int GetTranslationMode() { return this->Cursor3D->GetTranslationMode(); }
180  void TranslationModeOn() { this->SetTranslationMode(1); }
181  void TranslationModeOff() { this->SetTranslationMode(0); }
182 
184 
187  void AllOn()
188  {
189  this->OutlineOn();
190  this->XShadowsOn();
191  this->YShadowsOn();
192  this->ZShadowsOn();
193  }
194  void AllOff()
195  {
196  this->OutlineOff();
197  this->XShadowsOff();
198  this->YShadowsOff();
199  this->ZShadowsOff();
200  }
202 
204 
209  vtkGetObjectMacro(Property, vtkProperty);
210  vtkGetObjectMacro(SelectedProperty, vtkProperty);
212 
214 
220  vtkSetClampMacro(HotSpotSize, double, 0.0, 1.0);
221  vtkGetMacro(HotSpotSize, double);
223 
224 protected:
226  ~vtkPointWidget() override;
227 
228  // Manage the state of the widget
229  friend class vtkLineWidget;
230 
231  int State;
233  {
234  Start = 0,
238  Outside
239  };
240 
241  // Handles the events
242  static void ProcessEvents(
243  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
244 
245  // ProcessEvents() dispatches to these methods.
246  virtual void OnMouseMove();
247  virtual void OnLeftButtonDown();
248  virtual void OnLeftButtonUp();
249  virtual void OnMiddleButtonDown();
250  virtual void OnMiddleButtonUp();
251  virtual void OnRightButtonDown();
252  virtual void OnRightButtonUp();
253 
254  // the cursor3D
258  void Highlight(int highlight);
259 
260  // Do the picking
262 
263  // Register internal Pickers within PickingManager
264  void RegisterPickers() override;
265 
266  // Methods to manipulate the cursor
268  void Translate(double* p1, double* p2);
269  void Scale(double* p1, double* p2, int X, int Y);
270  void MoveFocus(double* p1, double* p2);
272 
273  // Properties used to control the appearance of selected objects and
274  // the manipulator in general.
278 
279  // The size of the hot spot.
280  double HotSpotSize;
281  int DetermineConstraintAxis(int constraint, double* x);
284 
285 private:
286  vtkPointWidget(const vtkPointWidget&) = delete;
287  void operator=(const vtkPointWidget&) = delete;
288 };
289 
290 #endif
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:68
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
a simple class to control print indentation
Definition: vtkIndent.h:113
3D widget for manipulating a line
abstract base class for most VTK objects
Definition: vtkObject.h:73
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:195
represent surface properties of a geometric object
Definition: vtkProperty.h:171
@ mode
Definition: vtkX3D.h:253
#define VTK_SIZEHINT(...)