VTK  9.2.6
vtkImplicitPlaneWidget.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkImplicitPlaneWidget.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=========================================================================*/
66
67#ifndef vtkImplicitPlaneWidget_h
68#define vtkImplicitPlaneWidget_h
69
70#include "vtkInteractionWidgetsModule.h" // For export macro
72
73class vtkActor;
75class vtkCellPicker;
76class vtkConeSource;
77class vtkLineSource;
78class vtkSphereSource;
79class vtkTubeFilter;
80class vtkPlane;
81class vtkCutter;
82class vtkProperty;
83class vtkImageData;
85class vtkFeatureEdges;
86class vtkPolyData;
87class vtkTransform;
88
89class VTKINTERACTIONWIDGETS_EXPORT vtkImplicitPlaneWidget : public vtkPolyDataSourceWidget
90{
91public:
96
98 void PrintSelf(ostream& os, vtkIndent indent) override;
99
101
104 void SetEnabled(int) override;
105 void PlaceWidget(double bounds[6]) override;
106 void PlaceWidget() override { this->Superclass::PlaceWidget(); }
108 double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
109 {
110 this->Superclass::PlaceWidget(xmin, xmax, ymin, ymax, zmin, zmax);
111 }
112
113
115
118 virtual void SetOrigin(double x, double y, double z);
119 virtual void SetOrigin(double x[3]);
121 void GetOrigin(double xyz[3]);
123
125
128 void SetNormal(double x, double y, double z);
129 void SetNormal(double n[3]);
131 void GetNormal(double xyz[3]);
133
135
144 vtkBooleanMacro(NormalToXAxis, vtkTypeBool);
147 vtkBooleanMacro(NormalToYAxis, vtkTypeBool);
150 vtkBooleanMacro(NormalToZAxis, vtkTypeBool);
152
154
158 vtkSetMacro(Tubing, vtkTypeBool);
159 vtkGetMacro(Tubing, vtkTypeBool);
160 vtkBooleanMacro(Tubing, vtkTypeBool);
162
164
171 vtkGetMacro(DrawPlane, vtkTypeBool);
172 vtkBooleanMacro(DrawPlane, vtkTypeBool);
174
176
184
186
191 vtkBooleanMacro(OutsideBounds, vtkTypeBool);
193
195
200 vtkBooleanMacro(ScaleEnabled, vtkTypeBool);
202
204
212
214
218 vtkSetClampMacro(DiagonalRatio, double, 0, 2);
219 vtkGetMacro(DiagonalRatio, double);
221
227
233
240 void GetPlane(vtkPlane* plane);
241
246 void UpdatePlacement() override;
247
251 void SizeHandles() override;
252
254
257 vtkGetObjectMacro(NormalProperty, vtkProperty);
260
262
266 vtkGetObjectMacro(PlaneProperty, vtkProperty);
269
271
274 vtkGetObjectMacro(OutlineProperty, vtkProperty);
277
279
283 vtkGetObjectMacro(EdgesProperty, vtkProperty);
285
286protected:
289
290 // Manage the state of the widget
291 int State;
303
304 // handles the events
305 static void ProcessEvents(
306 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
307
308 // ProcessEvents() dispatches to these methods.
316
317 // Controlling ivars
322
323 // The actual plane which is being manipulated
325
326 // The bounding box is represented by a single voxel image data
331 void HighlightOutline(int highlight);
332 vtkTypeBool OutlineTranslation; // whether the outline can be moved
333 vtkTypeBool ScaleEnabled; // whether the widget can be scaled
334 vtkTypeBool OutsideBounds; // whether the widget can be moved outside input's bounds
335
336 // The cut plane is produced with a vtkCutter
341 virtual void HighlightPlane(int highlight);
342
343 // Optional tubes are represented by extracting boundary edges and tubing
348 vtkTypeBool Tubing; // control whether tubing is on
349
350 // Control final length of the arrow:
352
353 // The + normal cone
357 void HighlightNormal(int highlight);
358
359 // The + normal line
363
364 // The - normal cone
368
369 // The - normal line
373
374 // The origin positioning handle
378 vtkTypeBool OriginTranslation; // whether the origin (sphere) can be moved
379
380 // Do the picking
382
383 // Register internal Pickers within PickingManager
384 void RegisterPickers() override;
385
386 // Transform the normal (used for rotation)
388
389 // Methods to manipulate the plane
390 void ConstrainOrigin(double x[3]);
391 void Rotate(int X, int Y, double* p1, double* p2, double* vpn);
392 void TranslatePlane(double* p1, double* p2);
393 void TranslateOutline(double* p1, double* p2);
394 void TranslateOrigin(double* p1, double* p2);
395 void Push(double* p1, double* p2);
396 void Scale(double* p1, double* p2, int X, int Y);
397
398 // Properties used to control the appearance of selected objects and
399 // the manipulator in general.
408
410
411private:
413 void operator=(const vtkImplicitPlaneWidget&) = delete;
414};
415
416#endif
virtual void PlaceWidget()
This method is used to initially place the widget.
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:46
ray-cast cell picker for all kinds of Prop3Ds
generate polygonal cone
Cut vtkDataSet with user-specified implicit function.
Definition vtkCutter.h:71
extract interior, boundary, non-manifold, and/or sharp edges from polygonal data
topologically and geometrically regular array of data
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) override
Methods that satisfy the superclass' API.
void GetPlane(vtkPlane *plane)
Get the implicit function for the plane.
void TranslateOutline(double *p1, double *p2)
void SizeHandles() override
Control widget appearance.
void SetDrawPlane(vtkTypeBool plane)
Enable/disable the drawing of the plane.
void TranslatePlane(double *p1, double *p2)
static vtkImplicitPlaneWidget * New()
Instantiate the object.
vtkPolyDataMapper * ConeMapper2
void Rotate(int X, int Y, double *p1, double *p2, double *vpn)
virtual void HighlightPlane(int highlight)
void SetNormalToYAxis(vtkTypeBool)
Force the plane widget to be aligned with one of the x-y-z axes.
vtkPolyDataMapper * SphereMapper
void SetNormalToZAxis(vtkTypeBool)
Force the plane widget to be aligned with one of the x-y-z axes.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
vtkPolyDataAlgorithm * GetPolyDataAlgorithm() override
Satisfies superclass API.
void ConstrainOrigin(double x[3])
virtual void SetOrigin(double x, double y, double z)
Get the origin of the plane.
void Scale(double *p1, double *p2, int X, int Y)
void HighlightNormal(int highlight)
void SetEnabled(int) override
Methods that satisfy the superclass' API.
void SetNormal(double x, double y, double z)
Get the normal to the plane.
void TranslateOrigin(double *p1, double *p2)
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
void GetPolyData(vtkPolyData *pd)
Grab the polydata that defines the plane.
void PlaceWidget() override
Methods that satisfy the superclass' API.
vtkPolyDataMapper * OutlineMapper
void PlaceWidget(double bounds[6]) override
Methods that satisfy the superclass' API.
void UpdatePlacement() override
Satisfies the superclass API.
void SetNormalToXAxis(vtkTypeBool)
Force the plane widget to be aligned with one of the x-y-z axes.
double * GetNormal()
Get the normal to the plane.
double * GetOrigin()
Get the origin of the plane.
virtual void SetOrigin(double x[3])
Get the origin of the plane.
void HighlightOutline(int highlight)
vtkPolyDataMapper * EdgesMapper
vtkPolyDataMapper * LineMapper2
void Push(double *p1, double *p2)
a simple class to control print indentation
Definition vtkIndent.h:34
create a line defined by two end points
abstract base class for most VTK objects
Definition vtkObject.h:57
create wireframe outline for an arbitrary data set or composite dataset
perform various plane computations
Definition vtkPlane.h:34
Superclass for algorithms that produce only polydata as output.
map vtkPolyData to graphics primitives
vtkPolyDataSourceWidget()
Empty constructor that calls the parent constructor.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:85
represent surface properties of a geometric object
Definition vtkProperty.h:62
create a polygonal sphere centered at the origin
describes linear transformations via a 4x4 matrix
filter that generates tubes around lines
int vtkTypeBool
Definition vtkABI.h:69
#define VTK_SIZEHINT(...)