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 OnMouseWheelLeft() {}
245  virtual void OnMouseWheelRight() {}
246  virtual void OnFourthButtonDown() {}
247  virtual void OnFourthButtonUp() {}
248  virtual void OnFifthButtonDown() {}
249  virtual void OnFifthButtonUp() {}
250 
254  virtual void OnMove3D(vtkEventData*) {}
255  virtual void OnButton3D(vtkEventData*) {}
256 
261  void OnChar() override;
262 
263  // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
264  // An empty implementation is provided. The behavior of this function should
265  // be specified in the subclass.
266  virtual void OnKeyDown() {}
267 
268  // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
269  // An empty implementation is provided. The behavior of this function should
270  // be specified in the subclass.
271  virtual void OnKeyUp() {}
272 
273  // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
274  // An empty implementation is provided. The behavior of this function should
275  // be specified in the subclass.
276  virtual void OnKeyPress() {}
277 
278  // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
279  // An empty implementation is provided. The behavior of this function should
280  // be specified in the subclass.
281  virtual void OnKeyRelease() {}
282 
286  virtual void OnExpose() {}
287  virtual void OnConfigure() {}
288  virtual void OnEnter() {}
289  virtual void OnLeave() {}
290 
295  virtual void OnTimer();
296 
303  virtual void Rotate() {}
304  virtual void Spin() {}
305  virtual void Pan() {}
306  virtual void Dolly() {}
307  virtual void Zoom() {}
308  virtual void UniformScale() {}
309  virtual void EnvironmentRotate() {}
310 
314  virtual void OnStartSwipe() {}
315  virtual void OnSwipe() {}
316  virtual void OnEndSwipe() {}
317  virtual void OnStartPinch() {}
318  virtual void OnPinch() {}
319  virtual void OnEndPinch() {}
320  virtual void OnStartRotate() {}
321  virtual void OnRotate() {}
322  virtual void OnEndRotate() {}
323  virtual void OnStartPan() {}
324  virtual void OnPan() {}
325  virtual void OnEndPan() {}
326  virtual void OnTap() {}
327  virtual void OnLongTap() {}
328 
330 
333  virtual void StartState(int newstate);
334  virtual void StopState();
336 
338 
341  virtual void StartAnimate();
342  virtual void StopAnimate();
343  virtual void StartRotate();
344  virtual void EndRotate();
345  virtual void StartZoom();
346  virtual void EndZoom();
347  virtual void StartPan();
348  virtual void EndPan();
349  virtual void StartSpin();
350  virtual void EndSpin();
351  virtual void StartDolly();
352  virtual void EndDolly();
353  virtual void StartUniformScale();
354  virtual void EndUniformScale();
355  virtual void StartTimer();
356  virtual void EndTimer();
357  virtual void StartTwoPointer();
358  virtual void EndTwoPointer();
359  virtual void StartGesture();
360  virtual void EndGesture();
361  virtual void StartEnvRotate();
362  virtual void EndEnvRotate();
364 
371  virtual void OnDropLocation(double* vtkNotUsed(position)) {}
372 
378  virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
379 
381 
387  virtual void HighlightProp(vtkProp* prop);
388  virtual void HighlightActor2D(vtkActor2D* actor2D);
389  virtual void HighlightProp3D(vtkProp3D* prop3D);
391 
393 
397  vtkSetVector3Macro(PickColor, double);
398  vtkGetVectorMacro(PickColor, double, 3);
400 
402 
407  vtkSetMacro(MouseWheelMotionFactor, double);
408  vtkGetMacro(MouseWheelMotionFactor, double);
410 
412 
416  vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
417  virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
419 
423  void DelegateTDxEvent(unsigned long event, void* calldata);
424 
425 protected:
427  ~vtkInteractorStyle() override;
428 
432  static void ProcessEvents(
433  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
434 
435  // Keep track of current state
436  int State;
438 
439  // Should observers be handled here, should we fire timers
442  int TimerId; // keep track of the timers that are created/destroyed
443 
445 
446  // For picking and highlighting props
453  int PropPicked; // bool: prop picked?
454  double PickColor[3]; // support 2D picking
456 
457  // Control the timer duration
458  unsigned long TimerDuration; // in milliseconds
459 
460  // Forward events to the RenderWindowInteractor
462 
464 
465 private:
466  vtkInteractorStyle(const vtkInteractorStyle&) = delete;
467  void operator=(const vtkInteractorStyle&) = delete;
468 };
469 
470 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:36
vtkInteractorStyle::OnLongTap
virtual void OnLongTap()
Definition: vtkInteractorStyle.h:327
vtkInteractorStyle::Dolly
virtual void Dolly()
Definition: vtkInteractorStyle.h:306
vtkEventData
Definition: vtkEventData.h:65
vtkOutlineSource
create wireframe outline around bounding box
Definition: vtkOutlineSource.h:36
vtkInteractorStyle::OnKeyRelease
virtual void OnKeyRelease()
Definition: vtkInteractorStyle.h:281
vtkInteractorStyle::OnKeyPress
virtual void OnKeyPress()
Definition: vtkInteractorStyle.h:276
vtkInteractorStyle::OnStartSwipe
virtual void OnStartSwipe()
gesture based events
Definition: vtkInteractorStyle.h:314
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:371
vtkInteractorStyle::OnFifthButtonDown
virtual void OnFifthButtonDown()
Definition: vtkInteractorStyle.h:248
vtkInteractorObserver::OnChar
virtual void OnChar()
Sets up the keypress-i event.
vtkInteractorStyle::AutoAdjustCameraClippingRange
vtkTypeBool AutoAdjustCameraClippingRange
Definition: vtkInteractorStyle.h:444
vtkInteractorStyle::OnStartPan
virtual void OnStartPan()
Definition: vtkInteractorStyle.h:323
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:305
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:318
vtkInteractorStyle::OnButton3D
virtual void OnButton3D(vtkEventData *)
Definition: vtkInteractorStyle.h:255
vtkInteractorStyle::OnMiddleButtonUp
virtual void OnMiddleButtonUp()
Definition: vtkInteractorStyle.h:239
vtkInteractorStyle::OnEndPinch
virtual void OnEndPinch()
Definition: vtkInteractorStyle.h:319
vtkInteractorStyle::OnTap
virtual void OnTap()
Definition: vtkInteractorStyle.h:326
vtkInteractorStyle::AnimState
int AnimState
Definition: vtkInteractorStyle.h:437
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:247
vtkInteractorStyle::State
int State
Definition: vtkInteractorStyle.h:436
vtkInteractorStyle::OnStartPinch
virtual void OnStartPinch()
Definition: vtkInteractorStyle.h:317
vtkInteractorStyle::HandleObservers
vtkTypeBool HandleObservers
Definition: vtkInteractorStyle.h:440
vtkX3D::position
@ position
Definition: vtkX3D.h:267
vtkInteractorStyle::OnEndSwipe
virtual void OnEndSwipe()
Definition: vtkInteractorStyle.h:316
vtkInteractorStyle::Spin
virtual void Spin()
Definition: vtkInteractorStyle.h:304
vtkInteractorStyle::OnPan
virtual void OnPan()
Definition: vtkInteractorStyle.h:324
vtkInteractorStyle::OutlineActor
vtkActor * OutlineActor
Definition: vtkInteractorStyle.h:449
vtkInteractorStyle::TimerId
int TimerId
Definition: vtkInteractorStyle.h:442
vtkInteractorStyle::Outline
vtkOutlineSource * Outline
Definition: vtkInteractorStyle.h:447
vtkInteractorStyle::OnSwipe
virtual void OnSwipe()
Definition: vtkInteractorStyle.h:315
vtkInteractorStyle::EnvironmentRotate
virtual void EnvironmentRotate()
Definition: vtkInteractorStyle.h:309
vtkInteractorStyle::OnMiddleButtonDown
virtual void OnMiddleButtonDown()
Definition: vtkInteractorStyle.h:238
vtkInteractorStyle::PropPicked
int PropPicked
Definition: vtkInteractorStyle.h:453
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:450
vtkInteractorStyle::OnStartRotate
virtual void OnStartRotate()
Definition: vtkInteractorStyle.h:320
vtkInteractorStyle::CurrentProp
vtkProp * CurrentProp
Definition: vtkInteractorStyle.h:451
vtkInteractorStyle::OnLeftButtonDown
virtual void OnLeftButtonDown()
Definition: vtkInteractorStyle.h:236
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
vtkInteractorStyle::OnMouseWheelRight
virtual void OnMouseWheelRight()
Definition: vtkInteractorStyle.h:245
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:463
vtkInteractorStyle::OnKeyUp
virtual void OnKeyUp()
Definition: vtkInteractorStyle.h:271
vtkInteractorStyle::OnDropFiles
virtual void OnDropFiles(vtkStringArray *vtkNotUsed(filePaths))
When files are dropped on the render window.
Definition: vtkInteractorStyle.h:378
vtkInteractorStyle::UseTimers
vtkTypeBool UseTimers
Definition: vtkInteractorStyle.h:441
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:287
vtkInteractorStyle::EventForwarder
vtkEventForwarderCommand * EventForwarder
Definition: vtkInteractorStyle.h:461
vtkInteractorStyle::OnExpose
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
Definition: vtkInteractorStyle.h:286
vtkInteractorStyle::OnEndPan
virtual void OnEndPan()
Definition: vtkInteractorStyle.h:325
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:458
vtkInteractorStyle::OnLeftButtonUp
virtual void OnLeftButtonUp()
Definition: vtkInteractorStyle.h:237
vtkInteractorStyle::OnFourthButtonDown
virtual void OnFourthButtonDown()
Definition: vtkInteractorStyle.h:246
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:322
vtkInteractorStyle::UniformScale
virtual void UniformScale()
Definition: vtkInteractorStyle.h:308
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:303
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:44
vtkInteractorStyle::OnMouseWheelLeft
virtual void OnMouseWheelLeft()
Definition: vtkInteractorStyle.h:244
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:288
vtkInteractorStyle::OnRotate
virtual void OnRotate()
Definition: vtkInteractorStyle.h:321
vtkInteractorStyle::MouseWheelMotionFactor
double MouseWheelMotionFactor
Definition: vtkInteractorStyle.h:455
vtkEventForwarderCommand
a simple event forwarder command
Definition: vtkEventForwarderCommand.h:34
vtkInteractorStyle::OutlineMapper
vtkPolyDataMapper * OutlineMapper
Definition: vtkInteractorStyle.h:448
vtkInteractorStyle::PickedActor2D
vtkActor2D * PickedActor2D
Definition: vtkInteractorStyle.h:452
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkInteractorStyle::OnKeyDown
virtual void OnKeyDown()
Definition: vtkInteractorStyle.h:266
vtkInteractorStyle::OnLeave
virtual void OnLeave()
Definition: vtkInteractorStyle.h:289
vtkInteractorStyle::Zoom
virtual void Zoom()
Definition: vtkInteractorStyle.h:307
vtkInteractorStyle::OnMove3D
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:254
vtkInteractorStyle::OnFifthButtonUp
virtual void OnFifthButtonUp()
Definition: vtkInteractorStyle.h:249