VTK
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 "vtkRenderingCoreModule.h" // For export macro
96 #include "vtkInteractorObserver.h"
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 
121 #define VTKIS_ANIM_OFF 0
122 #define VTKIS_ANIM_ON 1
123 
124 class vtkActor2D;
125 class vtkActor;
126 class vtkCallbackCommand;
127 class vtkEventData;
129 class vtkOutlineSource;
130 class vtkPolyDataMapper;
131 class vtkProp3D;
132 class vtkProp;
134 
135 class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
136 {
137 public:
143  static vtkInteractorStyle *New();
144 
146  void PrintSelf(ostream& os, vtkIndent indent) override;
147 
152  void SetInteractor(vtkRenderWindowInteractor *interactor) override;
153 
161  void SetEnabled(int) override;
162 
164 
172  vtkSetClampMacro(AutoAdjustCameraClippingRange, vtkTypeBool, 0, 1 );
173  vtkGetMacro(AutoAdjustCameraClippingRange, vtkTypeBool );
174  vtkBooleanMacro(AutoAdjustCameraClippingRange, vtkTypeBool );
176 
182  void FindPokedRenderer(int,int);
183 
185 
188  vtkGetMacro(State,int);
190 
192 
195  vtkGetMacro(UseTimers,vtkTypeBool);
196  vtkSetMacro(UseTimers,vtkTypeBool);
197  vtkBooleanMacro(UseTimers,vtkTypeBool);
199 
201 
207  vtkSetClampMacro(TimerDuration,unsigned long,1,100000);
208  vtkGetMacro(TimerDuration,unsigned long);
210 
212 
215  vtkSetMacro(HandleObservers,vtkTypeBool);
216  vtkGetMacro(HandleObservers,vtkTypeBool);
217  vtkBooleanMacro(HandleObservers,vtkTypeBool);
219 
223  virtual void OnMouseMove() {}
224  virtual void OnLeftButtonDown() {}
225  virtual void OnLeftButtonUp() {}
226  virtual void OnMiddleButtonDown() {}
227  virtual void OnMiddleButtonUp() {}
228  virtual void OnRightButtonDown() {}
229  virtual void OnRightButtonUp() {}
230  virtual void OnMouseWheelForward() {}
231  virtual void OnMouseWheelBackward() {}
232  virtual void OnFourthButtonDown() {}
233  virtual void OnFourthButtonUp() {}
234  virtual void OnFifthButtonDown() {}
235  virtual void OnFifthButtonUp() {}
236 
237 
241  virtual void OnMove3D(vtkEventData *) {}
242  virtual void OnButton3D(vtkEventData *) {}
243 
248  void OnChar() override;
249 
250  // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
251  // An empty implementation is provided. The behavior of this function should
252  // be specified in the subclass.
253  virtual void OnKeyDown() {}
254 
255  // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
256  // An empty implementation is provided. The behavior of this function should
257  // be specified in the subclass.
258  virtual void OnKeyUp() {}
259 
260  // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
261  // An empty implementation is provided. The behavior of this function should
262  // be specified in the subclass.
263  virtual void OnKeyPress() {}
264 
265  // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
266  // An empty implementation is provided. The behavior of this function should
267  // be specified in the subclass.
268  virtual void OnKeyRelease() {}
269 
273  virtual void OnExpose() {}
274  virtual void OnConfigure() {}
275  virtual void OnEnter() {}
276  virtual void OnLeave() {}
277 
282  virtual void OnTimer();
283 
290  virtual void Rotate() {}
291  virtual void Spin() {}
292  virtual void Pan() {}
293  virtual void Dolly() {}
294  virtual void Zoom() {}
295  virtual void UniformScale() {}
296 
300  virtual void OnPinch() {}
301  virtual void OnRotate() {}
302  virtual void OnPan() {}
303  virtual void OnTap() {}
304  virtual void OnLongTap() {}
305  virtual void OnSwipe() {}
306 
308 
311  virtual void StartState(int newstate);
312  virtual void StopState();
314 
316 
319  virtual void StartAnimate();
320  virtual void StopAnimate();
321  virtual void StartRotate();
322  virtual void EndRotate();
323  virtual void StartZoom();
324  virtual void EndZoom();
325  virtual void StartPan();
326  virtual void EndPan();
327  virtual void StartSpin();
328  virtual void EndSpin();
329  virtual void StartDolly();
330  virtual void EndDolly();
331  virtual void StartUniformScale();
332  virtual void EndUniformScale();
333  virtual void StartTimer();
334  virtual void EndTimer();
335  virtual void StartTwoPointer();
336  virtual void EndTwoPointer();
338 
340 
346  virtual void HighlightProp(vtkProp *prop);
347  virtual void HighlightActor2D(vtkActor2D *actor2D);
348  virtual void HighlightProp3D(vtkProp3D *prop3D);
350 
352 
356  vtkSetVector3Macro(PickColor,double);
357  vtkGetVectorMacro(PickColor, double, 3);
359 
361 
366  vtkSetMacro(MouseWheelMotionFactor, double);
367  vtkGetMacro(MouseWheelMotionFactor, double);
369 
371 
375  vtkGetObjectMacro(TDxStyle,vtkTDxInteractorStyle);
376  virtual void SetTDxStyle(vtkTDxInteractorStyle *tdxStyle);
378 
382  void DelegateTDxEvent(unsigned long event,
383  void *calldata);
384 
385 protected:
387  ~vtkInteractorStyle() override;
388 
392  static void ProcessEvents(vtkObject* object,
393  unsigned long event,
394  void* clientdata,
395  void* calldata);
396 
397  // Keep track of current state
398  int State;
400 
401  // Should observers be handled here, should we fire timers
404  int TimerId; //keep track of the timers that are created/destroyed
405 
407 
408  // For picking and highlighting props
415  int PropPicked; // bool: prop picked?
416  double PickColor[3]; // support 2D picking
418 
419  // Control the timer duration
420  unsigned long TimerDuration; //in milliseconds
421 
422  // Forward events to the RenderWindowInteractor
424 
426 
427 private:
428  vtkInteractorStyle(const vtkInteractorStyle&) = delete;
429  void operator=(const vtkInteractorStyle&) = delete;
430 };
431 
432 #endif
vtkPolyDataMapper
map vtkPolyData to graphics primitives
Definition: vtkPolyDataMapper.h:36
vtkInteractorStyle::OnLongTap
virtual void OnLongTap()
Definition: vtkInteractorStyle.h:304
vtkInteractorStyle::Dolly
virtual void Dolly()
Definition: vtkInteractorStyle.h:293
vtkEventData
Definition: vtkEventData.h:60
vtkOutlineSource
create wireframe outline around bounding box
Definition: vtkOutlineSource.h:36
vtkInteractorStyle::OnKeyRelease
virtual void OnKeyRelease()
Definition: vtkInteractorStyle.h:268
vtkInteractorStyle::OnKeyPress
virtual void OnKeyPress()
Definition: vtkInteractorStyle.h:263
vtkProp3D
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:43
vtkInteractorStyle::OnFifthButtonDown
virtual void OnFifthButtonDown()
Definition: vtkInteractorStyle.h:234
vtkInteractorObserver::OnChar
virtual void OnChar()
Sets up the keypress-i event.
vtkInteractorStyle::AutoAdjustCameraClippingRange
vtkTypeBool AutoAdjustCameraClippingRange
Definition: vtkInteractorStyle.h:406
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:292
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:53
vtkInteractorObserver
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
Definition: vtkInteractorObserver.h:59
vtkInteractorStyle::OnPinch
virtual void OnPinch()
gesture based events
Definition: vtkInteractorStyle.h:300
vtkInteractorStyle::OnButton3D
virtual void OnButton3D(vtkEventData *)
Definition: vtkInteractorStyle.h:242
vtkInteractorStyle::OnMiddleButtonUp
virtual void OnMiddleButtonUp()
Definition: vtkInteractorStyle.h:227
vtkInteractorStyle::OnTap
virtual void OnTap()
Definition: vtkInteractorStyle.h:303
vtkInteractorStyle::AnimState
int AnimState
Definition: vtkInteractorStyle.h:399
vtkInteractorStyle::OnMouseMove
virtual void OnMouseMove()
Generic event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:223
vtkInteractorStyle::OnFourthButtonUp
virtual void OnFourthButtonUp()
Definition: vtkInteractorStyle.h:233
vtkInteractorStyle::State
int State
Definition: vtkInteractorStyle.h:398
vtkInteractorStyle::HandleObservers
vtkTypeBool HandleObservers
Definition: vtkInteractorStyle.h:402
vtkInteractorStyle::Spin
virtual void Spin()
Definition: vtkInteractorStyle.h:291
vtkInteractorStyle::OnPan
virtual void OnPan()
Definition: vtkInteractorStyle.h:302
vtkInteractorStyle::OutlineActor
vtkActor * OutlineActor
Definition: vtkInteractorStyle.h:411
vtkInteractorStyle::TimerId
int TimerId
Definition: vtkInteractorStyle.h:404
vtkInteractorStyle::Outline
vtkOutlineSource * Outline
Definition: vtkInteractorStyle.h:409
vtkInteractorStyle::OnSwipe
virtual void OnSwipe()
Definition: vtkInteractorStyle.h:305
vtkInteractorStyle::OnMiddleButtonDown
virtual void OnMiddleButtonDown()
Definition: vtkInteractorStyle.h:226
vtkInteractorStyle::PropPicked
int PropPicked
Definition: vtkInteractorStyle.h:415
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:228
vtkInteractorStyle::OnMouseWheelForward
virtual void OnMouseWheelForward()
Definition: vtkInteractorStyle.h:230
vtkInteractorStyle::PickedRenderer
vtkRenderer * PickedRenderer
Definition: vtkInteractorStyle.h:412
vtkInteractorStyle::CurrentProp
vtkProp * CurrentProp
Definition: vtkInteractorStyle.h:413
vtkInteractorStyle::OnLeftButtonDown
virtual void OnLeftButtonDown()
Definition: vtkInteractorStyle.h:224
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:73
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkInteractorStyle::TDxStyle
vtkTDxInteractorStyle * TDxStyle
Definition: vtkInteractorStyle.h:425
vtkInteractorStyle::OnKeyUp
virtual void OnKeyUp()
Definition: vtkInteractorStyle.h:258
vtkInteractorStyle::UseTimers
vtkTypeBool UseTimers
Definition: vtkInteractorStyle.h:403
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:72
vtkInteractorStyle::OnConfigure
virtual void OnConfigure()
Definition: vtkInteractorStyle.h:274
vtkInteractorStyle::EventForwarder
vtkEventForwarderCommand * EventForwarder
Definition: vtkInteractorStyle.h:423
vtkInteractorStyle::OnExpose
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
Definition: vtkInteractorStyle.h:273
vtkInteractorStyle
provide event-driven interface to the rendering window (defines trackball mode)
Definition: vtkInteractorStyle.h:135
vtkInteractorStyle::OnMouseWheelBackward
virtual void OnMouseWheelBackward()
Definition: vtkInteractorStyle.h:231
vtkInteractorStyle::TimerDuration
unsigned long TimerDuration
Definition: vtkInteractorStyle.h:420
vtkInteractorStyle::OnLeftButtonUp
virtual void OnLeftButtonUp()
Definition: vtkInteractorStyle.h:225
vtkInteractorStyle::OnFourthButtonDown
virtual void OnFourthButtonDown()
Definition: vtkInteractorStyle.h:232
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:46
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::UniformScale
virtual void UniformScale()
Definition: vtkInteractorStyle.h:295
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:57
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:290
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:44
vtkTDxInteractorStyle
provide 3DConnexion device event-driven interface to the rendering window
Definition: vtkTDxInteractorStyle.h:42
vtkInteractorStyle::OnRightButtonUp
virtual void OnRightButtonUp()
Definition: vtkInteractorStyle.h:229
vtkInteractorStyle::OnEnter
virtual void OnEnter()
Definition: vtkInteractorStyle.h:275
vtkInteractorStyle::OnRotate
virtual void OnRotate()
Definition: vtkInteractorStyle.h:301
vtkInteractorStyle::MouseWheelMotionFactor
double MouseWheelMotionFactor
Definition: vtkInteractorStyle.h:417
vtkEventForwarderCommand
a simple event forwarder command
Definition: vtkEventForwarderCommand.h:34
vtkInteractorStyle::OutlineMapper
vtkPolyDataMapper * OutlineMapper
Definition: vtkInteractorStyle.h:410
vtkInteractorStyle::PickedActor2D
vtkActor2D * PickedActor2D
Definition: vtkInteractorStyle.h:414
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkInteractorStyle::OnKeyDown
virtual void OnKeyDown()
Definition: vtkInteractorStyle.h:253
vtkInteractorStyle::OnLeave
virtual void OnLeave()
Definition: vtkInteractorStyle.h:276
vtkInteractorStyle::Zoom
virtual void Zoom()
Definition: vtkInteractorStyle.h:294
vtkInteractorStyle::OnMove3D
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
Definition: vtkInteractorStyle.h:241
vtkInteractorStyle::OnFifthButtonUp
virtual void OnFifthButtonUp()
Definition: vtkInteractorStyle.h:235