VTK  9.0.20201023
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
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:36
vtkPointWidget::GetZShadows
int GetZShadows()
Definition: vtkPointWidget.h:155
vtkCursor3D.h
vtkPointWidget::SetPosition
void SetPosition(double x[3])
Definition: vtkPointWidget.h:123
vtkPointWidget::TranslationMode
int TranslationMode
Definition: vtkPointWidget.h:261
vtkPointWidget::GetOutline
int GetOutline()
Definition: vtkPointWidget.h:131
vtkPointWidget::GetYShadows
int GetYShadows()
Definition: vtkPointWidget.h:147
vtkLineWidget::CreateDefaultProperties
void CreateDefaultProperties()
vtkPointWidget::YShadowsOn
void YShadowsOn()
Definition: vtkPointWidget.h:148
vtkCursor3D
generate a 3D cursor representation
Definition: vtkCursor3D.h:36
vtkLineWidget::OnRightButtonDown
void OnRightButtonDown()
vtkPointWidget::WaitingForMotion
int WaitingForMotion
Definition: vtkPointWidget.h:272
vtkPointWidget::PlaceWidget
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
Definition: vtkPointWidget.h:104
vtkLineWidget::OnMiddleButtonDown
void OnMiddleButtonDown()
vtkPointWidget::GetPosition
void GetPosition(double xyz[3])
Definition: vtkPointWidget.h:125
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkLineWidget::Start
Definition: vtkLineWidget.h:208
vtkPointWidget::Property
vtkProperty * Property
Definition: vtkPointWidget.h:265
vtkPointWidget::SelectedProperty
vtkProperty * SelectedProperty
Definition: vtkPointWidget.h:266
vtkPointWidget::WidgetState
WidgetState
Definition: vtkPointWidget.h:222
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkPointWidget::OutlineOn
void OutlineOn()
Definition: vtkPointWidget.h:132
vtkLineWidget::OnLeftButtonUp
void OnLeftButtonUp()
vtkPointWidget
position a point in 3D space
Definition: vtkPointWidget.h:86
vtk3DWidget::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkPointWidget::ZShadowsOff
void ZShadowsOff()
Definition: vtkPointWidget.h:157
vtkPointWidget::HotSpotSize
double HotSpotSize
Definition: vtkPointWidget.h:270
vtkPointWidget::YShadowsOff
void YShadowsOff()
Definition: vtkPointWidget.h:149
vtkPointWidget::WaitCount
int WaitCount
Definition: vtkPointWidget.h:273
vtkPointWidget::Translating
Definition: vtkPointWidget.h:227
vtkPointWidget::AllOff
void AllOff()
Definition: vtkPointWidget.h:184
vtkPointWidget::State
int State
Definition: vtkPointWidget.h:221
vtkPointWidget::SetPosition
void SetPosition(double x, double y, double z)
Set/Get the position of the point.
Definition: vtkPointWidget.h:122
vtkLineWidget::OnRightButtonUp
void OnRightButtonUp()
vtkLineWidget::OnMouseMove
virtual void OnMouseMove()
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkLineWidget
3D widget for manipulating a line
Definition: vtkLineWidget.h:96
vtkPointWidget::GetTranslationMode
int GetTranslationMode()
Definition: vtkPointWidget.h:169
vtkLineWidget::Scale
void Scale(double *p1, double *p2, int X, int Y)
vtkPointWidget::Cursor3D
vtkCursor3D * Cursor3D
Definition: vtkPointWidget.h:247
vtkInteractorObserver::ProcessEvents
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Handles the char widget activation event.
vtkPointWidget::TranslationModeOn
void TranslationModeOn()
Definition: vtkPointWidget.h:170
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
vtkPointWidget::GetPosition
double * GetPosition()
Definition: vtkPointWidget.h:124
vtkInteractorObserver::SetEnabled
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
Definition: vtkInteractorObserver.h:79
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkPointWidget::ConstraintAxis
int ConstraintAxis
Definition: vtkPointWidget.h:257
vtkPointWidget::SetXShadows
void SetXShadows(int o)
Turn on/off the wireframe x-shadows.
Definition: vtkPointWidget.h:138
vtkPointWidget::XShadowsOn
void XShadowsOn()
Definition: vtkPointWidget.h:140
vtkLineWidget::Outside
Definition: vtkLineWidget.h:212
vtk3DWidget
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:70
vtkLineWidget::OnLeftButtonDown
void OnLeftButtonDown()
vtkPointWidget::SetOutline
void SetOutline(int o)
Turn on/off the wireframe bounding box.
Definition: vtkPointWidget.h:130
vtkInteractorObserver::RegisterPickers
virtual void RegisterPickers()
Register internal Pickers in the Picking Manager.
vtkPointWidget::SetTranslationMode
void SetTranslationMode(int mode)
If translation mode is on, as the widget is moved the bounding box, shadows, and cursor are all trans...
Definition: vtkPointWidget.h:164
vtkLineWidget::OnMiddleButtonUp
void OnMiddleButtonUp()
vtkPointWidget::PlaceWidget
void PlaceWidget() override
Definition: vtkPointWidget.h:103
vtkPointWidget::XShadowsOff
void XShadowsOff()
Definition: vtkPointWidget.h:141
vtkPointWidget::SetYShadows
void SetYShadows(int o)
Turn on/off the wireframe y-shadows.
Definition: vtkPointWidget.h:146
vtkPointWidget::CursorPicker
vtkCellPicker * CursorPicker
Definition: vtkPointWidget.h:251
vtkPointWidget::Mapper
vtkPolyDataMapper * Mapper
Definition: vtkPointWidget.h:246
vtkPointWidget::Scaling
Definition: vtkPointWidget.h:226
vtkPointWidget::Actor
vtkActor * Actor
Definition: vtkPointWidget.h:245
vtk3DWidget::PlaceWidget
virtual void PlaceWidget()
vtkPointWidget::SetZShadows
void SetZShadows(int o)
Turn on/off the wireframe z-shadows.
Definition: vtkPointWidget.h:154
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
vtkX3D::mode
Definition: vtkX3D.h:253
vtkPointWidget::ZShadowsOn
void ZShadowsOn()
Definition: vtkPointWidget.h:156
vtk3DWidget.h
vtkProperty
represent surface properties of a geometric object
Definition: vtkProperty.h:61
vtkCellPicker
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:66
vtkPointWidget::AllOn
void AllOn()
Convenience methods to turn outline and shadows on and off.
Definition: vtkPointWidget.h:177
vtkPointWidget::Moving
Definition: vtkPointWidget.h:225
vtkPointWidget::GetXShadows
int GetXShadows()
Definition: vtkPointWidget.h:139
vtkPointWidget::TranslationModeOff
void TranslationModeOff()
Definition: vtkPointWidget.h:171
vtkPointWidget::OutlineOff
void OutlineOff()
Definition: vtkPointWidget.h:133