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
a simple event forwarder command
virtual void OnLeftButtonDown()
virtual void Rotate()
These methods for the different interactions in different modes are overridden in subclasses to perfo...
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:53
virtual void SetInteractor(vtkRenderWindowInteractor *iren)
This method is used to associate the widget with the render window interactor.
virtual void OnDropFiles(vtkStringArray *vtkNotUsed(filePaths))
When files are dropped on the render window.
virtual void OnSwipe()
virtual void OnRotate()
virtual void OnMiddleButtonDown()
virtual void OnRightButtonDown()
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
abstract base class for most VTK objects
Definition: vtkObject.h:62
virtual void OnButton3D(vtkEventData *)
virtual void OnLeftButtonUp()
virtual void OnKeyUp()
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Handles the char widget activation event.
virtual void OnMiddleButtonUp()
virtual void OnEndPinch()
virtual void OnFifthButtonUp()
a actor that draws 2D data
Definition: vtkActor2D.h:39
virtual void OnEndPan()
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
virtual void UniformScale()
a vtkAbstractArray subclass for strings
abstract specification for renderers
Definition: vtkRenderer.h:67
virtual void OnMouseWheelForward()
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:43
virtual void OnKeyRelease()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void OnKeyPress()
virtual void OnEnter()
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor ...
vtkPolyDataMapper * OutlineMapper
int vtkTypeBool
Definition: vtkABI.h:69
virtual void OnRightButtonUp()
platform-independent render window interaction including picking and frame rate control.
virtual void OnLongTap()
vtkEventForwarderCommand * EventForwarder
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
supports function callbacks
vtkActor2D * PickedActor2D
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
virtual void OnKeyDown()
virtual void OnConfigure()
a simple class to control print indentation
Definition: vtkIndent.h:33
virtual void OnMouseWheelBackward()
unsigned long TimerDuration
virtual void OnStartPinch()
create wireframe outline around bounding box
virtual void OnEndSwipe()
virtual void OnDropLocation(double *vtkNotUsed(position))
When the mouse location is updated while dragging files.
vtkTypeBool AutoAdjustCameraClippingRange
virtual void OnStartPan()
vtkRenderer * PickedRenderer
provide 3DConnexion device event-driven interface to the rendering window
virtual void OnFifthButtonDown()
map vtkPolyData to graphics primitives
virtual void OnStartSwipe()
gesture based events
virtual void OnStartRotate()
provide event-driven interface to the rendering window (defines trackball mode)
virtual void OnLeave()
virtual void OnChar()
Sets up the keypress-i event.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
virtual void OnEndRotate()
virtual void OnFourthButtonDown()
virtual void OnPinch()
virtual void EnvironmentRotate()
virtual void OnMouseMove()
Generic event bindings can be overridden in subclasses.
virtual void OnFourthButtonUp()
vtkOutlineSource * Outline
vtkTDxInteractorStyle * TDxStyle