VTK
vtkAbstractPolygonalHandleRepresentation3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAbstractPolygonalHandleRepresentation3D.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 =========================================================================*/
34 #ifndef vtkAbstractPolygonalHandleRepresentation3D_h
35 #define vtkAbstractPolygonalHandleRepresentation3D_h
36 
37 #include "vtkInteractionWidgetsModule.h" // For export macro
39 
40 class vtkProperty;
41 class vtkPolyDataMapper;
42 class vtkCellPicker;
45 class vtkMatrix4x4;
46 class vtkPolyData;
48 class vtkActor;
49 class vtkFollower;
50 class vtkVectorText;
51 
52 class VTKINTERACTIONWIDGETS_EXPORT vtkAbstractPolygonalHandleRepresentation3D
54 {
55 public:
56 
58 
62  void PrintSelf(ostream& os, vtkIndent indent);
64 
66 
69  virtual void SetWorldPosition(double p[3]);
70  virtual void SetDisplayPosition(double p[3]);
72 
74 
77  void SetHandle( vtkPolyData * );
78  vtkPolyData * GetHandle();
80 
82 
85  void SetProperty(vtkProperty*);
86  void SetSelectedProperty(vtkProperty*);
87  vtkGetObjectMacro(Property,vtkProperty);
88  vtkGetObjectMacro(SelectedProperty,vtkProperty);
90 
95  virtual vtkAbstractTransform * GetTransform();
96 
98 
101  virtual void BuildRepresentation();
102  virtual void StartWidgetInteraction(double eventPos[2]);
103  virtual void WidgetInteraction(double eventPos[2]);
104  virtual int ComputeInteractionState(int X, int Y, int modify=0);
106 
108 
111  virtual void ShallowCopy(vtkProp *prop);
112  virtual void DeepCopy(vtkProp *prop);
113  virtual void GetActors(vtkPropCollection *);
114  virtual void ReleaseGraphicsResources(vtkWindow *);
115  virtual int RenderOpaqueGeometry(vtkViewport *viewport);
116  virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport);
117  virtual int HasTranslucentPolygonalGeometry();
118  virtual double *GetBounds();
120 
122 
126  vtkSetMacro( LabelVisibility, int );
127  vtkGetMacro( LabelVisibility, int );
128  vtkBooleanMacro( LabelVisibility, int );
129  virtual void SetLabelText( const char * label );
130  virtual char * GetLabelText();
132 
134 
137  virtual void SetLabelTextScale( double scale[3] );
138  void SetLabelTextScale(double x, double y, double z)
139  {
140  double scale[3] = {x, y, z};
141  this->SetLabelTextScale(scale);
142  }
143  virtual double * GetLabelTextScale();
145 
147 
150  vtkGetObjectMacro( LabelTextActor, vtkFollower );
152 
158  virtual void SetUniformScale( double scale );
159 
161 
164  vtkSetMacro( HandleVisibility, int );
165  vtkGetMacro( HandleVisibility, int );
166  vtkBooleanMacro( HandleVisibility, int );
168 
169  void Highlight(int highlight);
170 
172 
183  vtkSetMacro( SmoothMotion, int );
184  vtkGetMacro( SmoothMotion, int );
185  vtkBooleanMacro( SmoothMotion, int );
187 
188 protected:
191 
198  double LastPickPosition[3];
199  double LastEventPosition[2];
206 
207  // Register internal Pickers within PickingManager
208  virtual void RegisterPickers();
209 
210  // Methods to manipulate the cursor
211  virtual void Translate(double *p1, double *p2);
212  virtual void Scale(double *p1, double *p2, double eventPos[2]);
213  virtual void MoveFocus(double *p1, double *p2);
214 
215  void CreateDefaultProperties();
216 
217  // Given a motion vector defined by p1 --> p2 (p1 and p2 are in
218  // world coordinates), the new display position of the handle center is
219  // populated into requestedDisplayPos. This is again only a request for the
220  // new display position. It is up to the point placer to deduce the
221  // appropriate world co-ordinates that this display position will map into.
222  // The placer may even disallow such a movement.
223  // If "SmoothMotion" is OFF, the returned requestedDisplayPos is the same
224  // as the event position, ie the location of the mouse cursor. If its OFF,
225  // incremental offsets as described above are used to compute it.
226  void MoveFocusRequest( double *p1, double *p2,
227  double eventPos[2], double requestedDisplayPos[3] );
228 
229  int DetermineConstraintAxis(int constraint, double *x, double *startPickPos);
230 
240  virtual void UpdateHandle();
241 
245  virtual void UpdateLabel();
246 
247  // Handle the label.
254 
255 private:
257  void operator=(const vtkAbstractPolygonalHandleRepresentation3D&) VTK_DELETE_FUNCTION;
258 };
259 
260 #endif
261 
262 
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:50
virtual void SetWorldPosition(double pos[3])
Handles usually have their coordinates set in display coordinates (generally by an associated widget)...
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:41
virtual int ComputeInteractionState(int X, int Y, int modify=0)
abstract class for representing widget handles
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])
transform points and associated normals and vectors for polygonal dataset
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
virtual void ReleaseGraphicsResources(vtkWindow *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
virtual void BuildRepresentation()=0
Subclasses of vtkWidgetRepresentation must implement these methods.
a list of Props
virtual void ShallowCopy(vtkProp *prop)
Methods to make this class properly act like a vtkWidgetRepresentation.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
virtual double * GetBounds()
Methods to make this class behave as a vtkProp.
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 void RegisterPickers()
Register internal Pickers in the Picking Manager.
represent a user defined handle geometry in 3D while maintaining a fixed orientation w...
superclass for all geometric transformations
virtual void WidgetInteraction(double newEventPos[2])
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.
void PrintSelf(ostream &os, vtkIndent indent)
Standard methods for instances of this class.
virtual void DeepCopy(vtkProp *prop)
Methods to make this class properly act like a vtkWidgetRepresentation.
map vtkPolyData to graphics primitives
virtual int RenderOpaqueGeometry(vtkViewport *vtkNotUsed(viewport))
a subclass of actor that always faces the camera
Definition: vtkFollower.h:46
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:69
virtual void Highlight(int vtkNotUsed(highlightOn))
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport))
virtual void SetDisplayPosition(double pos[3])
Handles usually have their coordinates set in display coordinates (generally by an associated widget)...
convert a matrix to a transform
create polygonal text
Definition: vtkVectorText.h:47
void SetLabelTextScale(double x, double y, double z)
Scale text (font size along each dimension).