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
86#ifndef vtkInteractorStyle_h
87#define vtkInteractorStyle_h
88
90#include "vtkRenderingCoreModule.h" // For export macro
91
92// Motion flags
93
94#define VTKIS_START 0
95#define VTKIS_NONE 0
96
97#define VTKIS_ROTATE 1
98#define VTKIS_PAN 2
99#define VTKIS_SPIN 3
100#define VTKIS_DOLLY 4
101#define VTKIS_ZOOM 5
102#define VTKIS_USCALE 6
103#define VTKIS_TIMER 7
104#define VTKIS_FORWARDFLY 8
105#define VTKIS_REVERSEFLY 9
106#define VTKIS_TWO_POINTER 10
107#define VTKIS_CLIP 11
108#define VTKIS_PICK 12 // perform a pick at the last location
109#define VTKIS_LOAD_CAMERA_POSE 13 // iterate through saved camera poses
110#define VTKIS_POSITION_PROP 14 // adjust the position, orientation of a prop
111#define VTKIS_EXIT 15 // call exit callback
112#define VTKIS_TOGGLE_DRAW_CONTROLS 16 // draw device controls helpers
113#define VTKIS_MENU 17 // invoke an application menu
114#define VTKIS_GESTURE 18 // touch interaction in progress
115#define VTKIS_ENV_ROTATE 19 // rotate the renderer environment texture
116#define VTKIS_GROUNDMOVEMENT 20 // horizontal movement according to the 4 directions
117#define VTKIS_ELEVATION 21 // vertical movement (up and down)
118
119#define VTKIS_ANIM_OFF 0
120#define VTKIS_ANIM_ON 1
121
122VTK_ABI_NAMESPACE_BEGIN
123class vtkActor2D;
124class vtkActor;
126class vtkEventData;
128class vtkOutlineSource;
130class vtkProp3D;
131class vtkProp;
132class vtkStringArray;
134
135class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
136{
137public:
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 OnLeftButtonDoubleClick() {}
232 virtual void OnRightButtonDoubleClick() {}
233 virtual void OnMouseWheelForward() {}
234 virtual void OnMouseWheelBackward() {}
235 virtual void OnMouseWheelLeft() {}
236 virtual void OnMouseWheelRight() {}
237 virtual void OnFourthButtonDown() {}
238 virtual void OnFourthButtonUp() {}
239 virtual void OnFifthButtonDown() {}
240 virtual void OnFifthButtonUp() {}
241
245 virtual void OnMove3D(vtkEventData*) {}
246 virtual void OnButton3D(vtkEventData*) {}
247 virtual void OnPick3D(vtkEventData*) {}
248 virtual void OnClip3D(vtkEventData*) {}
249 virtual void OnSelect3D(vtkEventData*) {}
250 virtual void OnMenu3D(vtkEventData*) {}
251 virtual void OnNextPose3D(vtkEventData*) {}
254 virtual void OnElevation3D(vtkEventData*) {}
255
260 void OnChar() override;
261
262 // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
263 // An empty implementation is provided. The behavior of this function should
264 // be specified in the subclass.
265 virtual void OnKeyDown() {}
266
267 // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
268 // An empty implementation is provided. The behavior of this function should
269 // be specified in the subclass.
270 virtual void OnKeyUp() {}
271
272 // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
273 // An empty implementation is provided. The behavior of this function should
274 // be specified in the subclass.
275 virtual void OnKeyPress() {}
276
277 // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
278 // An empty implementation is provided. The behavior of this function should
279 // be specified in the subclass.
280 virtual void OnKeyRelease() {}
281
285 virtual void OnExpose() {}
286 virtual void OnConfigure() {}
287 virtual void OnEnter() {}
288 virtual void OnLeave() {}
289
294 virtual void OnTimer();
295
302 virtual void Rotate() {}
303 virtual void Spin() {}
304 virtual void Pan() {}
305 virtual void Dolly() {}
306 virtual void Zoom() {}
307 virtual void UniformScale() {}
308 virtual void EnvironmentRotate() {}
309
313 virtual void OnStartSwipe() {}
314 virtual void OnSwipe() {}
315 virtual void OnEndSwipe() {}
316 virtual void OnStartPinch() {}
317 virtual void OnPinch() {}
318 virtual void OnEndPinch() {}
319 virtual void OnStartRotate() {}
320 virtual void OnRotate() {}
321 virtual void OnEndRotate() {}
322 virtual void OnStartPan() {}
323 virtual void OnPan() {}
324 virtual void OnEndPan() {}
325 virtual void OnTap() {}
326 virtual void OnLongTap() {}
327
329
332 virtual void StartState(int newstate);
333 virtual void StopState();
335
337
340 virtual void StartAnimate();
341 virtual void StopAnimate();
342 virtual void StartRotate();
343 virtual void EndRotate();
344 virtual void StartZoom();
345 virtual void EndZoom();
346 virtual void StartPan();
347 virtual void EndPan();
348 virtual void StartSpin();
349 virtual void EndSpin();
350 virtual void StartDolly();
351 virtual void EndDolly();
352 virtual void StartUniformScale();
353 virtual void EndUniformScale();
354 virtual void StartTimer();
355 virtual void EndTimer();
356 virtual void StartTwoPointer();
357 virtual void EndTwoPointer();
358 virtual void StartGesture();
359 virtual void EndGesture();
360 virtual void StartEnvRotate();
361 virtual void EndEnvRotate();
363
370 virtual void OnDropLocation(double* vtkNotUsed(position)) {}
371
377 virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
378
380
386 virtual void HighlightProp(vtkProp* prop);
387 virtual void HighlightActor2D(vtkActor2D* actor2D);
388 virtual void HighlightProp3D(vtkProp3D* prop3D);
390
392
396 vtkSetVector3Macro(PickColor, double);
397 vtkGetVectorMacro(PickColor, double, 3);
399
401
406 vtkSetMacro(MouseWheelMotionFactor, double);
407 vtkGetMacro(MouseWheelMotionFactor, double);
409
411
415 vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
416 virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
418
422 void DelegateTDxEvent(unsigned long event, void* calldata);
423
424protected:
427
431 static void ProcessEvents(
432 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
433
434 // Keep track of current state
435 int State;
437
438 // Should observers be handled here, should we fire timers
441 int TimerId; // keep track of the timers that are created/destroyed
442
444
445 // For picking and highlighting props
452 int PropPicked; // bool: prop picked?
453 double PickColor[3]; // support 2D picking
455
456 // Control the timer duration
457 unsigned long TimerDuration; // in milliseconds
458
459 // Forward events to the RenderWindowInteractor
461
463
464private:
465 vtkInteractorStyle(const vtkInteractorStyle&) = delete;
466 void operator=(const vtkInteractorStyle&) = delete;
467};
468
469VTK_ABI_NAMESPACE_END
470#endif
a actor that draws 2D data
Definition vtkActor2D.h:35
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:41
supports function callbacks
a simple event forwarder command
a simple class to control print indentation
Definition vtkIndent.h:29
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:49
create wireframe outline around bounding box
map vtkPolyData to graphics primitives
represents an 3D object for placement in a rendered scene
Definition vtkProp3D.h:39
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:43
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition vtkRenderer.h:59
a vtkAbstractArray subclass for strings
provide 3DConnexion device event-driven interface to the rendering window
int vtkTypeBool
Definition vtkABI.h:64