VTK
vtkLineWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLineWidget.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 =========================================================================*/
75 #ifndef vtkLineWidget_h
76 #define vtkLineWidget_h
77 
78 #include "vtkInteractionWidgetsModule.h" // For export macro
79 #include "vtk3DWidget.h"
80 #include "vtkLineSource.h" // For passing calls to it
81 
82 class vtkActor;
83 class vtkPolyDataMapper;
84 class vtkPoints;
85 class vtkPolyData;
86 class vtkProp;
87 class vtkProperty;
88 class vtkSphereSource;
89 class vtkCellPicker;
90 class vtkPointWidget;
91 class vtkPWCallback;
92 class vtkPW1Callback;
93 class vtkPW2Callback;
94 
96 {
97 public:
99  static vtkLineWidget *New();
100 
102  void PrintSelf(ostream& os, vtkIndent indent);
103 
105 
106  virtual void SetEnabled(int);
107  virtual void PlaceWidget(double bounds[6]);
108  void PlaceWidget()
109  {this->Superclass::PlaceWidget();}
110  void PlaceWidget(double xmin, double xmax, double ymin, double ymax,
111  double zmin, double zmax)
112  {this->Superclass::PlaceWidget(xmin,xmax,ymin,ymax,zmin,zmax);}
114 
116 
117  void SetResolution(int r)
118  { this->LineSource->SetResolution(r); }
120  { return this->LineSource->GetResolution(); }
122 
124 
125  void SetPoint1(double x, double y, double z);
126  void SetPoint1(double x[3])
127  {this->SetPoint1(x[0], x[1], x[2]); }
128  double* GetPoint1()
129  {return this->LineSource->GetPoint1();}
130  void GetPoint1(double xyz[3])
131  {this->LineSource->GetPoint1(xyz);}
133 
135 
136  void SetPoint2(double x, double y, double z);
137  void SetPoint2(double x[3])
138  {this->SetPoint2(x[0], x[1], x[2]);}
139  double* GetPoint2()
140  {return this->LineSource->GetPoint2();}
141  void GetPoint2(double xyz[3])
142  {this->LineSource->GetPoint2(xyz);}
144 
146 
150  vtkSetClampMacro(Align, int, XAxis, None);
151  vtkGetMacro(Align, int);
152  void SetAlignToXAxis() { this->SetAlign(XAxis); }
153  void SetAlignToYAxis() { this->SetAlign(YAxis); }
154  void SetAlignToZAxis() { this->SetAlign(ZAxis); }
155  void SetAlignToNone() { this->SetAlign(None); }
157 
159 
163  vtkSetMacro(ClampToBounds,int);
164  vtkGetMacro(ClampToBounds,int);
165  vtkBooleanMacro(ClampToBounds,int);
167 
174 
176 
180  vtkGetObjectMacro(SelectedHandleProperty,vtkProperty);
182 
184 
187  vtkGetObjectMacro(SelectedLineProperty,vtkProperty);
189 
190 protected:
193 
194 //BTX - manage the state of the widget
195  friend class vtkPWCallback;
196 
197  int State;
199  {
200  Start=0,
204  Outside
205  };
206 //ETX
207 
208  //handles the events
209  static void ProcessEvents(vtkObject* object,
210  unsigned long event,
211  void* clientdata,
212  void* calldata);
213 
214  // ProcessEvents() dispatches to these methods.
221  virtual void OnMouseMove();
222 
223  // controlling ivars
224  int Align;
225 
226 //BTX
231  None
232  };
233 //ETX
234 
235  // the line
239  void HighlightLine(int highlight);
240 
241  // glyphs representing hot spots (e.g., handles)
245 
247  virtual void SizeHandles();
248  void HandlesOn(double length);
249  void HandlesOff();
250  int HighlightHandle(vtkProp *prop); //returns cell id
251  void HighlightHandles(int highlight);
252 
253  // Do the picking
257  double LastPosition[3];
258  void SetLinePosition(double x[3]);
259 
260  // Register internal Pickers within PickingManager
261  virtual void RegisterPickers();
262 
263  // Methods to manipulate the hexahedron.
264  void Scale(double *p1, double *p2, int X, int Y);
265 
266  // Initial bounds
268  void ClampPosition(double x[3]);
269  int InBounds(double x[3]);
270 
271  // Properties used to control the appearance of selected objects and
272  // the manipulator in general.
278 
279  void GenerateLine();
280 
281  // Methods for managing the point widgets used to control the endpoints
285  vtkPWCallback *PWCallback;
286  vtkPW1Callback *PW1Callback;
287  vtkPW2Callback *PW2Callback;
291  int ForwardEvent(unsigned long event);
292 
293 private:
294  vtkLineWidget(const vtkLineWidget&); //Not implemented
295  void operator=(const vtkLineWidget&); //Not implemented
296 };
297 
298 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:42
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkLineWidget::SetAlignToZAxis
void SetAlignToZAxis()
Definition: vtkLineWidget.h:154
vtkLineWidget::ClampPosition
void ClampPosition(double x[3])
vtkLineWidget::LineSource
vtkLineSource * LineSource
Definition: vtkLineWidget.h:238
vtkLineWidget::LineActor
vtkActor * LineActor
Definition: vtkLineWidget.h:236
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkLineWidget::GetResolution
int GetResolution()
Definition: vtkLineWidget.h:119
vtkLineWidget::SetAlignToYAxis
void SetAlignToYAxis()
Definition: vtkLineWidget.h:153
vtkLineWidget::CreateDefaultProperties
void CreateDefaultProperties()
vtkLineWidget::AlignmentState
AlignmentState
Definition: vtkLineWidget.h:227
vtkLineWidget::GetPolyData
void GetPolyData(vtkPolyData *pd)
vtkLineWidget::SetAlignToNone
void SetAlignToNone()
Definition: vtkLineWidget.h:155
vtkLineWidget::ForwardEvent
int ForwardEvent(unsigned long event)
vtkLineWidget::SetPoint1
void SetPoint1(double x[3])
Definition: vtkLineWidget.h:126
vtkLineWidget::OnRightButtonDown
void OnRightButtonDown()
vtkLineWidget::GetPoint2
double * GetPoint2()
Definition: vtkLineWidget.h:139
vtkLineWidget::PointWidget
vtkPointWidget * PointWidget
Definition: vtkLineWidget.h:282
vtkLineWidget::Handle
vtkActor ** Handle
Definition: vtkLineWidget.h:242
vtkLineWidget::OnMiddleButtonDown
void OnMiddleButtonDown()
vtkLineWidget::CurrentHandle
vtkActor * CurrentHandle
Definition: vtkLineWidget.h:256
vtkLineWidget::HandleGeometry
vtkSphereSource ** HandleGeometry
Definition: vtkLineWidget.h:244
vtkLineWidget::GenerateLine
void GenerateLine()
vtkLineWidget::SetPoint1
void SetPoint1(double x, double y, double z)
vtkLineWidget::LineMapper
vtkPolyDataMapper * LineMapper
Definition: vtkLineWidget.h:237
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkLineWidget::New
static vtkLineWidget * New()
vtkLineWidget::HandlePicker
vtkCellPicker * HandlePicker
Definition: vtkLineWidget.h:254
vtkLineWidget::EnablePointWidget
void EnablePointWidget()
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkLineWidget::PlaceWidget
virtual void PlaceWidget(double bounds[6])
vtkInteractionWidgetsModule.h
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkLineWidget::OnLeftButtonUp
void OnLeftButtonUp()
vtkPointWidget
position a point in 3D space
Definition: vtkPointWidget.h:86
vtkLineWidget::HighlightHandles
void HighlightHandles(int highlight)
vtkLineWidget::SizeHandles
virtual void SizeHandles()
vtkLineWidget::SetEnabled
virtual void SetEnabled(int)
vtkLineWidget::SetResolution
void SetResolution(int r)
Definition: vtkLineWidget.h:117
vtkLineWidget::CurrentPointWidget
vtkPointWidget * CurrentPointWidget
Definition: vtkLineWidget.h:288
vtkgl::length
GLuint GLsizei GLsizei * length
Definition: vtkgl.h:11992
vtkLineWidget::vtkLineWidget
vtkLineWidget()
vtkgl::event
struct _cl_event * event
Definition: vtkgl.h:14387
vtkLineWidget::State
int State
Definition: vtkLineWidget.h:197
vtkLineWidget::Align
int Align
Definition: vtkLineWidget.h:224
vtkLineWidget::SetPoint2
void SetPoint2(double x, double y, double z)
vtkLineWidget::SetPoint2
void SetPoint2(double x[3])
Definition: vtkLineWidget.h:137
vtkLineWidget::SetLinePosition
void SetLinePosition(double x[3])
vtkLineWidget::OnRightButtonUp
void OnRightButtonUp()
vtkLineWidget::GetPoint2
void GetPoint2(double xyz[3])
Definition: vtkLineWidget.h:141
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkLineWidget::BuildRepresentation
void BuildRepresentation()
vtkLineWidget::OnMouseMove
virtual void OnMouseMove()
vtkLineWidget::PlaceWidget
void PlaceWidget(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
Definition: vtkLineWidget.h:110
vtkLineWidget::SetAlignToXAxis
void SetAlignToXAxis()
Definition: vtkLineWidget.h:152
vtkLineWidget
3D widget for manipulating a line
Definition: vtkLineWidget.h:96
vtkLineWidget::ZAxis
@ ZAxis
Definition: vtkLineWidget.h:230
vtkLineWidget::Scale
void Scale(double *p1, double *p2, int X, int Y)
vtkLineWidget::HighlightHandle
int HighlightHandle(vtkProp *prop)
vtkSphereSource
create a polygonal sphere centered at the origin
Definition: vtkSphereSource.h:46
vtkLineWidget::SelectedLineProperty
vtkProperty * SelectedLineProperty
Definition: vtkLineWidget.h:276
vtkLineWidget::LinePicker
vtkCellPicker * LinePicker
Definition: vtkLineWidget.h:255
vtkLineWidget::HandlesOn
void HandlesOn(double length)
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
vtkLineWidget::GetPoint1
double * GetPoint1()
Definition: vtkLineWidget.h:128
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkLineWidget::MovingHandle
@ MovingHandle
Definition: vtkLineWidget.h:201
vtkLineWidget::LineProperty
vtkProperty * LineProperty
Definition: vtkLineWidget.h:275
vtkLineWidget::DisablePointWidget
void DisablePointWidget()
vtkLineSource.h
vtk3DWidget
an abstract superclass for 3D widgets
Definition: vtk3DWidget.h:70
vtkLineWidget::HandlesOff
void HandlesOff()
vtkLineWidget::HandleProperty
vtkProperty * HandleProperty
Definition: vtkLineWidget.h:273
vtkLineWidget::ProcessEvents
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkLineSource
create a line defined by two end points
Definition: vtkLineSource.h:42
vtkgl::zmax
GLclampd zmax
Definition: vtkgl.h:17479
vtkLineWidget::OnLeftButtonDown
void OnLeftButtonDown()
vtkLineWidget::MovingLine
@ MovingLine
Definition: vtkLineWidget.h:202
vtkLineWidget::SelectedHandleProperty
vtkProperty * SelectedHandleProperty
Definition: vtkLineWidget.h:274
vtkLineWidget::YAxis
@ YAxis
Definition: vtkLineWidget.h:229
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkLineWidget::PW2Callback
vtkPW2Callback * PW2Callback
Definition: vtkLineWidget.h:287
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:50
vtkgl::r
GLdouble GLdouble GLdouble r
Definition: vtkgl.h:11610
vtkLineWidget::OnMiddleButtonUp
void OnMiddleButtonUp()
VTKINTERACTIONWIDGETS_EXPORT
#define VTKINTERACTIONWIDGETS_EXPORT
Definition: vtkInteractionWidgetsModule.h:15
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkLineWidget::GetPoint1
void GetPoint1(double xyz[3])
Definition: vtkLineWidget.h:130
vtkLineWidget::PointWidget1
vtkPointWidget * PointWidget1
Definition: vtkLineWidget.h:283
vtkLineWidget::HighlightLine
void HighlightLine(int highlight)
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkLineWidget::ClampToBounds
int ClampToBounds
Definition: vtkLineWidget.h:267
vtkLineWidget::PW1Callback
vtkPW1Callback * PW1Callback
Definition: vtkLineWidget.h:286
vtkLineWidget::Scaling
@ Scaling
Definition: vtkLineWidget.h:203
vtk3DWidget.h
vtkProperty
represent surface properties of a geometric object
Definition: vtkProperty.h:64
vtkLineWidget::InBounds
int InBounds(double x[3])
vtkLineWidget::PlaceWidget
void PlaceWidget()
Definition: vtkLineWidget.h:108
vtkLineWidget::~vtkLineWidget
~vtkLineWidget()
vtkCellPicker
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:69
vtkLineWidget::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkLineWidget::RegisterPickers
virtual void RegisterPickers()
vtkLineWidget::PointWidget2
vtkPointWidget * PointWidget2
Definition: vtkLineWidget.h:284
vtkLineWidget::XAxis
@ XAxis
Definition: vtkLineWidget.h:228
vtkLineWidget::WidgetState
WidgetState
Definition: vtkLineWidget.h:199
vtkLineWidget::HandleMapper
vtkPolyDataMapper ** HandleMapper
Definition: vtkLineWidget.h:243
vtkLineWidget::PWCallback
vtkPWCallback * PWCallback
Definition: vtkLineWidget.h:285