Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkLineWidget Class Reference

#include <vtkLineWidget.h>

Inheritance diagram for vtkLineWidget:

Inheritance graph
[legend]
Collaboration diagram for vtkLineWidget:

Collaboration graph
[legend]
List of all members.

Detailed Description

3D widget for manipulating a line

This 3D widget defines a line that can be interactively placed in a scene. The line has two handles (at its endpoints), plus the line can be picked to translate it in the scene. A nice feature of the object is that the vtkLineWidget, like any 3D widget, will work with the current interactor style and any other widgets present in the scene. That is, if vtkLineWidget does not handle an event, then all other registered observers (including the interactor style) have an opportunity to process the event. Otherwise, the vtkLineWidget will terminate the processing of the event that it handles.

To use this object, just invoke SetInteractor() with the argument of the method a vtkRenderWindowInteractor. You may also wish to invoke "PlaceWidget()" to initially position the widget. The interactor will act normally until the "i" key (for "interactor") is pressed, at which point the vtkLineWidget will appear. (See superclass documentation for information about changing this behavior.) By grabbing one of the two end point handles (use the left mouse button), the line can be oriented and stretched (the other end point remains fixed). By grabbing the line itself, or using the middle mouse button, the entire line can be translated. Scaling (about the center of the line) is achieved by using the right mouse button. By moving the mouse "up" the render window the line will be made bigger; by moving "down" the render window the widget will be made smaller. Turn off the widget by pressing the "i" key again (or invoke the Off() method). (Note: picking the line or either one of the two end point handles causes a vtkPointWidget to appear. This widget has the ability to constrain motion to an axis by pressing the "shift" key while moving the mouse.)

The vtkLineWidget has several methods that can be used in conjunction with other VTK objects. The Set/GetResolution() methods control the number of subdivisions of the line; the GetPolyData() method can be used to get the polygonal representation and can be used for things like seeding streamlines. Typical usage of the widget is to make use of the StartInteractionEvent, InteractionEvent, and EndInteractionEvent events. The InteractionEvent is called on mouse motion; the other two events are called on button down and button up (either left or right button).

Some additional features of this class include the ability to control the properties of the widget. You can set the properties of the selected and unselected representations of the line. For example, you can set the property for the handles and line. In addition there are methods to constrain the line so that it is aligned along the x-y-z axes.

Warning:
Note that handles and line can be picked even when they are "behind" other actors. This is an intended feature and not a bug.
See also:
vtk3DWidget vtkBoxWidget vtkPlaneWidget
Events:
vtkCommand::DisableEvent vtkCommand::EndInteractionEvent vtkCommand::InteractionEvent vtkCommand::StartInteractionEvent vtkCommand::EnableEvent
Examples:
vtkLineWidget (Examples)
Tests:
vtkLineWidget (Tests)

Definition at line 98 of file vtkLineWidget.h.

Public Types

