VTK
vtkHandleRepresentation.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkHandleRepresentation.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 =========================================================================*/
48 #ifndef vtkHandleRepresentation_h
49 #define vtkHandleRepresentation_h
50 
51 #include "vtkInteractionWidgetsModule.h" // For export macro
53 
54 class vtkCoordinate;
55 class vtkRenderer;
56 class vtkPointPlacer;
57 
58 class VTKINTERACTIONWIDGETS_EXPORT vtkHandleRepresentation : public vtkWidgetRepresentation
59 {
60 public:
62 
66  void PrintSelf(ostream& os, vtkIndent indent) override;
68 
70 
78  virtual void SetDisplayPosition(double pos[3]);
79  virtual void GetDisplayPosition(double pos[3]);
80  virtual double* GetDisplayPosition() VTK_SIZEHINT(3);
81  virtual void SetWorldPosition(double pos[3]);
82  virtual void GetWorldPosition(double pos[3]);
83  virtual double* GetWorldPosition() VTK_SIZEHINT(3);
85 
87 
92  vtkSetClampMacro(Tolerance,int,1,100);
93  vtkGetMacro(Tolerance,int);
95 
97 
102  vtkSetMacro(ActiveRepresentation,vtkTypeBool);
103  vtkGetMacro(ActiveRepresentation,vtkTypeBool);
104  vtkBooleanMacro(ActiveRepresentation,vtkTypeBool);
106 
107  // Enums define the state of the representation relative to the mouse pointer
108  // position. Used by ComputeInteractionState() to communicate with the
109  // widget. Note that ComputeInteractionState() and several other methods
110  // must be implemented by subclasses.
111  enum _InteractionState { Outside=0, Nearby, Selecting, Translating, Scaling };
112 
114 
123  vtkSetClampMacro(InteractionState,int,Outside,Scaling);
125 
127 
132  vtkSetMacro(Constrained,vtkTypeBool);
133  vtkGetMacro(Constrained,vtkTypeBool);
134  vtkBooleanMacro(Constrained,vtkTypeBool);
136 
144  virtual int CheckConstraint(vtkRenderer *renderer, double pos[2]);
145 
147 
150  void ShallowCopy(vtkProp *prop) override;
151  virtual void DeepCopy(vtkProp *prop);
152  void SetRenderer(vtkRenderer *ren) override;
154 
159  vtkMTimeType GetMTime() override;
160 
162 
170  virtual void SetPointPlacer ( vtkPointPlacer * );
171  vtkGetObjectMacro( PointPlacer, vtkPointPlacer );
173 
174 protected:
177 
181 
182  // Two vtkCoordinates are available to subclasses, one in display
183  // coordinates and the other in world coordinates. These facilitate
184  // the conversion between these two systems. Note that the WorldPosition
185  // is the ultimate maintainer of position.
188 
189  // Keep track of when coordinates were changed
192 
193  // Constrain the placement of handles.
195 
196 private:
198  void operator=(const vtkHandleRepresentation&) = delete;
199 };
200 
201 #endif
vtkWidgetRepresentation.h
vtkHandleRepresentation::Constrained
vtkTypeBool Constrained
Definition: vtkHandleRepresentation.h:180
vtkHandleRepresentation::ActiveRepresentation
vtkTypeBool ActiveRepresentation
Definition: vtkHandleRepresentation.h:179
vtkPointPlacer
Abstract interface to translate 2D display positions to world coordinates.
Definition: vtkPointPlacer.h:50
vtkHandleRepresentation::Tolerance
int Tolerance
Definition: vtkHandleRepresentation.h:178
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:36
vtkHandleRepresentation::vtkHandleRepresentation
vtkHandleRepresentation()
vtkWidgetRepresentation
abstract class defines interface between the widget and widget representation classes
Definition: vtkWidgetRepresentation.h:61
vtkHandleRepresentation
abstract class for representing widget handles
Definition: vtkHandleRepresentation.h:59
vtkHandleRepresentation::GetDisplayPosition
virtual double * GetDisplayPosition()
vtkHandleRepresentation::GetMTime
vtkMTimeType GetMTime() override
Overload the superclasses' GetMTime() because the internal vtkCoordinates are used to keep the state ...
vtkHandleRepresentation::WorldPositionTime
vtkTimeStamp WorldPositionTime
Definition: vtkHandleRepresentation.h:191
vtkHandleRepresentation::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:42
vtkHandleRepresentation::DisplayPosition
vtkCoordinate * DisplayPosition
Definition: vtkHandleRepresentation.h:186
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkCoordinate
perform coordinate transformation, and represent position, in a variety of vtk coordinate systems
Definition: vtkCoordinate.h:82
vtkHandleRepresentation::CheckConstraint
virtual int CheckConstraint(vtkRenderer *renderer, double pos[2])
Method has to be overridden in the subclasses which has constraints on placing the handle (Ex.
vtkHandleRepresentation::_InteractionState
_InteractionState
Definition: vtkHandleRepresentation.h:111
vtkHandleRepresentation::GetDisplayPosition
virtual void GetDisplayPosition(double pos[3])
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:53
vtkHandleRepresentation::DeepCopy
virtual void DeepCopy(vtkProp *prop)
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkHandleRepresentation::SetDisplayPosition
virtual void SetDisplayPosition(double pos[3])
Handles usually have their coordinates set in display coordinates (generally by an associated widget)...
vtkHandleRepresentation::WorldPosition
vtkCoordinate * WorldPosition
Definition: vtkHandleRepresentation.h:187
vtkHandleRepresentation::~vtkHandleRepresentation
~vtkHandleRepresentation() override
vtkHandleRepresentation::DisplayPositionTime
vtkTimeStamp DisplayPositionTime
Definition: vtkHandleRepresentation.h:190
vtkHandleRepresentation::SetRenderer
void SetRenderer(vtkRenderer *ren) override
Subclasses of vtkWidgetRepresentation must implement these methods.
vtkHandleRepresentation::PointPlacer
vtkPointPlacer * PointPlacer
Definition: vtkHandleRepresentation.h:194
vtkHandleRepresentation::ShallowCopy
void ShallowCopy(vtkProp *prop) override
Methods to make this class properly act like a vtkWidgetRepresentation.
vtkHandleRepresentation::Translating
@ Translating
Definition: vtkHandleRepresentation.h:111
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkHandleRepresentation::SetPointPlacer
virtual void SetPointPlacer(vtkPointPlacer *)
Set/Get the point placer.
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302