VTK  9.3.0
vtkInteractorStyle.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
95#ifndef vtkInteractorStyle_h
96#define vtkInteractorStyle_h
97
99#include "vtkRenderingCoreModule.h" // For export macro
100
101// Motion flags
102
103#define VTKIS_START 0
104#define VTKIS_NONE 0
105
106#define VTKIS_ROTATE 1
107#define VTKIS_PAN 2
108#define VTKIS_SPIN 3
109#define VTKIS_DOLLY 4
110#define VTKIS_ZOOM 5
111#define VTKIS_USCALE 6
112#define VTKIS_TIMER 7
113#define VTKIS_FORWARDFLY 8
114#define VTKIS_REVERSEFLY 9
115#define VTKIS_TWO_POINTER 10
116#define VTKIS_CLIP 11
117#define VTKIS_PICK 12 // perform a pick at the last location
118#define VTKIS_LOAD_CAMERA_POSE 13 // iterate through saved camera poses
119#define VTKIS_POSITION_PROP 14 // adjust the position, orientation of a prop
120#define VTKIS_EXIT 15 // call exit callback
121#define VTKIS_TOGGLE_DRAW_CONTROLS 16 // draw device controls helpers
122#define VTKIS_MENU 17 // invoke an application menu
123#define VTKIS_GESTURE 18 // touch interaction in progress
124#define VTKIS_ENV_ROTATE 19 // rotate the renderer environment texture
125#define VTKIS_GROUNDMOVEMENT 20 // horizontal movement according to the 4 directions
126#define VTKIS_ELEVATION 21 // vertical movement (up and down)
127
128#define VTKIS_ANIM_OFF 0
129#define VTKIS_ANIM_ON 1
130
131VTK_ABI_NAMESPACE_BEGIN
132class vtkActor2D;
133class vtkActor;
135class vtkEventData;
137class vtkOutlineSource;
139class vtkProp3D;
140class vtkProp;
141class vtkStringArray;
143
144class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
145{
146public:
153
155 void PrintSelf(ostream& os, vtkIndent indent) override;
156
161 void SetInteractor(vtkRenderWindowInteractor* interactor) override;
162
170 void SetEnabled(int) override;
171
173
181 vtkSetClampMacro(AutoAdjustCameraClippingRange, vtkTypeBool, 0, 1);
182 vtkGetMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
183 vtkBooleanMacro(AutoAdjustCameraClippingRange, vtkTypeBool);
185
191 void FindPokedRenderer(int, int);
192
194
197 vtkGetMacro(State, int);
199
201
204 vtkGetMacro(UseTimers, vtkTypeBool);
205 vtkSetMacro(UseTimers, vtkTypeBool);
206 vtkBooleanMacro(UseTimers, vtkTypeBool);
208
210
216 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
217 vtkGetMacro(TimerDuration, unsigned long);
219
221
224 vtkSetMacro(HandleObservers, vtkTypeBool);
225 vtkGetMacro(HandleObservers, vtkTypeBool);
226 vtkBooleanMacro(HandleObservers, vtkTypeBool);
228
232 virtual void OnMouseMove() {}
233 virtual void OnLeftButtonDown() {}
234 virtual void OnLeftButtonUp() {}
235 virtual void OnMiddleButtonDown() {}
236 virtual void OnMiddleButtonUp() {}
237 virtual void OnRightButtonDown() {}
238 virtual void OnRightButtonUp() {}
239 virtual void OnLeftButtonDoubleClick() {}
241 virtual void OnRightButtonDoubleClick() {}
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 virtual void OnPick3D(vtkEventData*) {}
257 virtual void OnClip3D(vtkEventData*) {}
258 virtual void OnSelect3D(vtkEventData*) {}
259 virtual void OnMenu3D(vtkEventData*) {}
260 virtual void OnNextPose3D(vtkEventData*) {}
263 virtual void OnElevation3D(vtkEventData*) {}
264
269 void OnChar() override;
270
271 // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
272 // An empty implementation is provided. The behavior of this function should
273 // be specified in the subclass.
274 virtual void OnKeyDown() {}
275
276 // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
277 // An empty implementation is provided. The behavior of this function should
278 // be specified in the subclass.
279 virtual void OnKeyUp() {}
280
281 // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
282 // An empty implementation is provided. The behavior of this function should
283 // be specified in the subclass.
284 virtual void OnKeyPress() {}
285
286 // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
287 // An empty implementation is provided. The behavior of this function should
288 // be specified in the subclass.
289 virtual void OnKeyRelease() {}
290
294 virtual void OnExpose() {}
295 virtual void OnConfigure() {}
296 virtual void OnEnter() {}
297 virtual void OnLeave() {}
298
303 virtual void OnTimer();
304
311 virtual void Rotate() {}
312 virtual void Spin() {}
313 virtual void Pan() {}
314 virtual void Dolly() {}
315 virtual void Zoom() {}
316 virtual void UniformScale() {}
317 virtual void EnvironmentRotate() {}
318
322 virtual void OnStartSwipe() {}
323 virtual void OnSwipe() {}
324 virtual void OnEndSwipe() {}
325 virtual void OnStartPinch() {}
326 virtual void OnPinch() {}
327 virtual void OnEndPinch() {}
328 virtual void OnStartRotate() {}
329 virtual void OnRotate() {}
330 virtual void OnEndRotate() {}
331 virtual void OnStartPan() {}
332 virtual void OnPan() {}
333 virtual void OnEndPan() {}
334 virtual void OnTap() {}
335 virtual void OnLongTap() {}
336
338
341 virtual void StartState(int newstate);
342 virtual void StopState();
344
346
349 virtual void StartAnimate();
350 virtual void StopAnimate();
351 virtual void StartRotate();
352 virtual void EndRotate();
353 virtual void StartZoom();
354 virtual void EndZoom();
355 virtual void StartPan();
356 virtual void EndPan();
357 virtual void StartSpin();
358 virtual void EndSpin();
359 virtual void StartDolly();
360 virtual void EndDolly();
361 virtual void StartUniformScale();
362 virtual void EndUniformScale();
363 virtual void StartTimer();
364 virtual void EndTimer();
365 virtual void StartTwoPointer();
366 virtual void EndTwoPointer();
367 virtual void StartGesture();
368 virtual void EndGesture();
369 virtual void StartEnvRotate();
370 virtual void EndEnvRotate();
372
379 virtual void OnDropLocation(double* vtkNotUsed(position)) {}
380
386 virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
387
389
395 virtual void HighlightProp(vtkProp* prop);
396 virtual void HighlightActor2D(vtkActor2D* actor2D);
397 virtual void HighlightProp3D(vtkProp3D* prop3D);
399
401
405 vtkSetVector3Macro(PickColor, double);
406 vtkGetVectorMacro(PickColor, double, 3);
408
410
415 vtkSetMacro(MouseWheelMotionFactor, double);
416 vtkGetMacro(MouseWheelMotionFactor, double);
418
420
424 vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
425 virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
427
431 void DelegateTDxEvent(unsigned long event, void* calldata);
432
433protected:
436
440 static void ProcessEvents(
441 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
442
443 // Keep track of current state
444 int State;
446
447 // Should observers be handled here, should we fire timers
450 int TimerId; // keep track of the timers that are created/destroyed
451
453
454 // For picking and highlighting props
461 int PropPicked; // bool: prop picked?
462 double PickColor[3]; // support 2D picking
464
465 // Control the timer duration
466 unsigned long TimerDuration; // in milliseconds
467
468 // Forward events to the RenderWindowInteractor
470
472
473private:
474 vtkInteractorStyle(const vtkInteractorStyle&) = delete;
475 void operator=(const vtkInteractorStyle&) = delete;
476};
477
478VTK_ABI_NAMESPACE_END
479#endif
a actor that draws 2D data
Definition vtkActor2D.h:44
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:50
supports function callbacks
a simple event forwarder command
a simple class to control print indentation
Definition vtkIndent.h:38
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()
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 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 OnEndPinch()
virtual void OnStartRotate()
virtual void OnMouseWheelRight()
virtual void OnConfigure()
virtual void OnLeftButtonDown()
virtual void EndPan()
Interaction mode entry points used internally.
unsigned long TimerDuration
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 OnElevation3D(vtkEventData *)
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 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 *)
virtual void StartDolly()
Interaction mode entry points used internally.
~vtkInteractorStyle() override
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:58
create wireframe outline around bounding box
map vtkPolyData to graphics primitives
represents an 3D object for placement in a rendered scene
Definition vtkProp3D.h:48
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:52
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition vtkRenderer.h:68
a vtkAbstractArray subclass for strings
provide 3DConnexion device event-driven interface to the rendering window
int vtkTypeBool
Definition vtkABI.h:64