typedef vtk3DWidget Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual void SetEnabled (int)
virtual void PlaceWidget (double bounds[6])
void PlaceWidget ()
void PlaceWidget (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
void SetResolution (int r)
int GetResolution ()
void SetPoint1 (double x, double y, double z)
void SetPoint1 (double x[3])
double * GetPoint1 ()
void GetPoint1 (double xyz[3])
void SetPoint2 (double x, double y, double z)
void SetPoint2 (double x[3])
double * GetPoint2 ()
void GetPoint2 (double xyz[3])
virtual void SetAlign (int)
virtual int GetAlign ()
void SetAlignToXAxis ()
void SetAlignToYAxis ()
void SetAlignToZAxis ()
void SetAlignToNone ()
virtual void SetClampToBounds (int)
virtual int GetClampToBounds ()
virtual void ClampToBoundsOn ()
virtual void ClampToBoundsOff ()
void GetPolyData (vtkPolyData *pd)
virtual vtkPropertyGetHandleProperty ()
virtual vtkPropertyGetSelectedHandleProperty ()
virtual vtkPropertyGetLineProperty ()
virtual vtkPropertyGetSelectedLineProperty ()

Static Public Member Functions

static vtkLineWidgetNew ()
static int IsTypeOf (const char *type)
static vtkLineWidgetSafeDownCast (vtkObject *o)

Protected Types

enum  WidgetState {
  Start = 0, MovingHandle, MovingLine, Scaling,
  Outside
}
enum  AlignmentState { XAxis, YAxis, ZAxis, None }

Protected Member Functions

 vtkLineWidget ()
 ~vtkLineWidget ()
void OnLeftButtonDown ()
void OnLeftButtonUp ()
void OnMiddleButtonDown ()
void OnMiddleButtonUp ()
void OnRightButtonDown ()
void OnRightButtonUp ()
virtual void OnMouseMove ()
void HighlightLine (int highlight)
void BuildRepresentation ()
virtual void SizeHandles ()
void HandlesOn (double length)
void HandlesOff ()
int HighlightHandle (vtkProp *prop)
void HighlightHandles (int highlight)
void SetLinePosition (double x[3])
void Scale (double *p1, double *p2, int X, int Y)
void ClampPosition (double x[3])
int InBounds (double x[3])
void CreateDefaultProperties ()
void GenerateLine ()
void EnablePointWidget ()
void DisablePointWidget ()
int ForwardEvent (unsigned long event)

Static Protected Member Functions

static void ProcessEvents (vtkObject *object, unsigned long event, void *clientdata, void *calldata)

Protected Attributes

int State
int Align
vtkActorLineActor
vtkPolyDataMapperLineMapper
vtkLineSourceLineSource
vtkActor ** Handle
vtkPolyDataMapper ** HandleMapper
vtkSphereSource ** HandleGeometry
vtkCellPickerHandlePicker
vtkCellPickerLinePicker
vtkActorCurrentHandle
double LastPosition [3]
int ClampToBounds
vtkPropertyHandleProperty
vtkPropertySelectedHandleProperty
vtkPropertyLineProperty
vtkPropertySelectedLineProperty
vtkPointWidgetPointWidget
vtkPointWidgetPointWidget1
vtkPointWidgetPointWidget2
vtkPWCallback * PWCallback
vtkPW1Callback * PW1Callback
vtkPW2Callback * PW2Callback
vtkPointWidgetCurrentPointWidget

Friends

class vtkPWCallback


Member Typedef Documentation

typedef vtk3DWidget vtkLineWidget::Superclass
 

Reimplemented from vtk3DWidget.

Definition at line 104 of file vtkLineWidget.h.


Member Enumeration Documentation

enum vtkLineWidget::WidgetState [protected]
 

Enumerator:
Start 
MovingHandle 
MovingLine 
Scaling 
Outside 

Definition at line 201 of file vtkLineWidget.h.

enum vtkLineWidget::AlignmentState [protected]
 

Enumerator:
XAxis 
YAxis 
ZAxis 
None 

Definition at line 230 of file vtkLineWidget.h.


Constructor & Destructor Documentation

vtkLineWidget::vtkLineWidget  )  [protected]
 

vtkLineWidget::~vtkLineWidget  )  [protected]
 


Member Function Documentation

static vtkLineWidget* vtkLineWidget::New  )  [static]
 

Instantiate the object.

Reimplemented from vtkObject.

virtual const char* vtkLineWidget::GetClassName  )  [virtual]
 

Reimplemented from vtk3DWidget.

static int vtkLineWidget::IsTypeOf const char *  type  )  [static]
 

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtk3DWidget.

virtual int vtkLineWidget::IsA const char *  type  )  [virtual]
 

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtk3DWidget.

static vtkLineWidget* vtkLineWidget::SafeDownCast vtkObject o  )  [static]
 

Reimplemented from vtk3DWidget.

void vtkLineWidget::PrintSelf ostream &  os,
vtkIndent  indent
[virtual]
 

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtk3DWidget.

virtual void vtkLineWidget::SetEnabled int   )  [virtual]
 

Methods that satisfy the superclass' API.

Reimplemented from vtkInteractorObserver.

