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 =========================================================================*/
92 #ifndef vtkInteractorStyle_h
93 #define vtkInteractorStyle_h
94 
95 #include "vtkInteractorObserver.h"
96 #include "vtkRenderingCoreModule.h" // For export macro
97 
98 // Motion flags
99 
100 #define VTKIS_START 0
101 #define VTKIS_NONE 0
102 
103 #define VTKIS_ROTATE 1
104 #define VTKIS_PAN 2
105 #define VTKIS_SPIN 3
106 #define VTKIS_DOLLY 4
107 #define VTKIS_ZOOM 5
108 #define VTKIS_USCALE 6
109 #define VTKIS_TIMER 7
110 #define VTKIS_FORWARDFLY 8
111 #define VTKIS_REVERSEFLY 9
112 #define VTKIS_TWO_POINTER 10
113 #define VTKIS_CLIP 11
114 #define VTKIS_PICK 12 // perform a pick at the last location
115 #define VTKIS_LOAD_CAMERA_POSE 13 // iterate through saved camera poses
116 #define VTKIS_POSITION_PROP 14 // adjust the position, orientation of a prop
117 #define VTKIS_EXIT 15 // call exit callback
118 #define VTKIS_TOGGLE_DRAW_CONTROLS 16 // draw device controls helpers
119 #define VTKIS_MENU 17 // invoke an application menu
120 #define VTKIS_GESTURE 18 // touch interaction in progress
121 #define VTKIS_ENV_ROTATE 19 // rotate the renderer environment texture
122 
123 #define VTKIS_ANIM_OFF 0
124 #define VTKIS_ANIM_ON 1
125 
126 class vtkActor2D;
127 class vtkActor;
128 class vtkCallbackCommand;
129 class vtkEventData;
131 class vtkOutlineSource;
132 class vtkPolyDataMapper;
133 class vtkProp3D;
134 class vtkProp;
135 class vtkStringArray;
137 
138 class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
139 {
140 public:
147 
149  void PrintSelf(ostream& os, vtkIndent indent) override;
150 
155  void SetInteractor(vtkRenderWindowInteractor* interactor) override;
156 
164  void SetEnabled(int) override;
165 
167 
175  vtkSetClampMacro(AutoAdjustCameraClippingRange, vtkTypeBool, 0, 1);
176  vtkGetMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
177  vtkBooleanMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
179 
185  void FindPokedRenderer(int, int);
186 
188 
191  vtkGetMacro(State, int);
193 
195 
198  vtkGetMacro(UseTimers, vtkTypeBool);
199  vtkSetMacro(UseTimers, vtkTypeBool);
200  vtkBooleanMacro(UseTimers, vtkTypeBool);
202 
204 
210  vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
211  vtkGetMacro(TimerDuration, unsigned long);
213 
215 
218  vtkSetMacro(HandleObservers, vtkTypeBool);
219  vtkGetMacro(HandleObservers, vtkTypeBool);
220  vtkBooleanMacro(HandleObservers, vtkTypeBool);
222 
226  virtual void OnMouseMove() {}
227  virtual void OnLeftButtonDown() {}
228  virtual void OnLeftButtonUp() {}
229  virtual void OnMiddleButtonDown() {}
230  virtual void OnMiddleButtonUp() {}
231  virtual void OnRightButtonDown() {}
232  virtual void OnRightButtonUp() {}
233  virtual void OnMouseWheelForward() {}
234  virtual void OnMouseWheelBackward() {}
235  virtual void OnFourthButtonDown() {}
236  virtual void OnFourthButtonUp() {}
237  virtual void OnFifthButtonDown() {}
238  virtual void OnFifthButtonUp() {}
239 
243  virtual void OnMove3D(vtkEventData*) {}
244  virtual void OnButton3D(vtkEventData*) {}
245 
250  void OnChar() override;
251 
252  // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
253  // An empty implementation is provided. The behavior of this function should
254  // be specified in the subclass.
255  virtual void OnKeyDown() {}
256 
257  // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
258  // An empty implementation is provided. The behavior of this function should
259  // be specified in the subclass.
260  virtual void OnKeyUp() {}
261 
262  // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
263  // An empty implementation is provided. The behavior of this function should
264  // be specified in the subclass.
265  virtual void OnKeyPress() {}
266 
267  // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
268  // An empty implementation is provided. The behavior of this function should
269  // be specified in the subclass.
270  virtual void OnKeyRelease() {}
271 
275  virtual void OnExpose() {}
276  virtual void OnConfigure() {}
277  virtual void OnEnter() {}
278  virtual void OnLeave() {}
279 
284  virtual void OnTimer();
285 
292  virtual void Rotate() {}
293  virtual void Spin() {}
294  virtual void Pan() {}
295  virtual void Dolly() {}
296  virtual void Zoom() {}
297  virtual void UniformScale() {}
298  virtual void EnvironmentRotate() {}
299 
303  virtual void OnStartSwipe() {}
304  virtual void OnSwipe() {}
305  virtual void OnEndSwipe() {}
306  virtual void OnStartPinch() {}
307  virtual void OnPinch() {}
308  virtual void OnEndPinch() {}
309  virtual void OnStartRotate() {}
310  virtual void OnRotate() {}
311  virtual void OnEndRotate() {}
312  virtual void OnStartPan() {}
313  virtual void OnPan() {}
314  virtual void OnEndPan() {}
315  virtual void OnTap() {}
316  virtual void OnLongTap() {}
317 
319 
322  virtual void StartState(int newstate);
323  virtual void StopState();
325 
327 
330  virtual void StartAnimate();
331  virtual void StopAnimate();
332  virtual void StartRotate();
333  virtual void EndRotate();
334  virtual void StartZoom();
335  virtual void EndZoom();
336  virtual void StartPan();
337  virtual void EndPan();
338  virtual void StartSpin();
339  virtual void EndSpin();
340  virtual void StartDolly();
341  virtual void EndDolly();
342  virtual void StartUniformScale();
343  virtual void EndUniformScale();
344  virtual void StartTimer();
345  virtual void EndTimer();
346  virtual void StartTwoPointer();
347  virtual void EndTwoPointer();
348  virtual void StartGesture();
349  virtual void EndGesture();
350  virtual void StartEnvRotate();
351  virtual void EndEnvRotate();
353 
360  virtual void OnDropLocation(double* vtkNotUsed(position)) {}
361 
367  virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
368 
370 
376  virtual void HighlightProp(vtkProp* prop);
377  virtual void HighlightActor2D(vtkActor2D* actor2D);
378  virtual void HighlightProp3D(vtkProp3D* prop3D);
380 
382 
386  vtkSetVector3Macro(PickColor, double);
387  vtkGetVectorMacro(PickColor, double, 3);
389 
391 
396  vtkSetMacro(MouseWheelMotionFactor, double);
397  vtkGetMacro(MouseWheelMotionFactor, double);
399 
401 
405  vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
406  virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
408 
412  void DelegateTDxEvent(unsigned long event, void* calldata);
413 
414 protected:
417 
421  static void ProcessEvents(
422  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
423 
424  // Keep track of current state
425  int State;
427 
428  // Should observers be handled here, should we fire timers
431  int TimerId; // keep track of the timers that are created/destroyed
432 
434 
435  // For picking and highlighting props
442  int PropPicked; // bool: prop picked?
443  double PickColor[3]; // support 2D picking
445 
446  // Control the timer duration
447  unsigned long TimerDuration; // in milliseconds
448 
449  // Forward events to the RenderWindowInteractor
451 
453 
454 private:
455  vtkInteractorStyle(const vtkInteractorStyle&) = delete;
456  void operator=(const vtkInteractorStyle&) = delete;
457 };
458 
459 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:37
vtkInteractorStyle::OnLongTap
virtual void OnLongTap()
Definition: vtkInteractorStyle.h:316
vtkInteractorStyle::Dolly
virtual void Dolly()
Definition: vtkInteractorStyle.h:295
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:270
vtkInteractorStyle::OnKeyPress
virtual void OnKeyPress()
Definition: vtkInteractorStyle.h:265
vtkInteractorStyle::OnStartSwipe
virtual void OnStartSwipe()
gesture based events
Definition: vtkInteractorStyle.h:303
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:360
vtkInteractorStyle::OnFifthButtonDown
virtual void OnFifthButtonDown()
Definition: vtkInteractorStyle.h:237
vtkInteractorStyle::AutoAdjustCameraClippingRange
vtkTypeBool AutoAdjustCameraClippingRange
Definition: vtkInteractorStyle.h:433
vtkInteractorStyle::OnStartPan
virtual void OnStartPan()
Definition: vtkInteractorStyle.h:312
vtkInteractorStyle::StartEnvRotate
virtual void StartEnvRotate()
vtkInteractorStyle::Pan
virtual void Pan()
Definition: vtkInteractorStyle.h:294
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:54
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()
Definition: vtkInteractorStyle.h:307
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:244
vtkInteractorStyle::OnMiddleButtonUp
virtual void OnMiddleButtonUp()
Definition: vtkInteractorStyle.h:230
vtkInteractorStyle::OnEndPinch
virtual void OnEndPinch()
Definition: vtkInteractorStyle.h:308
vtkInteractorStyle::OnTap
virtual void OnTap()
Definition: vtkInteractorStyle.h:315
vtkInteractorStyle::vtkInteractorStyle
vtkInteractorStyle()
vtkInteractorStyle::EndGesture
virtual void EndGesture()
vtkInteractorStyle::AnimState
int AnimState
Definition: vtkInteractorStyle.h:426
vtkInteractorStyle::OnMouseMove
virtual void OnMouseMove()
Generic event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:226
vtkInteractorStyle::OnFourthButtonUp
virtual void OnFourthButtonUp()
Definition: vtkInteractorStyle.h:236
vtkInteractorStyle::State
int State
Definition: vtkInteractorStyle.h:425
vtkInteractorStyle::OnStartPinch
virtual void OnStartPinch()
Definition: vtkInteractorStyle.h:306
vtkInteractorStyle::HandleObservers
vtkTypeBool HandleObservers
Definition: vtkInteractorStyle.h:429
vtkX3D::position
@ position
Definition: vtkX3D.h:267
vtkInteractorStyle::OnEndSwipe
virtual void OnEndSwipe()
Definition: vtkInteractorStyle.h:305
vtkInteractorStyle::Spin
virtual void Spin()
Definition: vtkInteractorStyle.h:293
vtkInteractorStyle::StartTimer
virtual void StartTimer()
vtkInteractorStyle::OnPan
virtual void OnPan()
Definition: vtkInteractorStyle.h:313
vtkInteractorStyle::OutlineActor
vtkActor * OutlineActor
Definition: vtkInteractorStyle.h:438
vtkInteractorStyle::TimerId
int TimerId
Definition: vtkInteractorStyle.h:431
vtkInteractorStyle::Outline
vtkOutlineSource * Outline
Definition: vtkInteractorStyle.h:436
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:304
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:298
vtkInteractorStyle::OnMiddleButtonDown
virtual void OnMiddleButtonDown()
Definition: vtkInteractorStyle.h:229
vtkInteractorStyle::PropPicked
int PropPicked
Definition: vtkInteractorStyle.h:442
vtkInteractorStyle::OnRightButtonDown
virtual void OnRightButtonDown()
Definition: vtkInteractorStyle.h:231
vtkInteractorStyle::EndRotate
virtual void EndRotate()
vtkInteractorStyle::OnMouseWheelForward
virtual void OnMouseWheelForward()
Definition: vtkInteractorStyle.h:233
vtkInteractorStyle::StartState
virtual void StartState(int newstate)
utility routines used by state changes
vtkInteractorStyle::PickedRenderer
vtkRenderer * PickedRenderer
Definition: vtkInteractorStyle.h:439
vtkInteractorStyle::StartTwoPointer
virtual void StartTwoPointer()
vtkInteractorStyle::OnStartRotate
virtual void OnStartRotate()
Definition: vtkInteractorStyle.h:309
vtkInteractorStyle::CurrentProp
vtkProp * CurrentProp
Definition: vtkInteractorStyle.h:440
vtkInteractorStyle::OnLeftButtonDown
virtual void OnLeftButtonDown()
Definition: vtkInteractorStyle.h:227
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:452
vtkInteractorStyle::OnKeyUp
virtual void OnKeyUp()
Definition: vtkInteractorStyle.h:260
vtkInteractorStyle::~vtkInteractorStyle
~vtkInteractorStyle() override
vtkInteractorStyle::OnDropFiles
virtual void OnDropFiles(vtkStringArray *vtkNotUsed(filePaths))
When files are dropped on the render window.
Definition: vtkInteractorStyle.h:367
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:430
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:74
vtkInteractorStyle::OnConfigure
virtual void OnConfigure()
Definition: vtkInteractorStyle.h:276
vtkInteractorStyle::EndSpin
virtual void EndSpin()
vtkInteractorStyle::EventForwarder
vtkEventForwarderCommand * EventForwarder
Definition: vtkInteractorStyle.h:450
vtkInteractorStyle::OnExpose
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
Definition: vtkInteractorStyle.h:275
vtkInteractorStyle::OnEndPan
virtual void OnEndPan()
Definition: vtkInteractorStyle.h:314
vtkInteractorStyle
provide event-driven interface to the rendering window (defines trackball mode)
Definition: vtkInteractorStyle.h:139
vtkInteractorStyle::OnMouseWheelBackward
virtual void OnMouseWheelBackward()
Definition: vtkInteractorStyle.h:234
vtkInteractorStyle::TimerDuration
unsigned long TimerDuration
Definition: vtkInteractorStyle.h:447
vtkInteractorStyle::OnLeftButtonUp
virtual void OnLeftButtonUp()
Definition: vtkInteractorStyle.h:228
vtkInteractorStyle::OnFourthButtonDown
virtual void OnFourthButtonDown()
Definition: vtkInteractorStyle.h:235
vtkInteractorStyle::StopState
virtual void StopState()
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:48
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:311
vtkInteractorStyle::New
static vtkInteractorStyle * New()
This class must be supplied with a vtkRenderWindowInteractor wrapper or parent.
vtkInteractorStyle::UniformScale
virtual void UniformScale()
Definition: vtkInteractorStyle.h:297
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:59
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:292
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:232
vtkInteractorStyle::OnEnter
virtual void OnEnter()
Definition: vtkInteractorStyle.h:277
vtkInteractorStyle::OnRotate
virtual void OnRotate()
Definition: vtkInteractorStyle.h:310
vtkInteractorStyle::MouseWheelMotionFactor
double MouseWheelMotionFactor
Definition: vtkInteractorStyle.h:444
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:437
vtkInteractorStyle::OnTimer
virtual void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
vtkInteractorStyle::PickedActor2D
vtkActor2D * PickedActor2D
Definition: vtkInteractorStyle.h:441
vtkInteractorStyle::StartRotate
virtual void StartRotate()
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkInteractorStyle::OnKeyDown
virtual void OnKeyDown()
Definition: vtkInteractorStyle.h:255
vtkInteractorStyle::OnLeave
virtual void OnLeave()
Definition: vtkInteractorStyle.h:278
vtkInteractorStyle::Zoom
virtual void Zoom()
Definition: vtkInteractorStyle.h:296
vtkInteractorStyle::OnMove3D
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:243
vtkInteractorStyle::OnFifthButtonUp
virtual void OnFifthButtonUp()
Definition: vtkInteractorStyle.h:238