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 
47 class vtkActor;
48 class vtkConeSource;
49 class vtkPolyDataMapper;
50 class vtkLineSource;
51 class vtkProperty;
52 class vtkPolyData;
55 class vtkBox;
56 class vtkFollower;
57 class vtkVectorText;
58 class vtkPolyDataMapper;
59 class vtkCellPicker;
60 
61 class VTKINTERACTIONWIDGETS_EXPORT vtkLineRepresentation : public vtkWidgetRepresentation
62 {
63 public:
67  static vtkLineRepresentation *New();
68 
70 
74  void PrintSelf(ostream& os, vtkIndent indent);
76 
78 
83  void GetPoint1WorldPosition(double pos[3]);
84  double* GetPoint1WorldPosition();
85  void GetPoint1DisplayPosition(double pos[3]);
86  double* GetPoint1DisplayPosition();
87  void SetPoint1WorldPosition(double pos[3]);
88  void SetPoint1DisplayPosition(double pos[3]);
89  void GetPoint2DisplayPosition(double pos[3]);
90  double* GetPoint2DisplayPosition();
91  void GetPoint2WorldPosition(double pos[3]);
92  double* GetPoint2WorldPosition();
93  void SetPoint2WorldPosition(double pos[3]);
94  void SetPoint2DisplayPosition(double pos[3]);
96 
98 
108  void SetHandleRepresentation(vtkPointHandleRepresentation3D *handle);
109  void InstantiateHandleRepresentation();
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);
165  int GetResolution();
167 
176  void GetPolyData(vtkPolyData *pd);
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);
195  virtual void ReleaseGraphicsResources(vtkWindow*);
196  virtual int RenderOpaqueGeometry(vtkViewport*);
198  virtual int HasTranslucentPolygonalGeometry();
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 
240  virtual vtkMTimeType GetMTime();
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 
297  virtual vtkProperty *GetDistanceAnnotationProperty();
298 
300 
303  vtkGetObjectMacro(TextActor, vtkFollower);
305 
306  enum { RestrictNone = 0, RestrictToX, RestrictToY, RestrictToZ };
307 
312  vtkSetClampMacro(RestrictFlag, int, RestrictNone, RestrictToZ);
313 
314 protected:
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.
346  void CreateDefaultProperties();
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]);
357  void SizeHandles();
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 
389 private:
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:51
virtual int ComputeInteractionState(int X, int Y, int modify=0)
represent the position of a point in 3D space
abstract specification for Viewports
Definition: vtkViewport.h:47
represent surface properties of a geometric object
Definition: vtkProperty.h:64
virtual void StartWidgetInteraction(double eventPos[2])
vtkPointHandleRepresentation3D * Point2Representation
virtual void SetRenderer(vtkRenderer *ren)
Subclasses of vtkWidgetRepresentation must implement these methods.
vtkPolyDataMapper ** HandleMapper
void SetDistanceAnnotationScale(double x, double y, double z)
Scale text (font size along each dimension).
vtkProperty * SelectedEndPoint2Property
vtkProperty * SelectedEndPointProperty
abstract specification for renderers
Definition: vtkRenderer.h:63
generate polygonal cone
Definition: vtkConeSource.h:44
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
vtkPolyDataMapper * TextMapper
virtual void ReleaseGraphicsResources(vtkWindow *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
abstract class defines interface between the widget and widget representation classes ...
virtual void BuildRepresentation()=0
Subclasses of vtkWidgetRepresentation must implement these methods.
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
a list of Props
vtkPointHandleRepresentation3D * Point1Representation
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkPointHandleRepresentation3D * HandleRepresentation
virtual double * GetBounds()
Methods to make this class behave as a vtkProp.
vtkPolyDataAlgorithm ** HandleGeometry
Superclass for algorithms that produce only polydata as output.
virtual int HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual vtkMTimeType GetMTime()
Return this object's modified time.
virtual void WidgetInteraction(double newEventPos[2])
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
vtkPolyDataMapper * LineMapper
virtual void GetActors(vtkPropCollection *)
For some exporters and other other operations we must be able to collect all the actors or volumes...
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
create a line defined by two end points
Definition: vtkLineSource.h:42
map vtkPolyData to graphics primitives
virtual int RenderOpaqueGeometry(vtkViewport *vtkNotUsed(viewport))
a subclass of actor that always faces the camera
Definition: vtkFollower.h:46
virtual void PlaceWidget(double *vtkNotUsed(bounds[6]))
The following is a suggested API for widget representations.
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:69
void PrintSelf(ostream &os, vtkIndent indent)
Standard methods for instances of this class.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
vtkPointHandleRepresentation3D * LineHandleRepresentation
implicit function for a bounding box
Definition: vtkBox.h:41
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport))
a class defining the representation for a vtkLineWidget2
create polygonal text
Definition: vtkVectorText.h:47