VTK
vtkInteractorStyle.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkInteractorStyle.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 =========================================================================*/
98 #ifndef vtkInteractorStyle_h
99 #define vtkInteractorStyle_h
100 
101 #include "vtkRenderingCoreModule.h" // For export macro
102 #include "vtkInteractorObserver.h"
103 
104 // Motion flags
105 
106 #define VTKIS_START 0
107 #define VTKIS_NONE 0
108 
109 #define VTKIS_ROTATE 1
110 #define VTKIS_PAN 2
111 #define VTKIS_SPIN 3
112 #define VTKIS_DOLLY 4
113 #define VTKIS_ZOOM 5
114 #define VTKIS_USCALE 6
115 #define VTKIS_TIMER 7
116 #define VTKIS_FORWARDFLY 8
117 #define VTKIS_REVERSEFLY 9
118 #define VTKIS_TWO_POINTER 10
119 
120 #define VTKIS_ANIM_OFF 0
121 #define VTKIS_ANIM_ON 1
122 
123 class vtkActor2D;
124 class vtkActor;
125 class vtkCallbackCommand;
127 class vtkOutlineSource;
128 class vtkPolyDataMapper;
129 class vtkProp3D;
130 class vtkProp;
132 
133 class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
134 {
135 public:
142 
144  void PrintSelf(ostream& os, vtkIndent indent);
145 
150  virtual void SetInteractor(vtkRenderWindowInteractor *interactor);
151 
159  virtual void SetEnabled(int);
160 
162 
170  vtkSetClampMacro(AutoAdjustCameraClippingRange, int, 0, 1 );
171  vtkGetMacro(AutoAdjustCameraClippingRange, int );
172  vtkBooleanMacro(AutoAdjustCameraClippingRange, int );
174 
180  void FindPokedRenderer(int,int);
181 
183 
186  vtkGetMacro(State,int);
188 
190 
193  vtkGetMacro(UseTimers,int);
194  vtkSetMacro(UseTimers,int);
195  vtkBooleanMacro(UseTimers,int);
197 
199 
205  vtkSetClampMacro(TimerDuration,unsigned long,1,100000);
206  vtkGetMacro(TimerDuration,unsigned long);
208 
210 
213  vtkSetMacro(HandleObservers,int);
214  vtkGetMacro(HandleObservers,int);
215  vtkBooleanMacro(HandleObservers,int);
217 
221  virtual void OnMouseMove() {}
222  virtual void OnLeftButtonDown() {}
223  virtual void OnLeftButtonUp() {}
224  virtual void OnMiddleButtonDown() {}
225  virtual void OnMiddleButtonUp() {}
226  virtual void OnRightButtonDown() {}
227  virtual void OnRightButtonUp() {}
228  virtual void OnMouseWheelForward() {}
229  virtual void OnMouseWheelBackward() {}
230 
235  virtual void OnChar();
236 
237  // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
238  // An empty implementation is provided. The behavior of this function should
239  // be specified in the subclass.
240  virtual void OnKeyDown() {}
241 
242  // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
243  // An empty implementation is provided. The behavior of this function should
244  // be specified in the subclass.
245  virtual void OnKeyUp() {}
246 
247  // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
248  // An empty implementation is provided. The behavior of this function should
249  // be specified in the subclass.
250  virtual void OnKeyPress() {}
251 
252  // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
253  // An empty implementation is provided. The behavior of this function should
254  // be specified in the subclass.
255  virtual void OnKeyRelease() {}
256 
260  virtual void OnExpose() {}
261  virtual void OnConfigure() {}
262  virtual void OnEnter() {}
263  virtual void OnLeave() {}
264 
269  virtual void OnTimer();
270 
277  virtual void Rotate() {}
278  virtual void Spin() {}
279  virtual void Pan() {}
280  virtual void Dolly() {}
281  virtual void Zoom() {}
282  virtual void UniformScale() {}
283 
287  virtual void OnPinch() {}
288  virtual void OnRotate() {}
289  virtual void OnPan() {}
290  virtual void OnTap() {}
291  virtual void OnLongTap() {}
292  virtual void OnSwipe() {}
293 
295 
298  virtual void StartState(int newstate);
299  virtual void StopState();
301 
303 
306  virtual void StartAnimate();
307  virtual void StopAnimate();
308  virtual void StartRotate();
309  virtual void EndRotate();
310  virtual void StartZoom();
311  virtual void EndZoom();
312  virtual void StartPan();
313  virtual void EndPan();
314  virtual void StartSpin();
315  virtual void EndSpin();
316  virtual void StartDolly();
317  virtual void EndDolly();
318  virtual void StartUniformScale();
319  virtual void EndUniformScale();
320  virtual void StartTimer();
321  virtual void EndTimer();
322  virtual void StartTwoPointer();
323  virtual void EndTwoPointer();
325 
327 
333  virtual void HighlightProp(vtkProp *prop);
334  virtual void HighlightActor2D(vtkActor2D *actor2D);
335  virtual void HighlightProp3D(vtkProp3D *prop3D);
337 
339 
343  vtkSetVector3Macro(PickColor,double);
344  vtkGetVectorMacro(PickColor, double, 3);
346 
348 
353  vtkSetMacro(MouseWheelMotionFactor, double);
354  vtkGetMacro(MouseWheelMotionFactor, double);
356 
358 
362  vtkGetObjectMacro(TDxStyle,vtkTDxInteractorStyle);
363  virtual void SetTDxStyle(vtkTDxInteractorStyle *tdxStyle);
365 
369  void DelegateTDxEvent(unsigned long event,
370  void *calldata);
371 
372 protected:
375 
379  static void ProcessEvents(vtkObject* object,
380  unsigned long event,
381  void* clientdata,
382  void* calldata);
383 
384  // Keep track of current state
385  int State;
387 
388  // Should observers be handled here, should we fire timers
391  int TimerId; //keep track of the timers that are created/destroyed
392 
394 
395  // For picking and highlighting props
402  int PropPicked; // bool: prop picked?
403  double PickColor[3]; // support 2D picking
405 
406  // Control the timer duration
407  unsigned long TimerDuration; //in milliseconds
408 
409  // Forward events to the RenderWindowInteractor
411 
413 
414 private:
415  vtkInteractorStyle(const vtkInteractorStyle&) VTK_DELETE_FUNCTION;
416  void operator=(const vtkInteractorStyle&) VTK_DELETE_FUNCTION;
417 };
418 
419 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:43
vtkInteractorStyle::OnLongTap
virtual void OnLongTap()
Definition: vtkInteractorStyle.h:291
vtkInteractorStyle::Dolly
virtual void Dolly()
Definition: vtkInteractorStyle.h:280
vtkOutlineSource
create wireframe outline around bounding box
Definition: vtkOutlineSource.h:40
vtkInteractorStyle::~vtkInteractorStyle
~vtkInteractorStyle()
vtkInteractorStyle::OnKeyRelease
virtual void OnKeyRelease()
Definition: vtkInteractorStyle.h:255
vtkInteractorStyle::OnKeyPress
virtual void OnKeyPress()
Definition: vtkInteractorStyle.h:250
vtkProp3D
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:47
vtkInteractorStyle::EndTimer
virtual void EndTimer()
vtkInteractorStyle::HighlightProp3D
virtual void HighlightProp3D(vtkProp3D *prop3D)
vtkInteractorStyle::Pan
virtual void Pan()
Definition: vtkInteractorStyle.h:279
vtkInteractorStyle::HandleObservers
int HandleObservers
Definition: vtkInteractorStyle.h:389
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:60
vtkInteractorStyle::StartUniformScale
virtual void StartUniformScale()
vtkInteractorStyle::ProcessEvents
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Main process event method.
vtkInteractorObserver
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
Definition: vtkInteractorObserver.h:60
vtkInteractorStyle::OnPinch
virtual void OnPinch()
gesture based events
Definition: vtkInteractorStyle.h:287
vtkInteractorStyle::EndDolly
virtual void EndDolly()
vtkInteractorStyle::FindPokedRenderer
void FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
vtkInteractorStyle::OnMiddleButtonUp
virtual void OnMiddleButtonUp()
Definition: vtkInteractorStyle.h:225
vtkInteractorStyle::OnTap
virtual void OnTap()
Definition: vtkInteractorStyle.h:290
vtkInteractorStyle::vtkInteractorStyle
vtkInteractorStyle()
vtkInteractorStyle::AnimState
int AnimState
Definition: vtkInteractorStyle.h:386
vtkInteractorStyle::UseTimers
int UseTimers
Definition: vtkInteractorStyle.h:390
vtkInteractorStyle::OnMouseMove
virtual void OnMouseMove()
Generic event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:221
vtkInteractorStyle::State
int State
Definition: vtkInteractorStyle.h:385
vtkInteractorStyle::Spin
virtual void Spin()
Definition: vtkInteractorStyle.h:278
vtkInteractorStyle::StartTimer
virtual void StartTimer()
vtkInteractorStyle::OnPan
virtual void OnPan()
Definition: vtkInteractorStyle.h:289
vtkInteractorStyle::OutlineActor
vtkActor * OutlineActor
Definition: vtkInteractorStyle.h:398
vtkInteractorStyle::TimerId
int TimerId
Definition: vtkInteractorStyle.h:391
vtkInteractorStyle::Outline
vtkOutlineSource * Outline
Definition: vtkInteractorStyle.h:396
vtkInteractorStyle::DelegateTDxEvent
void DelegateTDxEvent(unsigned long event, void *calldata)
Called by the callback to process 3DConnexion device events.
vtkInteractorStyle::OnSwipe
virtual void OnSwipe()
Definition: vtkInteractorStyle.h:292
vtkInteractorStyle::SetTDxStyle
virtual void SetTDxStyle(vtkTDxInteractorStyle *tdxStyle)
vtkInteractorStyle::StartAnimate
virtual void StartAnimate()
Interaction mode entry points used internally.
vtkInteractorStyle::OnMiddleButtonDown
virtual void OnMiddleButtonDown()
Definition: vtkInteractorStyle.h:224
vtkInteractorStyle::PropPicked
int PropPicked
Definition: vtkInteractorStyle.h:402
vtkInteractorStyle::OnRightButtonDown
virtual void OnRightButtonDown()
Definition: vtkInteractorStyle.h:226
vtkInteractorStyle::EndRotate
virtual void EndRotate()
vtkInteractorStyle::OnMouseWheelForward
virtual void OnMouseWheelForward()
Definition: vtkInteractorStyle.h:228
vtkInteractorStyle::StartState
virtual void StartState(int newstate)
utility routines used by state changes
vtkInteractorStyle::PickedRenderer
vtkRenderer * PickedRenderer
Definition: vtkInteractorStyle.h:399
vtkInteractorStyle::StartTwoPointer
virtual void StartTwoPointer()
vtkInteractorStyle::CurrentProp
vtkProp * CurrentProp
Definition: vtkInteractorStyle.h:400
vtkInteractorStyle::OnLeftButtonDown
virtual void OnLeftButtonDown()
Definition: vtkInteractorStyle.h:222
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:52
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkInteractorStyle::StartPan
virtual void StartPan()
vtkInteractorStyle::TDxStyle
vtkTDxInteractorStyle * TDxStyle
Definition: vtkInteractorStyle.h:412
vtkInteractorStyle::OnKeyUp
virtual void OnKeyUp()
Definition: vtkInteractorStyle.h:245
vtkInteractorStyle::HighlightProp
virtual void HighlightProp(vtkProp *prop)
When picking successfully selects an actor, this method highlights the picked prop appropriately.
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:79
vtkInteractorStyle::OnConfigure
virtual void OnConfigure()
Definition: vtkInteractorStyle.h:261
vtkInteractorStyle::EndSpin
virtual void EndSpin()
vtkInteractorStyle::EventForwarder
vtkEventForwarderCommand * EventForwarder
Definition: vtkInteractorStyle.h:410
vtkInteractorStyle::OnExpose
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
Definition: vtkInteractorStyle.h:260
vtkInteractorStyle
provide event-driven interface to the rendering window (defines trackball mode)
Definition: vtkInteractorStyle.h:134
vtkInteractorStyle::OnMouseWheelBackward
virtual void OnMouseWheelBackward()
Definition: vtkInteractorStyle.h:229
vtkInteractorStyle::TimerDuration
unsigned long TimerDuration
Definition: vtkInteractorStyle.h:407
vtkInteractorStyle::OnLeftButtonUp
virtual void OnLeftButtonUp()
Definition: vtkInteractorStyle.h:223
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkInteractorStyle::StopState
virtual void StopState()
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:48
vtkInteractorStyle::AutoAdjustCameraClippingRange
int AutoAdjustCameraClippingRange
Definition: vtkInteractorStyle.h:393
vtkActor2D
a actor that draws 2D data
Definition: vtkActor2D.h:46
vtkInteractorStyle::EndUniformScale
virtual void EndUniformScale()
vtkInteractorStyle::New
static vtkInteractorStyle * New()
This class must be supplied with a vtkRenderWindowInteractor wrapper or parent.
vtkInteractorStyle::UniformScale
virtual void UniformScale()
Definition: vtkInteractorStyle.h:282
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkInteractorObserver.h
vtkInteractorStyle::Rotate
virtual void Rotate()
These methods for the different interactions in different modes are overridden in subclasses to perfo...
Definition: vtkInteractorStyle.h:277
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:51
vtkInteractorStyle::StopAnimate
virtual void StopAnimate()
vtkInteractorStyle::EndPan
virtual void EndPan()
vtkInteractorStyle::StartZoom
virtual void StartZoom()
vtkTDxInteractorStyle
provide 3DConnexion device event-driven interface to the rendering window
Definition: vtkTDxInteractorStyle.h:46
vtkInteractorStyle::OnRightButtonUp
virtual void OnRightButtonUp()
Definition: vtkInteractorStyle.h:227
vtkInteractorStyle::OnEnter
virtual void OnEnter()
Definition: vtkInteractorStyle.h:262
vtkInteractorStyle::OnRotate
virtual void OnRotate()
Definition: vtkInteractorStyle.h:288
vtkInteractorStyle::SetInteractor
virtual void SetInteractor(vtkRenderWindowInteractor *interactor)
Set/Get the Interactor wrapper being controlled by this object.
vtkInteractorStyle::MouseWheelMotionFactor
double MouseWheelMotionFactor
Definition: vtkInteractorStyle.h:404
vtkInteractorStyle::EndZoom
virtual void EndZoom()
vtkInteractorStyle::StartDolly
virtual void StartDolly()
vtkInteractorStyle::HighlightActor2D
virtual void HighlightActor2D(vtkActor2D *actor2D)
vtkInteractorStyle::EndTwoPointer
virtual void EndTwoPointer()
vtkInteractorStyle::OnChar
virtual void OnChar()
OnChar is triggered when an ASCII key is pressed.
vtkInteractorStyle::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkInteractorStyle::StartSpin
virtual void StartSpin()
vtkEventForwarderCommand
a simple event forwarder command
Definition: vtkEventForwarderCommand.h:35
vtkInteractorStyle::SetEnabled
virtual void SetEnabled(int)
Turn on/off this interactor.
vtkInteractorStyle::OutlineMapper
vtkPolyDataMapper * OutlineMapper
Definition: vtkInteractorStyle.h:397
vtkInteractorStyle::OnTimer
virtual void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
vtkInteractorStyle::PickedActor2D
vtkActor2D * PickedActor2D
Definition: vtkInteractorStyle.h:401
vtkInteractorStyle::StartRotate
virtual void StartRotate()
vtkInteractorStyle::OnKeyDown
virtual void OnKeyDown()
Definition: vtkInteractorStyle.h:240
vtkInteractorStyle::OnLeave
virtual void OnLeave()
Definition: vtkInteractorStyle.h:263
vtkInteractorStyle::Zoom
virtual void Zoom()
Definition: vtkInteractorStyle.h:281