VTK  9.0.1
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 =========================================================================*/
38 #ifndef vtkLineRepresentation_h
39 #define vtkLineRepresentation_h
40 
41 #include "vtkInteractionWidgetsModule.h" // For export macro
43 
44 class vtkActor;
45 class vtkConeSource;
46 class vtkPolyDataMapper;
47 class vtkLineSource;
48 class vtkProperty;
49 class vtkPolyData;
52 class vtkBox;
53 class vtkFollower;
54 class vtkVectorText;
55 class vtkPolyDataMapper;
56 class vtkCellPicker;
57 
58 class VTKINTERACTIONWIDGETS_EXPORT vtkLineRepresentation : public vtkWidgetRepresentation
59 {
60 public:
64  static vtkLineRepresentation* New();
65 
67 
71  void PrintSelf(ostream& os, vtkIndent indent) override;
73 
75 
80  void GetPoint1WorldPosition(double pos[3]);
81  double* GetPoint1WorldPosition() VTK_SIZEHINT(3);
82  void GetPoint1DisplayPosition(double pos[3]);
83  double* GetPoint1DisplayPosition() VTK_SIZEHINT(3);
84  void SetPoint1WorldPosition(double pos[3]);
85  void SetPoint1DisplayPosition(double pos[3]);
86  void GetPoint2DisplayPosition(double pos[3]);
87  double* GetPoint2DisplayPosition() VTK_SIZEHINT(3);
88  void GetPoint2WorldPosition(double pos[3]);
89  double* GetPoint2WorldPosition() VTK_SIZEHINT(3);
90  void SetPoint2WorldPosition(double pos[3]);
91  void SetPoint2DisplayPosition(double pos[3]);
93 
95 
105  void SetHandleRepresentation(vtkPointHandleRepresentation3D* handle);
106  void InstantiateHandleRepresentation();
108 
110 
113  vtkGetObjectMacro(Point1Representation, vtkPointHandleRepresentation3D);
114  vtkGetObjectMacro(Point2Representation, vtkPointHandleRepresentation3D);
115  vtkGetObjectMacro(LineHandleRepresentation, vtkPointHandleRepresentation3D);
117 
119 
123  vtkGetObjectMacro(EndPointProperty, vtkProperty);
124  vtkGetObjectMacro(SelectedEndPointProperty, vtkProperty);
126 
128 
132  vtkGetObjectMacro(EndPoint2Property, vtkProperty);
133  vtkGetObjectMacro(SelectedEndPoint2Property, vtkProperty);
135 
137 
141  vtkGetObjectMacro(LineProperty, vtkProperty);
142  vtkGetObjectMacro(SelectedLineProperty, vtkProperty);
144 
146 
151  vtkSetClampMacro(Tolerance, int, 1, 100);
152  vtkGetMacro(Tolerance, int);
154 
156 
161  void SetResolution(int res);
162  int GetResolution();
164 
173  void GetPolyData(vtkPolyData* pd);
174 
176 
179  void PlaceWidget(double bounds[6]) override;
180  void BuildRepresentation() override;
181  int ComputeInteractionState(int X, int Y, int modify = 0) override;
182  void StartWidgetInteraction(double e[2]) override;
183  void WidgetInteraction(double e[2]) override;
184  double* GetBounds() VTK_SIZEHINT(6) override;
186 
188 
191  void GetActors(vtkPropCollection* pc) override;
192  void ReleaseGraphicsResources(vtkWindow*) override;
193  int RenderOpaqueGeometry(vtkViewport*) override;
194  int RenderTranslucentPolygonalGeometry(vtkViewport*) override;
195  vtkTypeBool HasTranslucentPolygonalGeometry() override;
197 
198  // Manage the state of the widget
199  enum
200  {
201  Outside = 0,
207  Scaling
208  };
209 
211 
220  vtkSetClampMacro(InteractionState, int, Outside, Scaling);
222 
224 
228  virtual void SetRepresentationState(int);
229  vtkGetMacro(RepresentationState, int);
231 
233 
237  void SetDirectionalLine(bool val);
238  vtkGetMacro(DirectionalLine, bool);
239  vtkBooleanMacro(DirectionalLine, bool);
241 
246  vtkMTimeType GetMTime() override;
247 
251  void SetRenderer(vtkRenderer* ren) override;
252 
254 
257  vtkSetMacro(DistanceAnnotationVisibility, vtkTypeBool);
258  vtkGetMacro(DistanceAnnotationVisibility, vtkTypeBool);
259  vtkBooleanMacro(DistanceAnnotationVisibility, vtkTypeBool);
261 
263 
268  vtkSetStringMacro(DistanceAnnotationFormat);
269  vtkGetStringMacro(DistanceAnnotationFormat);
271 
273 
276  void SetDistanceAnnotationScale(double x, double y, double z)
277  {
278  double scale[3];
279  scale[0] = x;
280  scale[1] = y;
281  scale[2] = z;
282  this->SetDistanceAnnotationScale(scale);
283  }
284  virtual void SetDistanceAnnotationScale(double scale[3]);
285  virtual double* GetDistanceAnnotationScale() VTK_SIZEHINT(3);
287 
291  double GetDistance();
292 
297  void SetLineColor(double r, double g, double b);
298 
302  virtual vtkProperty* GetDistanceAnnotationProperty();
303 
305 
308  vtkGetObjectMacro(TextActor, vtkFollower);
310 
311  enum
312  {
313  RestrictNone = 0,
316  RestrictToZ
317  };
318 
323  VTK_LEGACY(void SetRestrictFlag(int restrict_flag));
324 
325 protected:
327  ~vtkLineRepresentation() override;
328 
329  // The handle and the rep used to close the handles
334 
335  // Manage how the representation appears
338 
339  // the line
343 
344  // glyphs representing hot spots (e.g., handles)
348 
349  // Properties used to control the appearance of selected objects and
350  // the manipulator in general.
357  void CreateDefaultProperties();
358 
359  // Selection tolerance for the handles and the line
361 
362  // Helper members
364  void ClampPosition(double x[3]);
365  void HighlightPoint(int ptId, int highlight);
366  void HighlightLine(int highlight);
367  int InBounds(double x[3]);
368  void SizeHandles();
369 
370  // Ivars used during widget interaction to hold initial positions
371  double StartP1[3];
372  double StartP2[3];
373  double StartLineHandle[3];
374  double Length;
375  double LastEventPosition[3];
376 
377  // Support GetBounds() method
379 
380  // Need to keep track if we have successfully initialized the display position.
381  // The widget tends to do stuff in world coordinates, put if the renderer has
382  // not been assigned, then certain operations do not properly update the display
383  // position.
385 
386  // Format for the label
389 
393  double Distance;
395 
397 
398 private:
400  void operator=(const vtkLineRepresentation&) = delete;
401 };
402 
403 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:36
vtkLineRepresentation::RestrictToY
@ RestrictToY
Definition: vtkLineRepresentation.h:315
vtkLineRepresentation::HandleRepresentation
vtkPointHandleRepresentation3D * HandleRepresentation
Definition: vtkLineRepresentation.h:330
vtkLineRepresentation::Point2Representation
vtkPointHandleRepresentation3D * Point2Representation
Definition: vtkLineRepresentation.h:332
vtkWidgetRepresentation.h
vtkLineRepresentation::HandleMapper
vtkPolyDataMapper ** HandleMapper
Definition: vtkLineRepresentation.h:346
vtkLineRepresentation::EndPoint2Property
vtkProperty * EndPoint2Property
Definition: vtkLineRepresentation.h:353
vtkFollower
a subclass of actor that always faces the camera
Definition: vtkFollower.h:40
vtkLineRepresentation::DirectionalLine
bool DirectionalLine
Definition: vtkLineRepresentation.h:337
vtkLineRepresentation::SetDistanceAnnotationScale
void SetDistanceAnnotationScale(double x, double y, double z)
Scale text (font size along each dimension).
Definition: vtkLineRepresentation.h:276
vtkLineRepresentation::ClampToBounds
int ClampToBounds
Definition: vtkLineRepresentation.h:363
vtkLineRepresentation::TextActor
vtkFollower * TextActor
Definition: vtkLineRepresentation.h:390
vtkX3D::scale
@ scale
Definition: vtkX3D.h:235
vtkLineRepresentation::LineHandleRepresentation
vtkPointHandleRepresentation3D * LineHandleRepresentation
Definition: vtkLineRepresentation.h:333
vtkLineRepresentation::BoundingBox
vtkBox * BoundingBox
Definition: vtkLineRepresentation.h:378
vtkPointHandleRepresentation3D
represent the position of a point in 3D space
Definition: vtkPointHandleRepresentation3D.h:40
vtkWidgetRepresentation::SetRenderer
virtual void SetRenderer(vtkRenderer *ren)
Subclasses of vtkWidgetRepresentation must implement these methods.
vtkLineRepresentation::OnP1
@ OnP1
Definition: vtkLineRepresentation.h:202
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkLineRepresentation::LineActor
vtkActor * LineActor
Definition: vtkLineRepresentation.h:340
vtkConeSource
generate polygonal cone
Definition: vtkConeSource.h:38
vtkWidgetRepresentation
abstract class defines interface between the widget and widget representation classes
Definition: vtkWidgetRepresentation.h:59
vtkLineRepresentation::RestrictToX
@ RestrictToX
Definition: vtkLineRepresentation.h:314
vtkLineRepresentation::AnnotationTextScaleInitialized
bool AnnotationTextScaleInitialized
Definition: vtkLineRepresentation.h:394
vtkVectorText
create polygonal text
Definition: vtkVectorText.h:41
vtkLineRepresentation::TextInput
vtkVectorText * TextInput
Definition: vtkLineRepresentation.h:392
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkLineRepresentation::SelectedLineProperty
vtkProperty * SelectedLineProperty
Definition: vtkLineRepresentation.h:356
vtkLineRepresentation::DistanceAnnotationFormat
char * DistanceAnnotationFormat
Definition: vtkLineRepresentation.h:388
vtkLineRepresentation::Length
double Length
Definition: vtkLineRepresentation.h:374
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkLineRepresentation::Tolerance
int Tolerance
Definition: vtkLineRepresentation.h:360
vtkObject::GetMTime
virtual vtkMTimeType GetMTime()
Return this object's modified time.
vtkLineRepresentation::OnP2
@ OnP2
Definition: vtkLineRepresentation.h:203
vtkLineRepresentation::LineProperty
vtkProperty * LineProperty
Definition: vtkLineRepresentation.h:355
vtkLineRepresentation::LinePicker
vtkCellPicker * LinePicker
Definition: vtkLineRepresentation.h:396
vtkLineRepresentation::EndPointProperty
vtkProperty * EndPointProperty
Definition: vtkLineRepresentation.h:351
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkLineRepresentation::TranslatingP1
@ TranslatingP1
Definition: vtkLineRepresentation.h:204
vtkLineRepresentation::Point1Representation
vtkPointHandleRepresentation3D * Point1Representation
Definition: vtkLineRepresentation.h:331
vtkLineSource
create a line defined by two end points
Definition: vtkLineSource.h:60
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:44
vtkLineRepresentation::TranslatingP2
@ TranslatingP2
Definition: vtkLineRepresentation.h:205
vtkLineRepresentation::Handle
vtkActor ** Handle
Definition: vtkLineRepresentation.h:345
vtkLineRepresentation::TextMapper
vtkPolyDataMapper * TextMapper
Definition: vtkLineRepresentation.h:391
vtkBox
implicit function for a bounding box
Definition: vtkBox.h:38
vtkLineRepresentation::RepresentationState
int RepresentationState
Definition: vtkLineRepresentation.h:336
vtkLineRepresentation::OnLine
@ OnLine
Definition: vtkLineRepresentation.h:206
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:67
vtkLineRepresentation::HandleGeometry
vtkPolyDataAlgorithm ** HandleGeometry
Definition: vtkLineRepresentation.h:347
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkLineRepresentation::Distance
double Distance
Definition: vtkLineRepresentation.h:393
vtkLineRepresentation::LineSource
vtkLineSource * LineSource
Definition: vtkLineRepresentation.h:342
vtkLineRepresentation::DistanceAnnotationVisibility
vtkTypeBool DistanceAnnotationVisibility
Definition: vtkLineRepresentation.h:387
vtkProperty
represent surface properties of a geometric object
Definition: vtkProperty.h:61
vtkPropCollection
an ordered list of Props
Definition: vtkPropCollection.h:35
vtkLineRepresentation::SelectedEndPoint2Property
vtkProperty * SelectedEndPoint2Property
Definition: vtkLineRepresentation.h:354
vtkCellPicker
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:66
vtkLineRepresentation::SelectedEndPointProperty
vtkProperty * SelectedEndPointProperty
Definition: vtkLineRepresentation.h:352
vtkLineRepresentation
a class defining the representation for a vtkLineWidget2
Definition: vtkLineRepresentation.h:58
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:293
vtkWidgetRepresentation::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkLineRepresentation::InitializedDisplayPosition
int InitializedDisplayPosition
Definition: vtkLineRepresentation.h:384
vtkLineRepresentation::LineMapper
vtkPolyDataMapper * LineMapper
Definition: vtkLineRepresentation.h:341
vtkPolyDataAlgorithm
Superclass for algorithms that produce only polydata as output.
Definition: vtkPolyDataAlgorithm.h:41