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=========================================================================*/
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
96class vtkActor;
98class vtkCellPicker;
99class vtkPolyData;
100class vtkProperty;
101
102class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
103{
104public:
109
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
180 void SetTranslationMode(int mode)
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
230protected:
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.
287 int DetermineConstraintAxis(int constraint, double* x);
290
291private:
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: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:82
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 TranslationModeOn()
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.
vtkActor * Actor
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()
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
#define VTK_SIZEHINT(...)