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
90class vtkActor;
92class vtkCellPicker;
93class vtkPolyData;
94class vtkProperty;
95
96class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
97{
98public:
103
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
224protected:
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.
281 int DetermineConstraintAxis(int constraint, double* x);
284
285private:
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.
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
@ mode
Definition: vtkX3D.h:253
#define VTK_SIZEHINT(...)