VTK
vtkSplineWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSplineWidget.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 vtkSplineWidget_h
90 #define vtkSplineWidget_h
91 
92 #include "vtkInteractionWidgetsModule.h" // For export macro
93 #include "vtk3DWidget.h"
94 
95 class vtkActor;
96 class vtkCellPicker;
99 class vtkPlaneSource;
100 class vtkPoints;
101 class vtkPolyData;
102 class vtkProp;
103 class vtkProperty;
104 class vtkSphereSource;
105 class vtkTransform;
106 
107 #define VTK_PROJECTION_YZ 0
108 #define VTK_PROJECTION_XZ 1
109 #define VTK_PROJECTION_XY 2
110 #define VTK_PROJECTION_OBLIQUE 3
111 
113 {
114 public:
116  static vtkSplineWidget *New();
117 
119  void PrintSelf(ostream& os, vtkIndent indent);
120 
122 
123  virtual void SetEnabled(int);
124  virtual void PlaceWidget(double bounds[6]);
125  void PlaceWidget()
126  {this->Superclass::PlaceWidget();}
127  void PlaceWidget(double xmin, double xmax, double ymin, double ymax,
128  double zmin, double zmax)
129  {this->Superclass::PlaceWidget(xmin,xmax,ymin,ymax,zmin,zmax);}
131 
133 
139  vtkSetMacro(ProjectToPlane,int);
140  vtkGetMacro(ProjectToPlane,int);
141  vtkBooleanMacro(ProjectToPlane,int);
143 
147 
149  vtkGetMacro(ProjectionNormal,int);
151  { this->SetProjectionNormal(0); }
153  { this->SetProjectionNormal(1); }
155  { this->SetProjectionNormal(2); }
157  { this->SetProjectionNormal(3); }
158 
160 
166  vtkGetMacro(ProjectionPosition, double);
168 
176 
178 
182  vtkGetObjectMacro(HandleProperty, vtkProperty);
184  vtkGetObjectMacro(SelectedHandleProperty, vtkProperty);
186 
188 
190  virtual void SetLineProperty(vtkProperty*);
193  vtkGetObjectMacro(SelectedLineProperty, vtkProperty);
195 
197 
198  virtual void SetNumberOfHandles(int npts);
199  vtkGetMacro(NumberOfHandles, int);
201 
203 
206  vtkGetMacro(Resolution,int);
208 
210 
219 
221 
223  void SetHandlePosition(int handle, double x, double y, double z);
224  void SetHandlePosition(int handle, double xyz[3]);
225  void GetHandlePosition(int handle, double xyz[3]);
226  double* GetHandlePosition(int handle);
228 
230 
235  void SetClosed(int closed);
236  vtkGetMacro(Closed,int);
237  vtkBooleanMacro(Closed,int);
239 
243  int IsClosed();
244 
248  double GetSummedLength();
249 
255 
257 
259  vtkSetClampMacro(ProcessEvents, int, 0, 1);
260  vtkGetMacro(ProcessEvents, int);
261  vtkBooleanMacro( ProcessEvents, int );
263 
264 protected:
267 
268 //BTX - manage the state of the widget
269  int State;
271  {
272  Start=0,
278  Outside
279  };
280 //ETX
281 
282  //handles the events
283  static void ProcessEventsHandler(vtkObject* object,
284  unsigned long event,
285  void* clientdata,
286  void* calldata);
287 
288  // ProcessEventsHandler() dispatches to these methods.
295  void OnMouseMove();
296 
297  // Controlling vars
302 
303  // Projection capabilities
307 
308  // The spline
312  int Closed;
314 
315  // The line segments
317  void HighlightLine(int highlight);
319 
320  // Glyphs representing hot spots (e.g., handles)
323  void Initialize();
324  int HighlightHandle(vtkProp *prop); //returns handle index or -1 on fail
325  virtual void SizeHandles();
326  void InsertHandleOnLine(double* pos);
327  void EraseHandle(const int&);
328 
329  // Do the picking
334 
335  // Register internal Pickers within PickingManager
336  virtual void RegisterPickers();
337 
338  // Methods to manipulate the spline.
339  void MovePoint(double *p1, double *p2);
340  void Scale(double *p1, double *p2, int X, int Y);
341  void Translate(double *p1, double *p2);
342  void Spin(double *p1, double *p2, double *vpn);
343 
344  // Transform the control points (used for spinning)
346 
347  // Properties used to control the appearance of selected objects and
348  // the manipulator in general.
354 
355  // For efficient spinning
356  double Centroid[3];
359 
360 private:
361  vtkSplineWidget(const vtkSplineWidget&); //Not implemented
362  void operator=(const vtkSplineWidget&); //Not implemented
363 };
364 
365 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkSplineWidget::SetClosed
void SetClosed(int closed)
vtkSplineWidget::Scaling
@ Scaling
Definition: vtkSplineWidget.h:274
vtkSplineWidget::CurrentHandleIndex
int CurrentHandleIndex
Definition: vtkSplineWidget.h:333
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkSplineWidget::PlaneSource
vtkPlaneSource * PlaneSource
Definition: vtkSplineWidget.h:301
vtkSplineWidget::OnMouseMove
void OnMouseMove()
vtkSplineWidget::Inserting
@ Inserting
Definition: vtkSplineWidget.h:276
vtkSplineWidget::SetHandlePosition
void SetHandlePosition(int handle, double x, double y, double z)
vtkSplineWidget::SetParametricSpline
virtual void SetParametricSpline(vtkParametricSpline *)
vtkSplineWidget::ProjectToPlane
int ProjectToPlane
Definition: vtkSplineWidget.h:300
vtkParametricFunctionSource
tessellate parametric functions
Definition: vtkParametricFunctionSource.h:59
vtkX3D::resolution
@ resolution
Definition: vtkX3D.h:466
vtkSplineWidget::HighlightLine
void HighlightLine(int highlight)
vtkSplineWidget::ProjectPointsToOrthoPlane
void ProjectPointsToOrthoPlane()
vtkSplineWidget::Scale
void Scale(double *p1, double *p2, int X, int Y)
vtkSplineWidget::RegisterPickers
virtual void RegisterPickers()
vtkSplineWidget::LinePicker
vtkCellPicker * LinePicker
Definition: vtkSplineWidget.h:331
vtkPlaneSource
create an array of quadrilaterals located in a plane
Definition: vtkPlaneSource.h:60
vtkSplineWidget::GetHandlePosition
double * GetHandlePosition(int handle)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkSplineWidget::MovePoint
void MovePoint(double *p1, double *p2)
vtkSplineWidget::SetProjectionNormalToYAxes
void SetProjectionNormalToYAxes()
Definition: vtkSplineWidget.h:152
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkSplineWidget::SetSelectedHandleProperty
virtual void SetSelectedHandleProperty(vtkProperty *)
vtkSplineWidget::Translate
void Translate(double *p1, double *p2)
vtkInteractionWidgetsModule.h
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkSplineWidget::SetSelectedLineProperty
virtual void SetSelectedLineProperty(vtkProperty *)
vtkSplineWidget::ParametricFunctionSource
vtkParametricFunctionSource * ParametricFunctionSource
Definition: vtkSplineWidget.h:310
vtkSplineWidget::Spinning
@ Spinning
Definition: vtkSplineWidget.h:275
vtkSplineWidget::WidgetState
WidgetState
Definition: vtkSplineWidget.h:271
vtkSplineWidget::NumberOfHandles
int NumberOfHandles
Definition: vtkSplineWidget.h:311
vtkSplineWidget::HighlightHandle
int HighlightHandle(vtkProp *prop)
vtkTransform
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
vtkSplineWidget::OnMiddleButtonUp
void OnMiddleButtonUp()
vtkSplineWidget::SetPlaneSource
void SetPlaneSource(vtkPlaneSource *plane)
vtkgl::points
GLsizei const GLfloat * points
Definition: vtkgl.h:14786
vtkgl::event
struct _cl_event * event
Definition: vtkgl.h:14387
vtkSplineWidget::CreateDefaultProperties
void CreateDefaultProperties()
vtkParametricSpline
parametric function for 1D interpolating splines
Definition: vtkParametricSpline.h:53
vtkSplineWidget::PlaceWidget
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
Definition: vtkSplineWidget.h:127
vtkSplineWidget::EraseHandle
void EraseHandle(const int &)
vtkSplineWidget::SelectedHandleProperty
vtkProperty * SelectedHandleProperty
Definition: vtkSplineWidget.h:350
vtkSplineWidget::Closed
int Closed
Definition: vtkSplineWidget.h:312
vtkSplineWidget::SetLineProperty
virtual void SetLineProperty(vtkProperty *)
vtkSplineWidget::OnRightButtonUp
void OnRightButtonUp()
vtkX3D::position
@ position
Definition: vtkX3D.h:261
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkSplineWidget::SetProjectionPosition
void SetProjectionPosition(double position)
vtkSplineWidget::Initialize
void Initialize()
vtkSplineWidget::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkSplineWidget::Handle
vtkActor ** Handle
Definition: vtkSplineWidget.h:321
vtkSplineWidget::BuildRepresentation
void BuildRepresentation()
vtkSplineWidget::OnLeftButtonUp
void OnLeftButtonUp()
vtkSplineWidget::Moving
@ Moving
Definition: vtkSplineWidget.h:273
vtkSplineWidget::LineActor
vtkActor * LineActor
Definition: vtkSplineWidget.h:316
vtkSplineWidget::PlaceWidget
virtual void PlaceWidget(double bounds[6])
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:46
vtkSplineWidget::SelectedLineProperty
vtkProperty * SelectedLineProperty
Definition: vtkSplineWidget.h:352
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
vtkSplineWidget::OnLeftButtonDown
void OnLeftButtonDown()
vtkSplineWidget::SetEnabled
virtual void SetEnabled(int)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkSplineWidget::Erasing
@ Erasing
Definition: vtkSplineWidget.h:277
vtkSplineWidget::InitializeHandles
void InitializeHandles(vtkPoints *points)
vtkSplineWidget::HandleGeometry
vtkSphereSource ** HandleGeometry
Definition: vtkSplineWidget.h:322
vtkSplineWidget::SetProjectionNormalToXAxes
void SetProjectionNormalToXAxes()
Definition: vtkSplineWidget.h:150
vtkSplineWidget::CurrentHandle
vtkActor * CurrentHandle
Definition: vtkSplineWidget.h:332
vtkSplineWidget::HandleProperty
vtkProperty * HandleProperty
Definition: vtkSplineWidget.h:349
vtkSplineWidget::LineProperty
vtkProperty * LineProperty
Definition: vtkSplineWidget.h:351
vtkSplineWidget::SetNumberOfHandles
virtual void SetNumberOfHandles(int npts)
vtk3DWidget
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:70
vtkSplineWidget::SetHandlePosition
void SetHandlePosition(int handle, double xyz[3])
VTK_PROJECTION_OBLIQUE
#define VTK_PROJECTION_OBLIQUE
Definition: vtkSplineWidget.h:110
vtkSplineWidget::HandlePicker
vtkCellPicker * HandlePicker
Definition: vtkSplineWidget.h:330
vtkSplineWidget::New
static vtkSplineWidget * New()
vtkSplineWidget::ParametricSpline
vtkParametricSpline * ParametricSpline
Definition: vtkSplineWidget.h:309
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkgl::zmax
GLclampd zmax
Definition: vtkgl.h:17479
vtkSplineWidget::State
int State
Definition: vtkSplineWidget.h:269
vtkSplineWidget::ProcessEvents
int ProcessEvents
Definition: vtkSplineWidget.h:358
vtkSplineWidget::SetProjectionNormalToZAxes
void SetProjectionNormalToZAxes()
Definition: vtkSplineWidget.h:154
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkSplineWidget::Spin
void Spin(double *p1, double *p2, double *vpn)
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:50
vtkSplineWidget
3D widget for manipulating a spline
Definition: vtkSplineWidget.h:113
vtkSplineWidget::PlaceWidget
void PlaceWidget()
Definition: vtkSplineWidget.h:125
vtkSplineWidget::Resolution
int Resolution
Definition: vtkSplineWidget.h:318
vtkSplineWidget::GetPolyData
void GetPolyData(vtkPolyData *pd)
VTKINTERACTIONWIDGETS_EXPORT
#define VTKINTERACTIONWIDGETS_EXPORT
Definition: vtkInteractionWidgetsModule.h:15
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkSplineWidget::OnMiddleButtonDown
void OnMiddleButtonDown()
vtkSplineWidget::Transform
vtkTransform * Transform
Definition: vtkSplineWidget.h:345
vtkSplineWidget::ProjectPointsToPlane
void ProjectPointsToPlane()
vtkSplineWidget::OnRightButtonDown
void OnRightButtonDown()
vtkSplineWidget::SetResolution
void SetResolution(int resolution)
VTK_PROJECTION_YZ
#define VTK_PROJECTION_YZ
Definition: vtkSplineWidget.h:107
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkSplineWidget::SetProjectionNormalToOblique
void SetProjectionNormalToOblique()
Definition: vtkSplineWidget.h:156
vtkSplineWidget::ProjectionPosition
double ProjectionPosition
Definition: vtkSplineWidget.h:299
vtkSplineWidget::vtkSplineWidget
vtkSplineWidget()
vtkSplineWidget::ProjectPointsToObliquePlane
void ProjectPointsToObliquePlane()
vtkSplineWidget::IsClosed
int IsClosed()
vtkSplineWidget::SizeHandles
virtual void SizeHandles()
vtk3DWidget.h
vtkProperty
represent surface properties of a geometric object
Definition: vtkProperty.h:64
vtkSplineWidget::CalculateCentroid
void CalculateCentroid()
vtkSplineWidget::ProcessEventsHandler
static void ProcessEventsHandler(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
vtkSplineWidget::GetSummedLength
double GetSummedLength()
vtkSplineWidget::ProjectionNormal
int ProjectionNormal
Definition: vtkSplineWidget.h:298
vtkSplineWidget::~vtkSplineWidget
~vtkSplineWidget()
vtkSplineWidget::GetHandlePosition
void GetHandlePosition(int handle, double xyz[3])
vtkCellPicker
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:69
vtkSplineWidget::InsertHandleOnLine
void InsertHandleOnLine(double *pos)
vtkSplineWidget::SetHandleProperty
virtual void SetHandleProperty(vtkProperty *)