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=========================================================================*/
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
80class vtkActor;
82class vtkCellPicker;
83class vtkPolyData;
84class vtkProperty;
85
86class VTKINTERACTIONWIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
87{
88public:
93
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
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
214protected:
216 ~vtkPointWidget() override;
217
218 // Manage the state of the widget
219 friend class vtkLineWidget;
220
221 int State;
223 {
224 Start = 0,
228 Outside
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.
271 int DetermineConstraintAxis(int constraint, double* x);
274
275private:
276 vtkPointWidget(const vtkPointWidget&) = delete;
277 void operator=(const vtkPointWidget&) = delete;
278};
279
280#endif
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:68
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:55
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:76
generate a 3D cursor representation
Definition: vtkCursor3D.h:46
a simple class to control print indentation
Definition: vtkIndent.h:43
3D widget for manipulating a line
Definition: vtkLineWidget.h:97
abstract base class for most VTK objects
Definition: vtkObject.h:63
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:95
represent surface properties of a geometric object
Definition: vtkProperty.h:71
@ mode
Definition: vtkX3D.h:253
#define VTK_SIZEHINT(...)