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=========================================================================*/
64#ifndef vtkPointWidget_h
65#define vtkPointWidget_h
66
67#include "vtk3DWidget.h"
68#include "vtkCursor3D.h" // Needed for faster access to the Cursor3D
69#include "vtkInteractionWidgetsModule.h" // For export macro
70
71class vtkActor;
73class vtkCellPicker;
74class vtkPolyData;
75class vtkProperty;
76
77class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
78{
79public:
84
86 void PrintSelf(ostream& os, vtkIndent indent) override;
87
89
92 void SetEnabled(int) override;
93 void PlaceWidget(double bounds[6]) override;
94 void PlaceWidget() override { this->Superclass::PlaceWidget(); }
96 double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
97 {
98 this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
99 }
101
107
113 void SetPosition(double x, double y, double z) { this->Cursor3D->SetFocalPoint(x, y, z); }
114 void SetPosition(double x[3]) { this->SetPosition(x[0], x[1], x[2]); }
115 double* GetPosition() VTK_SIZEHINT(3) { return this->Cursor3D->GetFocalPoint(); }
116 void GetPosition(double xyz[3]) { this->Cursor3D->GetFocalPoint(xyz); }
117
121 void SetOutline(int o) { this->Cursor3D->SetOutline(o); }
122 int GetOutline() { return this->Cursor3D->GetOutline(); }
123 void OutlineOn() { this->Cursor3D->OutlineOn(); }
124 void OutlineOff() { this->Cursor3D->OutlineOff(); }
125
129 void SetXShadows(int o) { this->Cursor3D->SetXShadows(o); }
130 int GetXShadows() { return this->Cursor3D->GetXShadows(); }
131 void XShadowsOn() { this->Cursor3D->XShadowsOn(); }
132 void XShadowsOff() { this->Cursor3D->XShadowsOff(); }
133
137 void SetYShadows(int o) { this->Cursor3D->SetYShadows(o); }
138 int GetYShadows() { return this->Cursor3D->GetYShadows(); }
139 void YShadowsOn() { this->Cursor3D->YShadowsOn(); }
140 void YShadowsOff() { this->Cursor3D->YShadowsOff(); }
141
145 void SetZShadows(int o) { this->Cursor3D->SetZShadows(o); }
146 int GetZShadows() { return this->Cursor3D->GetZShadows(); }
147 void ZShadowsOn() { this->Cursor3D->ZShadowsOn(); }
148 void ZShadowsOff() { this->Cursor3D->ZShadowsOff(); }
149
155 void SetTranslationMode(int mode)
156 {
157 this->Cursor3D->SetTranslationMode(mode);
158 this->Cursor3D->Update();
159 }
160 int GetTranslationMode() { return this->Cursor3D->GetTranslationMode(); }
161 void TranslationModeOn() { this->SetTranslationMode(1); }
162 void TranslationModeOff() { this->SetTranslationMode(0); }
163
165
168 void AllOn()
169 {
170 this->OutlineOn();
171 this->XShadowsOn();
172 this->YShadowsOn();
173 this->ZShadowsOn();
174 }
175 void AllOff()
176 {
177 this->OutlineOff();
178 this->XShadowsOff();
179 this->YShadowsOff();
180 this->ZShadowsOff();
181 }
183
185
190 vtkGetObjectMacro(Property, vtkProperty);
191 vtkGetObjectMacro(SelectedProperty, vtkProperty);
193
195
201 vtkSetClampMacro(HotSpotSize, double, 0.0, 1.0);
202 vtkGetMacro(HotSpotSize, double);
204
205protected:
207 ~vtkPointWidget() override;
208
209 // Manage the state of the widget
210 friend class vtkLineWidget;
211
212 int State;
214 {
215 Start = 0,
219 Outside
220 };
221
222 // Handles the events
223 static void ProcessEvents(
224 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
225
226 // ProcessEvents() dispatches to these methods.
227 virtual void OnMouseMove();
228 virtual void OnLeftButtonDown();
229 virtual void OnLeftButtonUp();
230 virtual void OnMiddleButtonDown();
231 virtual void OnMiddleButtonUp();
232 virtual void OnRightButtonDown();
233 virtual void OnRightButtonUp();
234
235 // the cursor3D
239 void Highlight(int highlight);
240
241 // Do the picking
243
244 // Register internal Pickers within PickingManager
245 void RegisterPickers() override;
246
247 // Methods to manipulate the cursor
249 void Translate(double* p1, double* p2);
250 void Scale(double* p1, double* p2, int X, int Y);
251 void MoveFocus(double* p1, double* p2);
253
254 // Properties used to control the appearance of selected objects and
255 // the manipulator in general.
259
260 // The size of the hot spot.
262 int DetermineConstraintAxis(int constraint, double* x);
265
266private:
267 vtkPointWidget(const vtkPointWidget&) = delete;
268 void operator=(const vtkPointWidget&) = delete;
269};
270
271#endif
an abstract superclass for 3D widgets
Definition vtk3DWidget.h:68
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:46
ray-cast cell picker for all kinds of Prop3Ds
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
abstract base class for most VTK objects
Definition vtkObject.h:54
position a point in 3D space
void CreateDefaultProperties()
void PlaceWidget(double bounds[6]) override
Methods that satisfy the superclass' API.
double * GetPosition()
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 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.
static vtkPointWidget * New()
Instantiate this widget.
virtual void OnLeftButtonUp()
void GetPosition(double xyz[3])
void Translate(double *p1, double *p2)
virtual void OnRightButtonUp()
void SetEnabled(int) override
Methods that satisfy the superclass' API.
void SetPosition(double x[3])
virtual void OnMiddleButtonUp()
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:86
represent surface properties of a geometric object
Definition vtkProperty.h:62
#define VTK_SIZEHINT(...)