VTK
vtkLineRepresentation.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkLineRepresentation.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=========================================================================*/
41#ifndef vtkLineRepresentation_h
42#define vtkLineRepresentation_h
43
44#include "vtkInteractionWidgetsModule.h" // For export macro
46
47class vtkActor;
48class vtkConeSource;
50class vtkLineSource;
51class vtkProperty;
52class vtkPolyData;
55class vtkBox;
56class vtkFollower;
57class vtkVectorText;
59class vtkCellPicker;
60
61class VTKINTERACTIONWIDGETS_EXPORT vtkLineRepresentation : public vtkWidgetRepresentation
62{
63public:
68
70
74 void PrintSelf(ostream& os, vtkIndent indent);
76
78
83 void GetPoint1WorldPosition(double pos[3]);
85 void GetPoint1DisplayPosition(double pos[3]);
87 void SetPoint1WorldPosition(double pos[3]);
88 void SetPoint1DisplayPosition(double pos[3]);
89 void GetPoint2DisplayPosition(double pos[3]);
91 void GetPoint2WorldPosition(double pos[3]);
93 void SetPoint2WorldPosition(double pos[3]);
94 void SetPoint2DisplayPosition(double pos[3]);
96
98
111
113
116 vtkGetObjectMacro(Point1Representation,vtkPointHandleRepresentation3D);
117 vtkGetObjectMacro(Point2Representation,vtkPointHandleRepresentation3D);
118 vtkGetObjectMacro(LineHandleRepresentation,vtkPointHandleRepresentation3D);
120
122
126 vtkGetObjectMacro(EndPointProperty,vtkProperty);
127 vtkGetObjectMacro(SelectedEndPointProperty,vtkProperty);
129
131
135 vtkGetObjectMacro(EndPoint2Property,vtkProperty);
136 vtkGetObjectMacro(SelectedEndPoint2Property,vtkProperty);
138
140
144 vtkGetObjectMacro(LineProperty,vtkProperty);
145 vtkGetObjectMacro(SelectedLineProperty,vtkProperty);
147
149
154 vtkSetClampMacro(Tolerance,int,1,100);
155 vtkGetMacro(Tolerance,int);
157
159
164 void SetResolution(int res);
167
177
179
182 virtual void PlaceWidget(double bounds[6]);
183 virtual void BuildRepresentation();
184 virtual int ComputeInteractionState(int X, int Y, int modify=0);
185 virtual void StartWidgetInteraction(double e[2]);
186 virtual void WidgetInteraction(double e[2]);
187 virtual double *GetBounds();
189
191
194 virtual void GetActors(vtkPropCollection *pc);
200
201 // Manage the state of the widget
202 enum {Outside=0,OnP1,OnP2,TranslatingP1,TranslatingP2,OnLine,Scaling};
203
205
214 vtkSetClampMacro(InteractionState,int,Outside,Scaling);
216
218
222 virtual void SetRepresentationState(int);
223 vtkGetMacro(RepresentationState, int);
225
227
231 void SetDirectionalLine(bool val);
232 vtkGetMacro(DirectionalLine, bool);
233 vtkBooleanMacro(DirectionalLine, bool);
235
241
245 virtual void SetRenderer(vtkRenderer *ren);
246
248
251 vtkSetMacro( DistanceAnnotationVisibility, int );
252 vtkGetMacro( DistanceAnnotationVisibility, int );
253 vtkBooleanMacro( DistanceAnnotationVisibility, int );
255
257
262 vtkSetStringMacro(DistanceAnnotationFormat);
263 vtkGetStringMacro(DistanceAnnotationFormat);
265
267
270 void SetDistanceAnnotationScale(double x, double y, double z)
271 {
272 double scale[3];
273 scale[0] = x;
274 scale[1] = y;
275 scale[2] = z;
276 this->SetDistanceAnnotationScale(scale);
277 }
278 virtual void SetDistanceAnnotationScale( double scale[3] );
279 virtual double * GetDistanceAnnotationScale();
281
285 double GetDistance();
286
287
292 void SetLineColor(double r, double g, double b);
293
298
300
303 vtkGetObjectMacro(TextActor, vtkFollower);
305
306 enum { RestrictNone = 0, RestrictToX, RestrictToY, RestrictToZ };
307
312 vtkSetClampMacro(RestrictFlag, int, RestrictNone, RestrictToZ);
313
314protected:
317
318 // The handle and the rep used to close the handles
323
324 // Manage how the representation appears
327
328 // the line
332
333 // glyphs representing hot spots (e.g., handles)
337
338 // Properties used to control the appearance of selected objects and
339 // the manipulator in general.
347
348 // Selection tolerance for the handles and the line
350
351 // Helper members
353 void ClampPosition(double x[3]);
354 void HighlightPoint(int ptId, int highlight);
355 void HighlightLine(int highlight);
356 int InBounds(double x[3]);
358
359 // Ivars used during widget interaction to hold initial positions
360 double StartP1[3];
361 double StartP2[3];
362 double StartLineHandle[3];
363 double Length;
364 double LastEventPosition[3];
365
366 // Support GetBounds() method
368
369 // Need to keep track if we have successfully initialized the display position.
370 // The widget tends to do stuff in world coordinates, put if the renderer has
371 // not been assigned, then certain operations do not properly update the display
372 // position.
374
375 // Format for the label
378
382 double Distance;
384
386
388
389private:
390 vtkLineRepresentation(const vtkLineRepresentation&) VTK_DELETE_FUNCTION;
391 void operator=(const vtkLineRepresentation&) VTK_DELETE_FUNCTION;
392};
393
394#endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:52
implicit function for a bounding box
Definition: vtkBox.h:42
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:70
generate polygonal cone
Definition: vtkConeSource.h:45
a subclass of actor that always faces the camera
Definition: vtkFollower.h:47
a simple class to control print indentation
Definition: vtkIndent.h:40
a class defining the representation for a vtkLineWidget2
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual int RenderOpaqueGeometry(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
void SetDirectionalLine(bool val)
Sets the representation to be a directional line with point 1 represented as a cone.
virtual vtkMTimeType GetMTime()
Overload the superclasses' GetMTime() because internal classes are used to keep the state of the repr...
void InstantiateHandleRepresentation()
vtkPolyDataMapper * TextMapper
static vtkLineRepresentation * New()
Instantiate the class.
virtual void SetDistanceAnnotationScale(double scale[3])
virtual void PlaceWidget(double bounds[6])
These are methods that satisfy vtkWidgetRepresentation's API.
virtual void BuildRepresentation()
virtual double * GetBounds()
Methods to make this class behave as a vtkProp.
void GetPoint2DisplayPosition(double pos[3])
void SetDistanceAnnotationScale(double x, double y, double z)
Scale text (font size along each dimension).
vtkProperty * SelectedEndPointProperty
vtkPointHandleRepresentation3D * Point1Representation
void ClampPosition(double x[3])
virtual void SetRepresentationState(int)
Sets the visual appearance of the representation based on the state it is in.
void GetPoint2WorldPosition(double pos[3])
void SetPoint1DisplayPosition(double pos[3])
void SetResolution(int res)
Set/Get the resolution (number of subdivisions) of the line.
vtkPolyDataMapper * LineMapper
vtkPointHandleRepresentation3D * LineHandleRepresentation
void SetPoint1WorldPosition(double pos[3])
double * GetPoint1WorldPosition()
double * GetPoint1DisplayPosition()
virtual void WidgetInteraction(double e[2])
void GetPoint1DisplayPosition(double pos[3])
void SetHandleRepresentation(vtkPointHandleRepresentation3D *handle)
This method is used to specify the type of handle representation to use for the three internal vtkHan...
void SetLineColor(double r, double g, double b)
Convenience method to set the line color.
double * GetPoint2DisplayPosition()
vtkPolyDataAlgorithm ** HandleGeometry
virtual void SetRenderer(vtkRenderer *ren)
Overridden to set the rendererer on the internal representations.
virtual double * GetDistanceAnnotationScale()
virtual void GetActors(vtkPropCollection *pc)
Methods supporting the rendering process.
virtual vtkProperty * GetDistanceAnnotationProperty()
Get the distance annotation property.
virtual int HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
void HighlightLine(int highlight)
virtual void ReleaseGraphicsResources(vtkWindow *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
void HighlightPoint(int ptId, int highlight)
void GetPolyData(vtkPolyData *pd)
Retrieve the polydata (including points) that defines the line.
virtual void StartWidgetInteraction(double e[2])
double GetDistance()
Get the distance between the points.
vtkPointHandleRepresentation3D * Point2Representation
virtual int ComputeInteractionState(int X, int Y, int modify=0)
vtkPointHandleRepresentation3D * HandleRepresentation
double * GetPoint2WorldPosition()
vtkPolyDataMapper ** HandleMapper
void SetPoint2DisplayPosition(double pos[3])
void SetPoint2WorldPosition(double pos[3])
vtkProperty * SelectedEndPoint2Property
void GetPoint1WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the two points defining this representation.
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
int InBounds(double x[3])
create a line defined by two end points
Definition: vtkLineSource.h:43
represent the position of a point in 3D space
Superclass for algorithms that produce only polydata as output.
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
a list of Props
represent surface properties of a geometric object
Definition: vtkProperty.h:65
abstract specification for renderers
Definition: vtkRenderer.h:64
create polygonal text
Definition: vtkVectorText.h:48
abstract specification for Viewports
Definition: vtkViewport.h:48
abstract class defines interface between the widget and widget representation classes
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
@ scale
Definition: vtkX3D.h:229
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248