VTK  9.0.1
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 =========================================================================*/
101 #ifndef vtkInteractorStyle_h
102 #define vtkInteractorStyle_h
103 
104 #include "vtkInteractorObserver.h"
105 #include "vtkRenderingCoreModule.h" // For export macro
106 
107 // Motion flags
108 
109 #define VTKIS_START 0
110 #define VTKIS_NONE 0
111 
112 #define VTKIS_ROTATE 1
113 #define VTKIS_PAN 2
114 #define VTKIS_SPIN 3
115 #define VTKIS_DOLLY 4
116 #define VTKIS_ZOOM 5
117 #define VTKIS_USCALE 6
118 #define VTKIS_TIMER 7
119 #define VTKIS_FORWARDFLY 8
120 #define VTKIS_REVERSEFLY 9
121 #define VTKIS_TWO_POINTER 10
122 #define VTKIS_CLIP 11
123 #define VTKIS_PICK 12 // perform a pick at the last location
124 #define VTKIS_LOAD_CAMERA_POSE 13 // iterate through saved camera poses
125 #define VTKIS_POSITION_PROP 14 // adjust the position, orientation of a prop
126 #define VTKIS_EXIT 15 // call exit callback
127 #define VTKIS_TOGGLE_DRAW_CONTROLS 16 // draw device controls helpers
128 #define VTKIS_MENU 17 // invoke an application menu
129 #define VTKIS_GESTURE 18 // touch interaction in progress
130 #define VTKIS_ENV_ROTATE 19 // rotate the renderer environment texture
131 
132 #define VTKIS_ANIM_OFF 0
133 #define VTKIS_ANIM_ON 1
134 
135 class vtkActor2D;
136 class vtkActor;
137 class vtkCallbackCommand;
138 class vtkEventData;
140 class vtkOutlineSource;
141 class vtkPolyDataMapper;
142 class vtkProp3D;
143 class vtkProp;
144 class vtkStringArray;
146 
147 class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
148 {
149 public:
156 
158  void PrintSelf(ostream& os, vtkIndent indent) override;
159 
164  void SetInteractor(vtkRenderWindowInteractor* interactor) override;
165 
173  void SetEnabled(int) override;
174 
176 
184  vtkSetClampMacro(AutoAdjustCameraClippingRange, vtkTypeBool, 0, 1);
185  vtkGetMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
186  vtkBooleanMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
188 
194  void FindPokedRenderer(int, int);
195 
197 
200  vtkGetMacro(State, int);
202 
204 
207  vtkGetMacro(UseTimers, vtkTypeBool);
208  vtkSetMacro(UseTimers, vtkTypeBool);
209  vtkBooleanMacro(UseTimers, vtkTypeBool);
211 
213 
219  vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
220  vtkGetMacro(TimerDuration, unsigned long);
222 
224 
227  vtkSetMacro(HandleObservers, vtkTypeBool);
228  vtkGetMacro(HandleObservers, vtkTypeBool);
229  vtkBooleanMacro(HandleObservers, vtkTypeBool);
231 
235  virtual void OnMouseMove() {}
236  virtual void OnLeftButtonDown() {}
237  virtual void OnLeftButtonUp() {}
238  virtual void OnMiddleButtonDown() {}
239  virtual void OnMiddleButtonUp() {}
240  virtual void OnRightButtonDown() {}
241  virtual void OnRightButtonUp() {}
242  virtual void OnMouseWheelForward() {}
243  virtual void OnMouseWheelBackward() {}
244  virtual void OnFourthButtonDown() {}
245  virtual void OnFourthButtonUp() {}
246  virtual void OnFifthButtonDown() {}
247  virtual void OnFifthButtonUp() {}
248 
252  virtual void OnMove3D(vtkEventData*) {}
253  virtual void OnButton3D(vtkEventData*) {}
254 
259  void OnChar() override;
260 
261  // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
262  // An empty implementation is provided. The behavior of this function should
263  // be specified in the subclass.
264  virtual void OnKeyDown() {}
265 
266  // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
267  // An empty implementation is provided. The behavior of this function should
268  // be specified in the subclass.
269  virtual void OnKeyUp() {}
270 
271  // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
272  // An empty implementation is provided. The behavior of this function should
273  // be specified in the subclass.
274  virtual void OnKeyPress() {}
275 
276  // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
277  // An empty implementation is provided. The behavior of this function should
278  // be specified in the subclass.
279  virtual void OnKeyRelease() {}
280 
284  virtual void OnExpose() {}
285  virtual void OnConfigure() {}
286  virtual void OnEnter() {}
287  virtual void OnLeave() {}
288 
293  virtual void OnTimer();
294 
301  virtual void Rotate() {}
302  virtual void Spin() {}
303  virtual void Pan() {}
304  virtual void Dolly() {}
305  virtual void Zoom() {}
306  virtual void UniformScale() {}
307  virtual void EnvironmentRotate() {}
308 
312  virtual void OnStartSwipe() {}
313  virtual void OnSwipe() {}
314  virtual void OnEndSwipe() {}
315  virtual void OnStartPinch() {}
316  virtual void OnPinch() {}
317  virtual void OnEndPinch() {}
318  virtual void OnStartRotate() {}
319  virtual void OnRotate() {}
320  virtual void OnEndRotate() {}
321  virtual void OnStartPan() {}
322  virtual void OnPan() {}
323  virtual void OnEndPan() {}
324  virtual void OnTap() {}
325  virtual void OnLongTap() {}
326 
328 
331  virtual void StartState(int newstate);
332  virtual void StopState();
334 
336 
339  virtual void StartAnimate();
340  virtual void StopAnimate();
341  virtual void StartRotate();
342  virtual void EndRotate();
343  virtual void StartZoom();
344  virtual void EndZoom();
345  virtual void StartPan();
346  virtual void EndPan();
347  virtual void StartSpin();
348  virtual void EndSpin();
349  virtual void StartDolly();
350  virtual void EndDolly();
351  virtual void StartUniformScale();
352  virtual void EndUniformScale();
353  virtual void StartTimer();
354  virtual void EndTimer();
355  virtual void StartTwoPointer();
356  virtual void EndTwoPointer();
357  virtual void StartGesture();
358  virtual void EndGesture();
359  virtual void StartEnvRotate();
360  virtual void EndEnvRotate();
362 
369  virtual void OnDropLocation(double* vtkNotUsed(position)) {}
370 
376  virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
377 
379 
385  virtual void HighlightProp(vtkProp* prop);
386  virtual void HighlightActor2D(vtkActor2D* actor2D);
387  virtual void HighlightProp3D(vtkProp3D* prop3D);
389 
391 
395  vtkSetVector3Macro(PickColor, double);
396  vtkGetVectorMacro(PickColor, double, 3);
398 
400 
405  vtkSetMacro(MouseWheelMotionFactor, double);
406  vtkGetMacro(MouseWheelMotionFactor, double);
408 
410 
414  vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
415  virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
417 
421  void DelegateTDxEvent(unsigned long event, void* calldata);
422 
423 protected:
426 
430  static void ProcessEvents(
431  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
432 
433  // Keep track of current state
434  int State;
436 
437  // Should observers be handled here, should we fire timers
440  int TimerId; // keep track of the timers that are created/destroyed
441 
443 
444  // For picking and highlighting props
451  int PropPicked; // bool: prop picked?
452  double PickColor[3]; // support 2D picking
454 
455  // Control the timer duration
456  unsigned long TimerDuration; // in milliseconds
457 
458  // Forward events to the RenderWindowInteractor
460 
462 
463 private:
464  vtkInteractorStyle(const vtkInteractorStyle&) = delete;
465  void operator=(const vtkInteractorStyle&) = delete;
466 };
467 
468 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:37
vtkInteractorStyle::OnLongTap
virtual void OnLongTap()
Definition: vtkInteractorStyle.h:325
vtkInteractorStyle::Dolly
virtual void Dolly()
Definition: vtkInteractorStyle.h:304
vtkEventData
Definition: vtkEventData.h:66
vtkInteractorStyle::EndEnvRotate
virtual void EndEnvRotate()
vtkOutlineSource
create wireframe outline around bounding box
Definition: vtkOutlineSource.h:37
vtkInteractorStyle::OnKeyRelease
virtual void OnKeyRelease()
Definition: vtkInteractorStyle.h:279
vtkInteractorStyle::OnKeyPress
virtual void OnKeyPress()
Definition: vtkInteractorStyle.h:274
vtkInteractorStyle::OnStartSwipe
virtual void OnStartSwipe()
gesture based events
Definition: vtkInteractorStyle.h:312
vtkProp3D
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:44
vtkInteractorStyle::EndTimer
virtual void EndTimer()
vtkInteractorStyle::HighlightProp3D
virtual void HighlightProp3D(vtkProp3D *prop3D)
vtkInteractorStyle::OnDropLocation
virtual void OnDropLocation(double *vtkNotUsed(position))
When the mouse location is updated while dragging files.
Definition: vtkInteractorStyle.h:369
vtkInteractorStyle::OnFifthButtonDown
virtual void OnFifthButtonDown()
Definition: vtkInteractorStyle.h:246
vtkInteractorStyle::AutoAdjustCameraClippingRange
vtkTypeBool AutoAdjustCameraClippingRange
Definition: vtkInteractorStyle.h:442
vtkInteractorStyle::OnStartPan
virtual void OnStartPan()
Definition: vtkInteractorStyle.h:321
vtkInteractorStyle::StartEnvRotate
virtual void StartEnvRotate()
vtkInteractorStyle::Pan
virtual void Pan()
Definition: vtkInteractorStyle.h:303
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:63
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:66
vtkInteractorStyle::OnPinch
virtual void OnPinch()
Definition: vtkInteractorStyle.h:316
vtkInteractorStyle::SetInteractor
void SetInteractor(vtkRenderWindowInteractor *interactor) override
Set/Get the Interactor wrapper being controlled by this object.
vtkInteractorStyle::EndDolly
virtual void EndDolly()
vtkInteractorStyle::OnChar
void OnChar() override
OnChar is triggered when an ASCII key is pressed.
vtkInteractorStyle::FindPokedRenderer
void FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
vtkInteractorStyle::OnButton3D
virtual void OnButton3D(vtkEventData *)
Definition: vtkInteractorStyle.h:253
vtkInteractorStyle::OnMiddleButtonUp
virtual void OnMiddleButtonUp()
Definition: vtkInteractorStyle.h:239
vtkInteractorStyle::OnEndPinch
virtual void OnEndPinch()
Definition: vtkInteractorStyle.h:317
vtkInteractorStyle::OnTap
virtual void OnTap()
Definition: vtkInteractorStyle.h:324
vtkInteractorStyle::vtkInteractorStyle
vtkInteractorStyle()
vtkInteractorStyle::EndGesture
virtual void EndGesture()
vtkInteractorStyle::AnimState
int AnimState
Definition: vtkInteractorStyle.h:435
vtkInteractorStyle::OnMouseMove
virtual void OnMouseMove()
Generic event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:235
vtkInteractorStyle::OnFourthButtonUp
virtual void OnFourthButtonUp()
Definition: vtkInteractorStyle.h:245
vtkInteractorStyle::State
int State
Definition: vtkInteractorStyle.h:434
vtkInteractorStyle::OnStartPinch
virtual void OnStartPinch()
Definition: vtkInteractorStyle.h:315
vtkInteractorStyle::HandleObservers
vtkTypeBool HandleObservers
Definition: vtkInteractorStyle.h:438
vtkX3D::position
@ position
Definition: vtkX3D.h:267
vtkInteractorStyle::OnEndSwipe
virtual void OnEndSwipe()
Definition: vtkInteractorStyle.h:314
vtkInteractorStyle::Spin
virtual void Spin()
Definition: vtkInteractorStyle.h:302
vtkInteractorStyle::StartTimer
virtual void StartTimer()
vtkInteractorStyle::OnPan
virtual void OnPan()
Definition: vtkInteractorStyle.h:322
vtkInteractorStyle::OutlineActor
vtkActor * OutlineActor
Definition: vtkInteractorStyle.h:447
vtkInteractorStyle::TimerId
int TimerId
Definition: vtkInteractorStyle.h:440
vtkInteractorStyle::Outline
vtkOutlineSource * Outline
Definition: vtkInteractorStyle.h:445
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:313
vtkInteractorStyle::SetTDxStyle
virtual void SetTDxStyle(vtkTDxInteractorStyle *tdxStyle)
vtkInteractorStyle::StartAnimate
virtual void StartAnimate()
Interaction mode entry points used internally.
vtkInteractorStyle::EnvironmentRotate
virtual void EnvironmentRotate()
Definition: vtkInteractorStyle.h:307
vtkInteractorStyle::OnMiddleButtonDown
virtual void OnMiddleButtonDown()
Definition: vtkInteractorStyle.h:238
vtkInteractorStyle::PropPicked
int PropPicked
Definition: vtkInteractorStyle.h:451
vtkInteractorStyle::OnRightButtonDown
virtual void OnRightButtonDown()
Definition: vtkInteractorStyle.h:240
vtkInteractorStyle::EndRotate
virtual void EndRotate()
vtkInteractorStyle::OnMouseWheelForward
virtual void OnMouseWheelForward()
Definition: vtkInteractorStyle.h:242
vtkInteractorStyle::StartState
virtual void StartState(int newstate)
utility routines used by state changes
vtkInteractorStyle::PickedRenderer
vtkRenderer * PickedRenderer
Definition: vtkInteractorStyle.h:448
vtkInteractorStyle::StartTwoPointer
virtual void StartTwoPointer()
vtkInteractorStyle::OnStartRotate
virtual void OnStartRotate()
Definition: vtkInteractorStyle.h:318
vtkInteractorStyle::CurrentProp
vtkProp * CurrentProp
Definition: vtkInteractorStyle.h:449
vtkInteractorStyle::OnLeftButtonDown
virtual void OnLeftButtonDown()
Definition: vtkInteractorStyle.h:236
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:46
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkInteractorStyle::StartPan
virtual void StartPan()
vtkInteractorStyle::TDxStyle
vtkTDxInteractorStyle * TDxStyle
Definition: vtkInteractorStyle.h:461
vtkInteractorStyle::OnKeyUp
virtual void OnKeyUp()
Definition: vtkInteractorStyle.h:269
vtkInteractorStyle::~vtkInteractorStyle
~vtkInteractorStyle() override
vtkInteractorStyle::OnDropFiles
virtual void OnDropFiles(vtkStringArray *vtkNotUsed(filePaths))
When files are dropped on the render window.
Definition: vtkInteractorStyle.h:376
vtkInteractorStyle::HighlightProp
virtual void HighlightProp(vtkProp *prop)
When picking successfully selects an actor, this method highlights the picked prop appropriately.
vtkInteractorStyle::UseTimers
vtkTypeBool UseTimers
Definition: vtkInteractorStyle.h:439
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:83
vtkInteractorStyle::OnConfigure
virtual void OnConfigure()
Definition: vtkInteractorStyle.h:285
vtkInteractorStyle::EndSpin
virtual void EndSpin()
vtkInteractorStyle::EventForwarder
vtkEventForwarderCommand * EventForwarder
Definition: vtkInteractorStyle.h:459
vtkInteractorStyle::OnExpose
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
Definition: vtkInteractorStyle.h:284
vtkInteractorStyle::OnEndPan
virtual void OnEndPan()
Definition: vtkInteractorStyle.h:323
vtkInteractorStyle
provide event-driven interface to the rendering window (defines trackball mode)
Definition: vtkInteractorStyle.h:148
vtkInteractorStyle::OnMouseWheelBackward
virtual void OnMouseWheelBackward()
Definition: vtkInteractorStyle.h:243
vtkInteractorStyle::TimerDuration
unsigned long TimerDuration
Definition: vtkInteractorStyle.h:456
vtkInteractorStyle::OnLeftButtonUp
virtual void OnLeftButtonUp()
Definition: vtkInteractorStyle.h:237
vtkInteractorStyle::OnFourthButtonDown
virtual void OnFourthButtonDown()
Definition: vtkInteractorStyle.h:244
vtkInteractorStyle::StopState
virtual void StopState()
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:54
vtkActor2D
a actor that draws 2D data
Definition: vtkActor2D.h:40
vtkInteractorStyle::StartGesture
virtual void StartGesture()
vtkInteractorStyle::EndUniformScale
virtual void EndUniformScale()
vtkInteractorStyle::OnEndRotate
virtual void OnEndRotate()
Definition: vtkInteractorStyle.h:320
vtkInteractorStyle::New
static vtkInteractorStyle * New()
This class must be supplied with a vtkRenderWindowInteractor wrapper or parent.
vtkInteractorStyle::UniformScale
virtual void UniformScale()
Definition: vtkInteractorStyle.h:306
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:68
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:301
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:45
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:37
vtkInteractorStyle::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
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:43
vtkInteractorStyle::OnRightButtonUp
virtual void OnRightButtonUp()
Definition: vtkInteractorStyle.h:241
vtkInteractorStyle::OnEnter
virtual void OnEnter()
Definition: vtkInteractorStyle.h:286
vtkInteractorStyle::OnRotate
virtual void OnRotate()
Definition: vtkInteractorStyle.h:319
vtkInteractorStyle::MouseWheelMotionFactor
double MouseWheelMotionFactor
Definition: vtkInteractorStyle.h:453
vtkInteractorStyle::EndZoom
virtual void EndZoom()
vtkInteractorStyle::StartDolly
virtual void StartDolly()
vtkInteractorStyle::SetEnabled
void SetEnabled(int) override
Turn on/off this interactor.
vtkInteractorStyle::HighlightActor2D
virtual void HighlightActor2D(vtkActor2D *actor2D)
vtkInteractorStyle::EndTwoPointer
virtual void EndTwoPointer()
vtkInteractorStyle::StartSpin
virtual void StartSpin()
vtkEventForwarderCommand
a simple event forwarder command
Definition: vtkEventForwarderCommand.h:35
vtkInteractorStyle::OutlineMapper
vtkPolyDataMapper * OutlineMapper
Definition: vtkInteractorStyle.h:446
vtkInteractorStyle::OnTimer
virtual void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
vtkInteractorStyle::PickedActor2D
vtkActor2D * PickedActor2D
Definition: vtkInteractorStyle.h:450
vtkInteractorStyle::StartRotate
virtual void StartRotate()
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkInteractorStyle::OnKeyDown
virtual void OnKeyDown()
Definition: vtkInteractorStyle.h:264
vtkInteractorStyle::OnLeave
virtual void OnLeave()
Definition: vtkInteractorStyle.h:287
vtkInteractorStyle::Zoom
virtual void Zoom()
Definition: vtkInteractorStyle.h:305
vtkInteractorStyle::OnMove3D
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:252
vtkInteractorStyle::OnFifthButtonUp
virtual void OnFifthButtonUp()
Definition: vtkInteractorStyle.h:247