VTK  9.3.0
vtkBiDimensionalRepresentation.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
31 #ifndef vtkBiDimensionalRepresentation_h
32 #define vtkBiDimensionalRepresentation_h
33 
34 #include "vtkInteractionWidgetsModule.h" // For export macro
36 
37 VTK_ABI_NAMESPACE_BEGIN
39 
40 class VTKINTERACTIONWIDGETS_EXPORT vtkBiDimensionalRepresentation : public vtkWidgetRepresentation
41 {
42 public:
44 
48  void PrintSelf(ostream& os, vtkIndent indent) override;
50 
52 
57  virtual void SetPoint1WorldPosition(double pos[3]);
58  virtual void SetPoint2WorldPosition(double pos[3]);
59  virtual void SetPoint3WorldPosition(double pos[3]);
60  virtual void SetPoint4WorldPosition(double pos[3]);
61  virtual void GetPoint1WorldPosition(double pos[3]);
62  virtual void GetPoint2WorldPosition(double pos[3]);
63  virtual void GetPoint3WorldPosition(double pos[3]);
64  virtual void GetPoint4WorldPosition(double pos[3]);
65  virtual void SetPoint1DisplayPosition(double pos[3]);
66  virtual void SetPoint2DisplayPosition(double pos[3]);
67  virtual void SetPoint3DisplayPosition(double pos[3]);
68  virtual void SetPoint4DisplayPosition(double pos[3]);
69  virtual void GetPoint1DisplayPosition(double pos[3]);
70  virtual void GetPoint2DisplayPosition(double pos[3]);
71  virtual void GetPoint3DisplayPosition(double pos[3]);
72  virtual void GetPoint4DisplayPosition(double pos[3]);
74 
76 
82  vtkGetObjectMacro(Point1Representation, vtkHandleRepresentation);
83  vtkGetObjectMacro(Point2Representation, vtkHandleRepresentation);
84  vtkGetObjectMacro(Point3Representation, vtkHandleRepresentation);
85  vtkGetObjectMacro(Point4Representation, vtkHandleRepresentation);
87 
89 
95  vtkSetMacro(Line1Visibility, vtkTypeBool);
96  vtkGetMacro(Line1Visibility, vtkTypeBool);
97  vtkBooleanMacro(Line1Visibility, vtkTypeBool);
98  vtkSetMacro(Line2Visibility, vtkTypeBool);
99  vtkGetMacro(Line2Visibility, vtkTypeBool);
100  vtkBooleanMacro(Line2Visibility, vtkTypeBool);
102 
104 
118 
120 
125  vtkSetClampMacro(Tolerance, int, 1, 100);
126  vtkGetMacro(Tolerance, int);
128 
133  virtual double GetLength1();
134 
139  virtual double GetLength2();
140 
142 
147  vtkSetStringMacro(LabelFormat);
148  vtkGetStringMacro(LabelFormat);
150 
151  // Used to communicate about the state of the representation
152  enum
153  {
154  Outside = 0,
163  OnCenter
164  };
165 
167 
171  vtkSetMacro(ShowLabelAboveWidget, vtkTypeBool);
172  vtkGetMacro(ShowLabelAboveWidget, vtkTypeBool);
173  vtkBooleanMacro(ShowLabelAboveWidget, vtkTypeBool);
175 
177 
180  void SetID(vtkIdType id);
181  vtkGetMacro(ID, vtkIdType);
183 
187  virtual char* GetLabelText() = 0;
188 
190 
193  virtual double* GetLabelPosition() = 0;
194  virtual void GetLabelPosition(double pos[3]) = 0;
195  virtual void GetWorldLabelPosition(double pos[3]) = 0;
197 
199 
202  virtual void StartWidgetDefinition(double e[2]) = 0;
203  virtual void Point2WidgetInteraction(double e[2]) = 0;
204  virtual void Point3WidgetInteraction(double e[2]) = 0;
205  virtual void StartWidgetManipulation(double e[2]) = 0;
207 
208 protected:
211 
212  // Keep track if modifier is set
213  int Modifier;
214 
215  // The handle and the rep used to close the handles
221 
222  // Selection tolerance for the handles
224 
225  // Visibility of the lines
228 
231 
232  // Internal variables
233  double P1World[3];
234  double P2World[3];
235  double P3World[3];
236  double P4World[3];
237  double P21World[3];
238  double P43World[3];
239  double T21;
240  double T43;
241  double CenterWorld[3];
242  double StartEventPositionWorld[4];
243 
244  // Format for printing the distance
245  char* LabelFormat;
246 
247  // toggle to determine whether to place text above or below widget
249 
250 private:
252  void operator=(const vtkBiDimensionalRepresentation&) = delete;
253 };
254 
255 VTK_ABI_NAMESPACE_END
256 #endif
represent the vtkBiDimensionalWidget
virtual void GetPoint2DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void SetPoint1DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual double GetLength2()
Return the length of the line defined by (Point3,Point4).
virtual void GetPoint1WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void StartWidgetManipulation(double e[2])=0
These are methods that satisfy vtkWidgetRepresentation's API.
virtual char * GetLabelText()=0
Get the text shown in the widget's label.
virtual void Point2WidgetInteraction(double e[2])=0
These are methods that satisfy vtkWidgetRepresentation's API.
void SetHandleRepresentation(vtkHandleRepresentation *handle)
This method is used to specify the type of handle representation to use for the four internal vtkHand...
virtual void SetPoint3DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void SetPoint2WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void GetPoint4DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void Point3WidgetInteraction(double e[2])=0
These are methods that satisfy vtkWidgetRepresentation's API.
~vtkBiDimensionalRepresentation() override
virtual void GetPoint2WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void SetPoint1WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual double * GetLabelPosition()=0
Get the position of the widget's label in display coordinates.
virtual void GetPoint4WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void StartWidgetDefinition(double e[2])=0
These are methods that satisfy vtkWidgetRepresentation's API.
virtual void SetPoint4DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void SetPoint2DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
void SetID(vtkIdType id)
Set/get the id to display in the label.
virtual void SetPoint3WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void GetPoint1DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void GetWorldLabelPosition(double pos[3])=0
Get the position of the widget's label in display coordinates.
virtual void GetPoint3WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void SetPoint4WorldPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void GetPoint3DisplayPosition(double pos[3])
Methods to Set/Get the coordinates of the four points defining this representation.
virtual void GetLabelPosition(double pos[3])=0
Get the position of the widget's label in display coordinates.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard VTK methods.
virtual double GetLength1()
Return the length of the line defined by (Point1,Point2).
virtual void InstantiateHandleRepresentation()
This method is used to specify the type of handle representation to use for the four internal vtkHand...
abstract class for representing widget handles
a simple class to control print indentation
Definition: vtkIndent.h:38
abstract class defines interface between the widget and widget representation classes
int vtkTypeBool
Definition: vtkABI.h:64
int vtkIdType
Definition: vtkType.h:315