VTK  9.3.20240327
vtkDistanceRepresentation.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
34 #ifndef vtkDistanceRepresentation_h
35 #define vtkDistanceRepresentation_h
36 
37 #include "vtkInteractionWidgetsModule.h" // For export macro
39 
40 VTK_ABI_NAMESPACE_BEGIN
42 
43 class VTKINTERACTIONWIDGETS_EXPORT vtkDistanceRepresentation : public vtkWidgetRepresentation
44 {
45 public:
47 
51  void PrintSelf(ostream& os, vtkIndent indent) override;
53 
58  virtual double GetDistance() = 0;
59 
61 
66  virtual void GetPoint1WorldPosition(double pos[3]) = 0;
67  virtual void GetPoint2WorldPosition(double pos[3]) = 0;
68  virtual double* GetPoint1WorldPosition() VTK_SIZEHINT(3) = 0;
69  virtual double* GetPoint2WorldPosition() VTK_SIZEHINT(3) = 0;
70  virtual void SetPoint1DisplayPosition(double pos[3]) = 0;
71  virtual void SetPoint2DisplayPosition(double pos[3]) = 0;
72  virtual void GetPoint1DisplayPosition(double pos[3]) = 0;
73  virtual void GetPoint2DisplayPosition(double pos[3]) = 0;
74  virtual void SetPoint1WorldPosition(double pos[3]) = 0;
75  virtual void SetPoint2WorldPosition(double pos[3]) = 0;
77 
79 
89  void SetHandleRepresentation(vtkHandleRepresentation* handle);
90  void InstantiateHandleRepresentation();
92 
94 
99  vtkGetObjectMacro(Point1Representation, vtkHandleRepresentation);
100  vtkGetObjectMacro(Point2Representation, vtkHandleRepresentation);
102 
104 
109  vtkSetClampMacro(Tolerance, int, 1, 100);
110  vtkGetMacro(Tolerance, int);
112 
114 
119  vtkSetStringMacro(LabelFormat);
120  vtkGetStringMacro(LabelFormat);
122 
124 
132  vtkSetMacro(Scale, double);
133  vtkGetMacro(Scale, double);
135 
137 
142  vtkSetMacro(RulerMode, vtkTypeBool);
143  vtkGetMacro(RulerMode, vtkTypeBool);
144  vtkBooleanMacro(RulerMode, vtkTypeBool);
146 
148 
152  vtkSetClampMacro(RulerDistance, double, 0, VTK_FLOAT_MAX);
153  vtkGetMacro(RulerDistance, double);
155 
157 
164  vtkSetClampMacro(NumberOfRulerTicks, int, 1, VTK_INT_MAX);
165  vtkGetMacro(NumberOfRulerTicks, int);
167 
168  // Used to communicate about the state of the representation
169  enum
170  {
171  Outside = 0,
173  NearP2
174  };
175 
177 
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;
185  unsigned long event, void* calldata) override;
187  unsigned long event, void* calldata) override;
189  unsigned long event, void* calldata, int modify = 0) override;
191 
192 protected:
195 
196  // The handle and the rep used to close the handles
200 
201  // Selection tolerance for the handles
203 
204  // Format for printing the distance
205  char* LabelFormat;
206 
207  // Scale to change from the VTK world coordinates to the desired coordinate
208  // system.
209  double Scale;
210 
211  // Ruler related stuff
215 
216 private:
218  void operator=(const vtkDistanceRepresentation&) = delete;
219 };
220 
221 VTK_ABI_NAMESPACE_END
222 #endif
define the API for widget / widget representation
represent the vtkDistanceWidget
int ComputeInteractionState(int X, int Y, int modify=0) override
These are methods that satisfy vtkWidgetRepresentation's API.
int ComputeComplexInteractionState(vtkRenderWindowInteractor *iren, vtkAbstractWidget *widget, unsigned long event, void *calldata, int modify=0) override
These are methods that satisfy vtkWidgetRepresentation's API.
virtual void GetPoint1WorldPosition(double pos[3])=0
Methods to Set/Get the coordinates of the two points defining this representation.
void StartComplexInteraction(vtkRenderWindowInteractor *iren, vtkAbstractWidget *widget, unsigned long event, void *calldata) override
These are methods that satisfy vtkWidgetRepresentation's API.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard VTK methods.
virtual double GetDistance()=0
This representation and all subclasses must keep a distance consistent with the state of the widget.
virtual void GetPoint2WorldPosition(double pos[3])=0
Methods to Set/Get the coordinates of the two points defining this representation.
vtkHandleRepresentation * Point2Representation
virtual double * GetPoint1WorldPosition()=0
Methods to Set/Get the coordinates of the two points defining this representation.
vtkHandleRepresentation * HandleRepresentation
~vtkDistanceRepresentation() override
void BuildRepresentation() override
These are methods that satisfy vtkWidgetRepresentation's API.
void WidgetInteraction(double e[2]) override
These are methods that satisfy vtkWidgetRepresentation's API.
vtkHandleRepresentation * Point1Representation
void ComplexInteraction(vtkRenderWindowInteractor *iren, vtkAbstractWidget *widget, unsigned long event, void *calldata) override
These are methods that satisfy vtkWidgetRepresentation's API.
void StartWidgetInteraction(double e[2]) override
These are methods that satisfy vtkWidgetRepresentation's API.
abstract class for representing widget handles
a simple class to control print indentation
Definition: vtkIndent.h:108
platform-independent render window interaction including picking and frame rate control.
abstract class defines interface between the widget and widget representation classes
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_INT_MAX
Definition: vtkType.h:144
#define VTK_FLOAT_MAX
Definition: vtkType.h:152
#define VTK_SIZEHINT(...)