virtual void vtkLineWidget::PlaceWidget double  bounds[6]  )  [virtual]
 

This method is used to initially place the widget. The placement of the widget depends on whether a Prop3D or input dataset is provided. If one of these two is provided, they will be used to obtain a bounding box, around which the widget is placed. Otherwise, you can manually specify a bounds with the PlaceWidget(bounds) method. Note: PlaceWidget(bounds) is required by all subclasses; the other methods are provided as convenience methods.

Implements vtk3DWidget.

void vtkLineWidget::PlaceWidget  )  [inline, virtual]
 

Reimplemented from vtk3DWidget.

Definition at line 111 of file vtkLineWidget.h.

void vtkLineWidget::PlaceWidget double  xmin,
double  xmax,
double  ymin,
double  ymax,
double  zmin,
double  zmax
[inline, virtual]
 

Reimplemented from vtk3DWidget.

Definition at line 113 of file vtkLineWidget.h.

void vtkLineWidget::SetResolution int  r  )  [inline]
 

Set/Get the resolution (number of subdivisions) of the line.

Definition at line 120 of file vtkLineWidget.h.

int vtkLineWidget::GetResolution  )  [inline]
 

Set/Get the resolution (number of subdivisions) of the line.

Definition at line 122 of file vtkLineWidget.h.

void vtkLineWidget::SetPoint1 double  x,
double  y,
double  z
 

Set/Get the position of first end point.

void vtkLineWidget::SetPoint1 double  x[3]  )  [inline]
 

Set/Get the position of first end point.

Definition at line 129 of file vtkLineWidget.h.

double* vtkLineWidget::GetPoint1  )  [inline]
 

Set/Get the position of first end point.

Definition at line 131 of file vtkLineWidget.h.

void vtkLineWidget::GetPoint1 double  xyz[3]  )  [inline]
 

Set/Get the position of first end point.

Definition at line 133 of file vtkLineWidget.h.

void vtkLineWidget::SetPoint2 double  x,
double  y,
double  z
 

Set position of other end point.

void vtkLineWidget::SetPoint2 double  x[3]  )  [inline]
 

Set position of other end point.

Definition at line 140 of file vtkLineWidget.h.

double* vtkLineWidget::GetPoint2  )  [inline]
 

Set position of other end point.

Definition at line 142 of file vtkLineWidget.h.

void vtkLineWidget::GetPoint2 double  xyz[3]  )  [inline]
 

Set position of other end point.

Definition at line 144 of file vtkLineWidget.h.

virtual void vtkLineWidget::SetAlign int   )  [virtual]
 

Force the line widget to be aligned with one of the x-y-z axes. Remember that when the state changes, a ModifiedEvent is invoked. This can be used to snap the line to the axes if it is orginally not aligned.

virtual int vtkLineWidget::GetAlign  )  [virtual]
 

Force the line widget to be aligned with one of the x-y-z axes. Remember that when the state changes, a ModifiedEvent is invoked. This can be used to snap the line to the axes if it is orginally not aligned.

void vtkLineWidget::SetAlignToXAxis  )  [inline]
 

Force the line widget to be aligned with one of the x-y-z axes. Remember that when the state changes, a ModifiedEvent is invoked. This can be used to snap the line to the axes if it is orginally not aligned.

Definition at line 155 of file vtkLineWidget.h.

void vtkLineWidget::SetAlignToYAxis  )  [inline]
 

Force the line widget to be aligned with one of the x-y-z axes. Remember that when the state changes, a ModifiedEvent is invoked. This can be used to snap the line to the axes if it is orginally not aligned.

Definition at line 156 of file vtkLineWidget.h.

void vtkLineWidget::SetAlignToZAxis  )  [inline]
 

Force the line widget to be aligned with one of the x-y-z axes. Remember that when the state changes, a ModifiedEvent is invoked. This can be used to snap the line to the axes if it is orginally not aligned.

Definition at line 157 of file vtkLineWidget.h.

void vtkLineWidget::SetAlignToNone  )  [inline]
 

