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:
155  static vtkInteractorStyle* New();
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:
425  ~vtkInteractorStyle() override;
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:36
vtkInteractorStyle::OnLongTap
virtual void OnLongTap()
Definition: vtkInteractorStyle.h:325
vtkInteractorStyle::Dolly
virtual void Dolly()
Definition: vtkInteractorStyle.h:304
vtkEventData
Definition: vtkEventData.h:65
vtkOutlineSource
create wireframe outline around bounding box
Definition: vtkOutlineSource.h:36
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:43
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
vtkInteractorObserver::OnChar
virtual void OnChar()
Sets up the keypress-i event.
vtkInteractorStyle::AutoAdjustCameraClippingRange
vtkTypeBool AutoAdjustCameraClippingRange
Definition: vtkInteractorStyle.h:442
vtkInteractorStyle::OnStartPan
virtual void OnStartPan()
Definition: vtkInteractorStyle.h:321
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkInteractorStyle::Pan
virtual void Pan()
Definition: vtkInteractorStyle.h:303
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkInteractorObserver
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
Definition: vtkInteractorObserver.h:65
vtkInteractorStyle::OnPinch
virtual void OnPinch()
Definition: vtkInteractorStyle.h:316
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::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::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::OnSwipe
virtual void OnSwipe()
Definition: vtkInteractorStyle.h:313
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
vtkInteractorObserver::ProcessEvents
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Handles the char widget activation event.
vtkInteractorStyle::OnRightButtonDown
virtual void OnRightButtonDown()
Definition: vtkInteractorStyle.h:240
vtkInteractorStyle::OnMouseWheelForward
virtual void OnMouseWheelForward()
Definition: vtkInteractorStyle.h:242
vtkInteractorStyle::PickedRenderer
vtkRenderer * PickedRenderer
Definition: vtkInteractorStyle.h:448
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:45
vtkInteractorObserver::SetEnabled
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
Definition: vtkInteractorObserver.h:79
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkInteractorStyle::TDxStyle
vtkTDxInteractorStyle * TDxStyle
Definition: vtkInteractorStyle.h:461
vtkInteractorStyle::OnKeyUp
virtual void OnKeyUp()
Definition: vtkInteractorStyle.h:269
vtkInteractorStyle::OnDropFiles
virtual void OnDropFiles(vtkStringArray *vtkNotUsed(filePaths))
When files are dropped on the render window.
Definition: vtkInteractorStyle.h:376
vtkInteractorStyle::UseTimers
vtkTypeBool UseTimers
Definition: vtkInteractorStyle.h:439
vtkInteractorObserver::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:82
vtkInteractorStyle::OnConfigure
virtual void OnConfigure()
Definition: vtkInteractorStyle.h:285
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:147
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
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:53
vtkInteractorObserver::SetInteractor
virtual void SetInteractor(vtkRenderWindowInteractor *iren)
This method is used to associate the widget with the render window interactor.
vtkActor2D
a actor that draws 2D data
Definition: vtkActor2D.h:39
vtkInteractorStyle::OnEndRotate
virtual void OnEndRotate()
Definition: vtkInteractorStyle.h:320
vtkInteractorStyle::UniformScale
virtual void UniformScale()
Definition: vtkInteractorStyle.h:306
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:67
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:44
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:36
vtkTDxInteractorStyle
provide 3DConnexion device event-driven interface to the rendering window
Definition: vtkTDxInteractorStyle.h:42
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
vtkEventForwarderCommand
a simple event forwarder command
Definition: vtkEventForwarderCommand.h:34
vtkInteractorStyle::OutlineMapper
vtkPolyDataMapper * OutlineMapper
Definition: vtkInteractorStyle.h:446
vtkInteractorStyle::PickedActor2D
vtkActor2D * PickedActor2D
Definition: vtkInteractorStyle.h:450
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