VTK  9.1.0
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=========================================================================*/
110#ifndef vtkInteractorStyle_h
111#define vtkInteractorStyle_h
112
114#include "vtkRenderingCoreModule.h" // For export macro
115
116// Motion flags
117
118#define VTKIS_START 0
119#define VTKIS_NONE 0
120
121#define VTKIS_ROTATE 1
122#define VTKIS_PAN 2
123#define VTKIS_SPIN 3
124#define VTKIS_DOLLY 4
125#define VTKIS_ZOOM 5
126#define VTKIS_USCALE 6
127#define VTKIS_TIMER 7
128#define VTKIS_FORWARDFLY 8
129#define VTKIS_REVERSEFLY 9
130#define VTKIS_TWO_POINTER 10
131#define VTKIS_CLIP 11
132#define VTKIS_PICK 12 // perform a pick at the last location
133#define VTKIS_LOAD_CAMERA_POSE 13 // iterate through saved camera poses
134#define VTKIS_POSITION_PROP 14 // adjust the position, orientation of a prop
135#define VTKIS_EXIT 15 // call exit callback
136#define VTKIS_TOGGLE_DRAW_CONTROLS 16 // draw device controls helpers
137#define VTKIS_MENU 17 // invoke an application menu
138#define VTKIS_GESTURE 18 // touch interaction in progress
139#define VTKIS_ENV_ROTATE 19 // rotate the renderer environment texture
140
141#define VTKIS_ANIM_OFF 0
142#define VTKIS_ANIM_ON 1
143
144class vtkActor2D;
145class vtkActor;
147class vtkEventData;
149class vtkOutlineSource;
151class vtkProp3D;
152class vtkProp;
153class vtkStringArray;
155
156class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
157{
158public:
165
167 void PrintSelf(ostream& os, vtkIndent indent) override;
168
173 void SetInteractor(vtkRenderWindowInteractor* interactor) override;
174
182 void SetEnabled(int) override;
183
185
193 vtkSetClampMacro(AutoAdjustCameraClippingRange, vtkTypeBool, 0, 1);
194 vtkGetMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
195 vtkBooleanMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
197
203 void FindPokedRenderer(int, int);
204
206
209 vtkGetMacro(State, int);
211
213
216 vtkGetMacro(UseTimers, vtkTypeBool);
217 vtkSetMacro(UseTimers, vtkTypeBool);
218 vtkBooleanMacro(UseTimers, vtkTypeBool);
220
222
228 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
229 vtkGetMacro(TimerDuration, unsigned long);
231
233
236 vtkSetMacro(HandleObservers, vtkTypeBool);
237 vtkGetMacro(HandleObservers, vtkTypeBool);
238 vtkBooleanMacro(HandleObservers, vtkTypeBool);
240
244 virtual void OnMouseMove() {}
245 virtual void OnLeftButtonDown() {}
246 virtual void OnLeftButtonUp() {}
247 virtual void OnMiddleButtonDown() {}
248 virtual void OnMiddleButtonUp() {}
249 virtual void OnRightButtonDown() {}
250 virtual void OnRightButtonUp() {}
251 virtual void OnLeftButtonDoubleClick() {}
253 virtual void OnRightButtonDoubleClick() {}
254 virtual void OnMouseWheelForward() {}
255 virtual void OnMouseWheelBackward() {}
256 virtual void OnMouseWheelLeft() {}
257 virtual void OnMouseWheelRight() {}
258 virtual void OnFourthButtonDown() {}
259 virtual void OnFourthButtonUp() {}
260 virtual void OnFifthButtonDown() {}
261 virtual void OnFifthButtonUp() {}
262
266 virtual void OnMove3D(vtkEventData*) {}
267 virtual void OnButton3D(vtkEventData*) {}
268 virtual void OnPick3D(vtkEventData*) {}
269 virtual void OnClip3D(vtkEventData*) {}
270 virtual void OnSelect3D(vtkEventData*) {}
271 virtual void OnMenu3D(vtkEventData*) {}
272 virtual void OnNextPose3D(vtkEventData*) {}
275
280 void OnChar() override;
281
282 // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
283 // An empty implementation is provided. The behavior of this function should
284 // be specified in the subclass.
285 virtual void OnKeyDown() {}
286
287 // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
288 // An empty implementation is provided. The behavior of this function should
289 // be specified in the subclass.
290 virtual void OnKeyUp() {}
291
292 // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
293 // An empty implementation is provided. The behavior of this function should
294 // be specified in the subclass.
295 virtual void OnKeyPress() {}
296
297 // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
298 // An empty implementation is provided. The behavior of this function should
299 // be specified in the subclass.
300 virtual void OnKeyRelease() {}
301
305 virtual void OnExpose() {}
306 virtual void OnConfigure() {}
307 virtual void OnEnter() {}
308 virtual void OnLeave() {}
309
314 virtual void OnTimer();
315
322 virtual void Rotate() {}
323 virtual void Spin() {}
324 virtual void Pan() {}
325 virtual void Dolly() {}
326 virtual void Zoom() {}
327 virtual void UniformScale() {}
328 virtual void EnvironmentRotate() {}
329
333 virtual void OnStartSwipe() {}
334 virtual void OnSwipe() {}
335 virtual void OnEndSwipe() {}
336 virtual void OnStartPinch() {}
337 virtual void OnPinch() {}
338 virtual void OnEndPinch() {}
339 virtual void OnStartRotate() {}
340 virtual void OnRotate() {}
341 virtual void OnEndRotate() {}
342 virtual void OnStartPan() {}
343 virtual void OnPan() {}
344 virtual void OnEndPan() {}
345 virtual void OnTap() {}
346 virtual void OnLongTap() {}
347
349
352 virtual void StartState(int newstate);
353 virtual void StopState();
355
357
360 virtual void StartAnimate();
361 virtual void StopAnimate();
362 virtual void StartRotate();
363 virtual void EndRotate();
364 virtual void StartZoom();
365 virtual void EndZoom();
366 virtual void StartPan();
367 virtual void EndPan();
368 virtual void StartSpin();
369 virtual void EndSpin();
370 virtual void StartDolly();
371 virtual void EndDolly();
372 virtual void StartUniformScale();
373 virtual void EndUniformScale();
374 virtual void StartTimer();
375 virtual void EndTimer();
376 virtual void StartTwoPointer();
377 virtual void EndTwoPointer();
378 virtual void StartGesture();
379 virtual void EndGesture();
380 virtual void StartEnvRotate();
381 virtual void EndEnvRotate();
383
390 virtual void OnDropLocation(double* vtkNotUsed(position)) {}
391
397 virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
398
400
406 virtual void HighlightProp(vtkProp* prop);
407 virtual void HighlightActor2D(vtkActor2D* actor2D);
408 virtual void HighlightProp3D(vtkProp3D* prop3D);
410
412
416 vtkSetVector3Macro(PickColor, double);
417 vtkGetVectorMacro(PickColor, double, 3);
419
421
426 vtkSetMacro(MouseWheelMotionFactor, double);
427 vtkGetMacro(MouseWheelMotionFactor, double);
429
431
435 vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
436 virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
438
442 void DelegateTDxEvent(unsigned long event, void* calldata);
443
444protected:
447
451 static void ProcessEvents(
452 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
453
454 // Keep track of current state
455 int State;
457
458 // Should observers be handled here, should we fire timers
461 int TimerId; // keep track of the timers that are created/destroyed
462
464
465 // For picking and highlighting props
472 int PropPicked; // bool: prop picked?
473 double PickColor[3]; // support 2D picking
475
476 // Control the timer duration
477 unsigned long TimerDuration; // in milliseconds
478
479 // Forward events to the RenderWindowInteractor
481
483
484private:
485 vtkInteractorStyle(const vtkInteractorStyle&) = delete;
486 void operator=(const vtkInteractorStyle&) = delete;
487};
488
489#endif
a actor that draws 2D data
Definition: vtkActor2D.h:49
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:55
supports function callbacks
a simple event forwarder command
a simple class to control print indentation
Definition: vtkIndent.h:43
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
provide event-driven interface to the rendering window (defines trackball mode)
virtual void StopAnimate()
Interaction mode entry points used internally.
vtkPolyDataMapper * OutlineMapper
virtual void OnFifthButtonUp()
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
virtual void OnMouseWheelBackward()
virtual void OnLeftButtonDoubleClick()
virtual void OnMiddleButtonDown()
virtual void OnLongTap()
virtual void OnEnter()
void SetEnabled(int) override
Turn on/off this interactor.
virtual void StartEnvRotate()
Interaction mode entry points used internally.
virtual void HighlightProp(vtkProp *prop)
When picking successfully selects an actor, this method highlights the picked prop appropriately.
virtual void EndUniformScale()
Interaction mode entry points used internally.
static vtkInteractorStyle * New()
This class must be supplied with a vtkRenderWindowInteractor wrapper or parent.
virtual void OnStartSwipe()
gesture based events
virtual void StartPan()
Interaction mode entry points used internally.
vtkEventForwarderCommand * EventForwarder
virtual void StartTimer()
Interaction mode entry points used internally.
virtual void OnRightButtonDown()
virtual void OnDropLocation(double *vtkNotUsed(position))
When the mouse location is updated while dragging files.
virtual void Rotate()
These methods for the different interactions in different modes are overridden in subclasses to perfo...
void DelegateTDxEvent(unsigned long event, void *calldata)
Called by the callback to process 3DConnexion device events.
virtual void EndDolly()
Interaction mode entry points used internally.
virtual void OnKeyPress()
virtual void OnEndPan()
virtual void HighlightProp3D(vtkProp3D *prop3D)
When picking successfully selects an actor, this method highlights the picked prop appropriately.
virtual void UniformScale()
virtual void OnExpose()
These are more esoteric events, but are useful in some cases.
virtual void OnRightButtonUp()
virtual void OnStartPinch()
virtual void StartGesture()
Interaction mode entry points used internally.
virtual void OnKeyUp()
virtual void OnEndPinch()
virtual void OnKeyDown()
virtual void OnStartRotate()
virtual void OnMouseWheelRight()
virtual void OnConfigure()
virtual void OnPinch()
virtual void OnLeftButtonDown()
virtual void EndPan()
Interaction mode entry points used internally.
unsigned long TimerDuration
virtual void OnRotate()
virtual void OnMouseWheelForward()
virtual void OnDropFiles(vtkStringArray *vtkNotUsed(filePaths))
When files are dropped on the render window.
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Main process event method.
virtual void OnFourthButtonUp()
virtual void HighlightActor2D(vtkActor2D *actor2D)
When picking successfully selects an actor, this method highlights the picked prop appropriately.
virtual void OnMiddleButtonUp()
virtual void EndGesture()
Interaction mode entry points used internally.
void SetInteractor(vtkRenderWindowInteractor *interactor) override
Set/Get the Interactor wrapper being controlled by this object.
virtual void OnMenu3D(vtkEventData *)
virtual void StartState(int newstate)
utility routines used by state changes
virtual void OnPick3D(vtkEventData *)
virtual void EnvironmentRotate()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void OnRightButtonDoubleClick()
virtual void OnFifthButtonDown()
virtual void EndTwoPointer()
Interaction mode entry points used internally.
virtual void OnTimer()
OnTimer calls Rotate, Rotate etc which should be overridden by style subclasses.
virtual void OnLeave()
virtual void OnPositionProp3D(vtkEventData *)
virtual void StartUniformScale()
Interaction mode entry points used internally.
virtual void OnStartPan()
vtkOutlineSource * Outline
virtual void SetTDxStyle(vtkTDxInteractorStyle *tdxStyle)
3Dconnexion device interactor style.
virtual void OnEndSwipe()
virtual void OnViewerMovement3D(vtkEventData *)
vtkRenderer * PickedRenderer
virtual void OnEndRotate()
virtual void OnClip3D(vtkEventData *)
virtual void StartZoom()
Interaction mode entry points used internally.
virtual void OnMouseWheelLeft()
virtual void StartSpin()
Interaction mode entry points used internally.
virtual void OnMouseMove()
Generic event bindings can be overridden in subclasses.
virtual void EndEnvRotate()
Interaction mode entry points used internally.
virtual void OnKeyRelease()
void FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
virtual void StopState()
utility routines used by state changes
virtual void EndSpin()
Interaction mode entry points used internally.
virtual void EndTimer()
Interaction mode entry points used internally.
virtual void EndZoom()
Interaction mode entry points used internally.
virtual void OnLeftButtonUp()
virtual void OnNextPose3D(vtkEventData *)
virtual void StartTwoPointer()
Interaction mode entry points used internally.
virtual void OnButton3D(vtkEventData *)
vtkActor2D * PickedActor2D
virtual void StartDolly()
Interaction mode entry points used internally.
~vtkInteractorStyle() override
virtual void OnSwipe()
virtual void StartRotate()
Interaction mode entry points used internally.
virtual void StartAnimate()
Interaction mode entry points used internally.
virtual void OnMiddleButtonDoubleClick()
virtual void OnSelect3D(vtkEventData *)
vtkTDxInteractorStyle * TDxStyle
virtual void OnFourthButtonDown()
void OnChar() override
OnChar is triggered when an ASCII key is pressed.
virtual void EndRotate()
Interaction mode entry points used internally.
vtkTypeBool AutoAdjustCameraClippingRange
abstract base class for most VTK objects
Definition: vtkObject.h:72
create wireframe outline around bounding box
map vtkPolyData to graphics primitives
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:53
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:66
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition: vtkRenderer.h:82
a vtkAbstractArray subclass for strings
provide 3DConnexion device event-driven interface to the rendering window
int vtkTypeBool
Definition: vtkABI.h:69