Force the line widget to be aligned with one of the x-y-z axes. Remember that when the state changes, a ModifiedEvent is invoked. This can be used to snap the line to the axes if it is orginally not aligned.

Definition at line 158 of file vtkLineWidget.h.

virtual void vtkLineWidget::SetClampToBounds int   )  [virtual]
 

Enable/disable clamping of the point end points to the bounding box of the data. The bounding box is defined from the last PlaceWidget() invocation, and includes the effect of the PlaceFactor which is used to gram/shrink the bounding box.

virtual int vtkLineWidget::GetClampToBounds  )  [virtual]
 

Enable/disable clamping of the point end points to the bounding box of the data. The bounding box is defined from the last PlaceWidget() invocation, and includes the effect of the PlaceFactor which is used to gram/shrink the bounding box.

virtual void vtkLineWidget::ClampToBoundsOn  )  [virtual]
 

Enable/disable clamping of the point end points to the bounding box of the data. The bounding box is defined from the last PlaceWidget() invocation, and includes the effect of the PlaceFactor which is used to gram/shrink the bounding box.

virtual void vtkLineWidget::ClampToBoundsOff  )  [virtual]
 

Enable/disable clamping of the point end points to the bounding box of the data. The bounding box is defined from the last PlaceWidget() invocation, and includes the effect of the PlaceFactor which is used to gram/shrink the bounding box.

void vtkLineWidget::GetPolyData vtkPolyData pd  ) 
 

Grab the polydata (including points) that defines the line. The polydata consists of n+1 points, where n is the resolution of the line. These point values are guaranteed to be up-to-date when either the InteractionEvent or EndInteraction events are invoked. The user provides the vtkPolyData and the points and polyline are added to it.

virtual vtkProperty* vtkLineWidget::GetHandleProperty  )  [virtual]
 

Get the handle properties (the little balls are the handles). The properties of the handles when selected and normal can be manipulated.

virtual vtkProperty* vtkLineWidget::GetSelectedHandleProperty  )  [virtual]
 

Grab the polydata (including points) that defines the line. The polydata consists of n+1 points, where n is the resolution of the line. These point values are guaranteed to be up-to-date when either the InteractionEvent or EndInteraction events are invoked. The user provides the vtkPolyData and the points and polyline are added to it.

virtual vtkProperty* vtkLineWidget::GetLineProperty  )  [virtual]
 

Get the line properties. The properties of the line when selected and unselected can be manipulated.

virtual vtkProperty* vtkLineWidget::GetSelectedLineProperty  )  [virtual]
 

Get the line properties. The properties of the line when selected and unselected can be manipulated.

static void vtkLineWidget::ProcessEvents vtkObject object,
unsigned long  event,
void *  clientdata,
void *  calldata
[static, protected]
 

Handles the char widget activation event. Also handles the delete event.

Reimplemented from vtkInteractorObserver.

void vtkLineWidget::OnLeftButtonDown  )  [protected]
 

void vtkLineWidget::OnLeftButtonUp  )  [protected]
 

void vtkLineWidget::OnMiddleButtonDown  )  [protected]
 

void vtkLineWidget::OnMiddleButtonUp  )  [protected]
 

void vtkLineWidget::OnRightButtonDown  )  [protected]
 

void vtkLineWidget::OnRightButtonUp  )  [protected]
 

virtual void vtkLineWidget::OnMouseMove  )  [protected, virtual]
 

void vtkLineWidget::HighlightLine int  highlight  )  [protected]
 

void vtkLineWidget::BuildRepresentation  )  [protected]
 

virtual void vtkLineWidget::SizeHandles  )  [protected, virtual]
 

Reimplemented from vtk3DWidget.

void vtkLineWidget::HandlesOn double  length  )  [protected]
 

void vtkLineWidget::HandlesOff  )  [protected]
 

int vtkLineWidget::HighlightHandle vtkProp prop  )  [protected]
 

void vtkLineWidget::HighlightHandles int  highlight  )  [protected]
 

void vtkLineWidget::SetLinePosition double  x[3]  )  [protected]
 

