VTK
vtkPointHandleRepresentation3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPointHandleRepresentation3D.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 =========================================================================*/
30 #ifndef vtkPointHandleRepresentation3D_h
31 #define vtkPointHandleRepresentation3D_h
32 
33 #include "vtkInteractionWidgetsModule.h" // For export macro
35 #include "vtkCursor3D.h" // Needed for delegation to cursor3D
36 
37 class vtkCursor3D;
38 class vtkProperty;
39 class vtkActor;
40 class vtkPolyDataMapper;
41 class vtkCellPicker;
42 
43 class VTKINTERACTIONWIDGETS_EXPORT vtkPointHandleRepresentation3D : public vtkHandleRepresentation
44 {
45 public:
50 
52 
56  void PrintSelf(ostream& os, vtkIndent indent);
58 
60 
67  virtual void SetWorldPosition(double p[3]);
68  virtual void SetDisplayPosition(double p[3]);
70 
74  void SetOutline(int o)
75  {this->Cursor3D->SetOutline(o);}
76  int GetOutline()
77  {return this->Cursor3D->GetOutline();}
78  void OutlineOn()
79  {this->Cursor3D->OutlineOn();}
80  void OutlineOff()
81  {this->Cursor3D->OutlineOff();}
82 
86  void SetXShadows(int o)
87  {this->Cursor3D->SetXShadows(o);}
89  {return this->Cursor3D->GetXShadows();}
90  void XShadowsOn()
91  {this->Cursor3D->XShadowsOn();}
92  void XShadowsOff()
93  {this->Cursor3D->XShadowsOff();}
94 
98  void SetYShadows(int o)
99  {this->Cursor3D->SetYShadows(o);}
101  {return this->Cursor3D->GetYShadows();}
102  void YShadowsOn()
103  {this->Cursor3D->YShadowsOn();}
104  void YShadowsOff()
105  {this->Cursor3D->YShadowsOff();}
106 
110  void SetZShadows(int o)
111  {this->Cursor3D->SetZShadows(o);}
113  {return this->Cursor3D->GetZShadows();}
114  void ZShadowsOn()
115  {this->Cursor3D->ZShadowsOn();}
116  void ZShadowsOff()
117  {this->Cursor3D->ZShadowsOff();}
118 
120 
131  void SetTranslationMode(int mode);
132  vtkGetMacro(TranslationMode,int);
133  vtkBooleanMacro(TranslationMode,int);
135 
137 
140  void AllOn()
141  {
142  this->OutlineOn();
143  this->XShadowsOn();
144  this->YShadowsOn();
145  this->ZShadowsOn();
146  }
147  void AllOff()
148  {
149  this->OutlineOff();
150  this->XShadowsOff();
151  this->YShadowsOff();
152  this->ZShadowsOff();
153  }
155 
157 
160  void SetProperty(vtkProperty*);
161  void SetSelectedProperty(vtkProperty*);
162  vtkGetObjectMacro(Property,vtkProperty);
163  vtkGetObjectMacro(SelectedProperty,vtkProperty);
165 
167 
173  vtkSetClampMacro(HotSpotSize,double,0.0,1.0);
174  vtkGetMacro(HotSpotSize,double);
176 
180  virtual void SetHandleSize(double size);
181 
183 
186  virtual double *GetBounds();
187  virtual void BuildRepresentation();
188  virtual void StartWidgetInteraction(double eventPos[2]);
189  virtual void WidgetInteraction(double eventPos[2]);
190  virtual int ComputeInteractionState(int X, int Y, int modify=0);
191  virtual void PlaceWidget(double bounds[6]);
193 
195 
198  virtual void ShallowCopy(vtkProp *prop);
199  virtual void DeepCopy(vtkProp *prop);
200  virtual void GetActors(vtkPropCollection *);
201  virtual void ReleaseGraphicsResources(vtkWindow *);
202  virtual int RenderOpaqueGeometry(vtkViewport *viewport);
203  virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport);
204  virtual int HasTranslucentPolygonalGeometry();
206 
207  void Highlight(int highlight);
208 
210 
221  vtkSetMacro( SmoothMotion, int );
222  vtkGetMacro( SmoothMotion, int );
223  vtkBooleanMacro( SmoothMotion, int );
225 
226 protected:
229 
230  // the cursor3D
234 
235 
236  // Do the picking
238  double LastPickPosition[3];
239  double LastEventPosition[2];
240 
241  // Register internal Pickers within PickingManager
242  virtual void RegisterPickers();
243 
244  // Methods to manipulate the cursor
246  void Translate(double *p1, double *p2);
247  void Scale(double *p1, double *p2, double eventPos[2]);
248  void MoveFocus(double *p1, double *p2);
249  void SizeBounds();
250 
251  // Given a motion vector defined by p1 --> p2 (p1 and p2 are in
252  // world coordinates), the new display position of the handle center is
253  // populated into requestedDisplayPos. This is again only a request for the
254  // new display position. It is up to the point placer to deduce the
255  // appropriate world co-ordinates that this display position will map into.
256  // The placer may even disallow such a movement.
257  // If "SmoothMotion" is OFF, the returned requestedDisplayPos is the same
258  // as the event position, ie the location of the mouse cursor. If its OFF,
259  // incremental offsets as described above are used to compute it.
260  void MoveFocusRequest( double *p1, double *p2,
261  double eventPos[2], double requestedDisplayPos[3] );
262 
263  // Properties used to control the appearance of selected objects and
264  // the manipulator in general.
267  void CreateDefaultProperties();
268 
269  // The size of the hot spot.
270  double HotSpotSize;
271  int DetermineConstraintAxis(int constraint, double *x, double *startPoint);
274 
275  // Current handle sized (may reflect scaling)
277 
278  // Control how translation works
280 
282 
283 private:
285  void operator=(const vtkPointHandleRepresentation3D&) VTK_DELETE_FUNCTION;
286 };
287 
288 #endif
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
virtual int ComputeInteractionState(int X, int Y, int modify=0)
abstract class for representing widget handles
represent the position of a point in 3D space
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])
void AllOn()
Convenience methods to turn outline and shadows on and off.
virtual void SetHandleSize(double)
Set/Get the factor that controls the size of the handles that appear as part of the widget (if any)...
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.
void SetYShadows(int o)
Turn on/off the wireframe y-shadows.
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.
void SetZShadows(int o)
Turn on/off the wireframe z-shadows.
virtual int HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
void SetOutline(int o)
Turn on/off the wireframe bounding box.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void RegisterPickers()
Register internal Pickers in the Picking Manager.
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))
virtual void PlaceWidget(double *vtkNotUsed(bounds[6]))
The following is a suggested API for widget representations.
void AllOff()
Convenience methods to turn outline and shadows on and off.
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:69
virtual void Highlight(int vtkNotUsed(highlightOn))
generate a 3D cursor representation
Definition: vtkCursor3D.h:39
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport))
void SetXShadows(int o)
Turn on/off the wireframe x-shadows.
virtual void SetDisplayPosition(double pos[3])
Handles usually have their coordinates set in display coordinates (generally by an associated widget)...