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=========================================================================*/
101#ifndef vtkInteractorStyle_h
102#define vtkInteractorStyle_h
103
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
135class vtkActor2D;
136class vtkActor;
138class vtkEventData;
140class vtkOutlineSource;
142class vtkProp3D;
143class vtkProp;
144class vtkStringArray;
146
147class VTKRENDERINGCORE_EXPORT vtkInteractorStyle : public vtkInteractorObserver
148{
149public:
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 OnLeftButtonDoubleClick() {}
244 virtual void OnRightButtonDoubleClick() {}
245 virtual void OnMouseWheelForward() {}
246 virtual void OnMouseWheelBackward() {}
247 virtual void OnMouseWheelLeft() {}
248 virtual void OnMouseWheelRight() {}
249 virtual void OnFourthButtonDown() {}
250 virtual void OnFourthButtonUp() {}
251 virtual void OnFifthButtonDown() {}
252 virtual void OnFifthButtonUp() {}
253
257 virtual void OnMove3D(vtkEventData*) {}
258 virtual void OnButton3D(vtkEventData*) {}
259 virtual void OnPick3D(vtkEventData*) {}
260 virtual void OnClip3D(vtkEventData*) {}
261 virtual void OnSelect3D(vtkEventData*) {}
262 virtual void OnMenu3D(vtkEventData*) {}
263 virtual void OnNextPose3D(vtkEventData*) {}
266
271 void OnChar() override;
272
273 // OnKeyDown is triggered by pressing any key (identical to OnKeyPress()).
274 // An empty implementation is provided. The behavior of this function should
275 // be specified in the subclass.
276 virtual void OnKeyDown() {}
277
278 // OnKeyUp is triggered by releaseing any key (identical to OnKeyRelease()).
279 // An empty implementation is provided. The behavior of this function should
280 // be specified in the subclass.
281 virtual void OnKeyUp() {}
282
283 // OnKeyPress is triggered by pressing any key (identical to OnKeyDown()).
284 // An empty implementation is provided. The behavior of this function should
285 // be specified in the subclass.
286 virtual void OnKeyPress() {}
287
288 // OnKeyRelease is triggered by pressing any key (identical to OnKeyUp()).
289 // An empty implementation is provided. The behavior of this function should
290 // be specified in the subclass.
291 virtual void OnKeyRelease() {}
292
296 virtual void OnExpose() {}
297 virtual void OnConfigure() {}
298 virtual void OnEnter() {}
299 virtual void OnLeave() {}
300
305 virtual void OnTimer();
306
313 virtual void Rotate() {}
314 virtual void Spin() {}
315 virtual void Pan() {}
316 virtual void Dolly() {}
317 virtual void Zoom() {}
318 virtual void UniformScale() {}
319 virtual void EnvironmentRotate() {}
320
324 virtual void OnStartSwipe() {}
325 virtual void OnSwipe() {}
326 virtual void OnEndSwipe() {}
327 virtual void OnStartPinch() {}
328 virtual void OnPinch() {}
329 virtual void OnEndPinch() {}
330 virtual void OnStartRotate() {}
331 virtual void OnRotate() {}
332 virtual void OnEndRotate() {}
333 virtual void OnStartPan() {}
334 virtual void OnPan() {}
335 virtual void OnEndPan() {}
336 virtual void OnTap() {}
337 virtual void OnLongTap() {}
338
340
343 virtual void StartState(int newstate);
344 virtual void StopState();
346
348
351 virtual void StartAnimate();
352 virtual void StopAnimate();
353 virtual void StartRotate();
354 virtual void EndRotate();
355 virtual void StartZoom();
356 virtual void EndZoom();
357 virtual void StartPan();
358 virtual void EndPan();
359 virtual void StartSpin();
360 virtual void EndSpin();
361 virtual void StartDolly();
362 virtual void EndDolly();
363 virtual void StartUniformScale();
364 virtual void EndUniformScale();
365 virtual void StartTimer();
366 virtual void EndTimer();
367 virtual void StartTwoPointer();
368 virtual void EndTwoPointer();
369 virtual void StartGesture();
370 virtual void EndGesture();
371 virtual void StartEnvRotate();
372 virtual void EndEnvRotate();
374
381 virtual void OnDropLocation(double* vtkNotUsed(position)) {}
382
388 virtual void OnDropFiles(vtkStringArray* vtkNotUsed(filePaths)) {}
389
391
397 virtual void HighlightProp(vtkProp* prop);
398 virtual void HighlightActor2D(vtkActor2D* actor2D);
399 virtual void HighlightProp3D(vtkProp3D* prop3D);
401
403
407 vtkSetVector3Macro(PickColor, double);
408 vtkGetVectorMacro(PickColor, double, 3);
410
412
417 vtkSetMacro(MouseWheelMotionFactor, double);
418 vtkGetMacro(MouseWheelMotionFactor, double);
420
422
426 vtkGetObjectMacro(TDxStyle, vtkTDxInteractorStyle);
427 virtual void SetTDxStyle(vtkTDxInteractorStyle* tdxStyle);
429
433 void DelegateTDxEvent(unsigned long event, void* calldata);
434
435protected:
438
442 static void ProcessEvents(
443 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
444
445 // Keep track of current state
446 int State;
448
449 // Should observers be handled here, should we fire timers
452 int TimerId; // keep track of the timers that are created/destroyed
453
455
456 // For picking and highlighting props
463 int PropPicked; // bool: prop picked?
464 double PickColor[3]; // support 2D picking
466
467 // Control the timer duration
468 unsigned long TimerDuration; // in milliseconds
469
470 // Forward events to the RenderWindowInteractor
472
474
475private:
476 vtkInteractorStyle(const vtkInteractorStyle&) = delete;
477 void operator=(const vtkInteractorStyle&) = delete;
478};
479
480#endif
a actor that draws 2D data
Definition: vtkActor2D.h:40
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:46
supports function callbacks
a simple event forwarder command
a simple class to control print indentation
Definition: vtkIndent.h:34
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:63
create wireframe outline around bounding box
map vtkPolyData to graphics primitives
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:44
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:57
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition: vtkRenderer.h:73
a vtkAbstractArray subclass for strings
provide 3DConnexion device event-driven interface to the rendering window
@ position
Definition: vtkX3D.h:267
int vtkTypeBool
Definition: vtkABI.h:69