void vtkLineWidget::Scale double *  p1,
double *  p2,
int  X,
int  Y
[protected]
 

void vtkLineWidget::ClampPosition double  x[3]  )  [protected]
 

int vtkLineWidget::InBounds double  x[3]  )  [protected]
 

void vtkLineWidget::CreateDefaultProperties  )  [protected]
 

void vtkLineWidget::GenerateLine  )  [protected]
 

void vtkLineWidget::EnablePointWidget  )  [protected]
 

void vtkLineWidget::DisablePointWidget  )  [protected]
 

int vtkLineWidget::ForwardEvent unsigned long  event  )  [protected]
 


Friends And Related Function Documentation

friend class vtkPWCallback [friend]
 

Definition at line 198 of file vtkLineWidget.h.


Member Data Documentation

int vtkLineWidget::State [protected]
 

Definition at line 200 of file vtkLineWidget.h.

int vtkLineWidget::Align [protected]
 

Definition at line 227 of file vtkLineWidget.h.

vtkActor* vtkLineWidget::LineActor [protected]
 

Definition at line 239 of file vtkLineWidget.h.

vtkPolyDataMapper* vtkLineWidget::LineMapper [protected]
 

Definition at line 240 of file vtkLineWidget.h.

vtkLineSource* vtkLineWidget::LineSource [protected]
 

Definition at line 241 of file vtkLineWidget.h.

vtkActor** vtkLineWidget::Handle [protected]
 

Definition at line 245 of file vtkLineWidget.h.

vtkPolyDataMapper** vtkLineWidget::HandleMapper [protected]
 

Definition at line 246 of file vtkLineWidget.h.

vtkSphereSource** vtkLineWidget::HandleGeometry [protected]
 

Definition at line 247 of file vtkLineWidget.h.

vtkCellPicker* vtkLineWidget::HandlePicker [protected]
 

Definition at line 257 of file vtkLineWidget.h.

vtkCellPicker* vtkLineWidget::LinePicker [protected]
 

Definition at line 258 of file vtkLineWidget.h.

vtkActor* vtkLineWidget::CurrentHandle [protected]
 

Definition at line 259 of file vtkLineWidget.h.

double vtkLineWidget::LastPosition[3] [protected]
 

Definition at line 260 of file vtkLineWidget.h.

int vtkLineWidget::ClampToBounds [protected]
 

Definition at line 267 of file vtkLineWidget.h.

vtkProperty* vtkLineWidget::HandleProperty [protected]
 

Definition at line 273 of file vtkLineWidget.h.

vtkProperty* vtkLineWidget::SelectedHandleProperty [protected]
 

Definition at line 274 of file vtkLineWidget.h.

vtkProperty* vtkLineWidget::LineProperty [protected]
 

Definition at line 275 of file vtkLineWidget.h.

vtkProperty* vtkLineWidget::SelectedLineProperty [protected]
 

Definition at line 276 of file vtkLineWidget.h.

vtkPointWidget* vtkLineWidget::PointWidget [protected]
 

Definition at line 282 of file vtkLineWidget.h.

vtkPointWidget* vtkLineWidget::PointWidget1 [protected]
 

Definition at line 283 of file vtkLineWidget.h.

vtkPointWidget* vtkLineWidget::PointWidget2 [protected]
 

Definition at line 284 of file vtkLineWidget.h.

vtkPWCallback* vtkLineWidget::PWCallback [protected]
 

Definition at line 285 of file vtkLineWidget.h.

vtkPW1Callback* vtkLineWidget::PW1Callback [protected]
 

Definition at line 286 of file vtkLineWidget.h.

vtkPW2Callback* vtkLineWidget::PW2Callback [protected]
 

Definition at line 287 of file vtkLineWidget.h.

vtkPointWidget* vtkLineWidget::CurrentPointWidget [protected]
 

Definition at line 288 of file vtkLineWidget.h.


The documentation for this class was generated from the following file:
Generated on Mon Jan 21 23:59:01 2008 for VTK by  doxygen 1.4.3-20050530