VTK  9.3.0
vtkRenderWindowInteractor.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
39#ifndef vtkRenderWindowInteractor_h
40#define vtkRenderWindowInteractor_h
41
42#include "vtkCommand.h" // for method sig
43#include "vtkObject.h"
44#include "vtkRenderingCoreModule.h" // For export macro
45#include "vtkSmartPointer.h" // For InteractorStyle
46
47VTK_ABI_NAMESPACE_BEGIN
48class vtkTimerIdMap;
49
50// Timer flags for win32/X compatibility
51#define VTKI_TIMER_FIRST 0
52#define VTKI_TIMER_UPDATE 1
53
54// maximum pointers active at once
55// for example in multitouch
56#define VTKI_MAX_POINTERS 5
57
60class vtkAssemblyPath;
63class vtkRenderWindow;
64class vtkRenderer;
68
69class VTKRENDERINGCORE_EXPORT vtkRenderWindowInteractor : public vtkObject
70{
71
73
74public:
77 void PrintSelf(ostream& os, vtkIndent indent) override;
78
80
87 virtual void Initialize();
89 {
90 this->Initialized = 0;
91 this->Enabled = 0;
92 this->Initialize();
93 }
95
100 void UnRegister(vtkObjectBase* o) override;
101
107 virtual void Start();
108
115 virtual void ProcessEvents() {}
116
120 vtkGetMacro(Done, bool);
121 vtkSetMacro(Done, bool);
122
132 virtual void Enable()
133 {
134 this->Enabled = 1;
135 this->Modified();
136 }
137 virtual void Disable()
138 {
139 this->Enabled = 0;
140 this->Modified();
141 }
142 vtkGetMacro(Enabled, int);
143
145
149 vtkBooleanMacro(EnableRender, bool);
150 vtkSetMacro(EnableRender, bool);
151 vtkGetMacro(EnableRender, bool);
153
155
159 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
161
163
169 vtkGetObjectMacro(HardwareWindow, vtkHardwareWindow);
171
179 virtual void UpdateSize(int x, int y);
180
197 virtual int CreateTimer(int timerType); // first group, for backward compatibility
198 virtual int DestroyTimer(); // first group, for backward compatibility
199
204 int CreateRepeatingTimer(unsigned long duration);
205
210 int CreateOneShotTimer(unsigned long duration);
211
216 int IsOneShotTimer(int timerId);
217
221 unsigned long GetTimerDuration(int timerId);
222
226 int ResetTimer(int timerId);
227
232 int DestroyTimer(int timerId);
233
237 virtual int GetVTKTimerId(int platformTimerId);
238
239 // Moved into the public section of the class so that classless timer procs
240 // can access these enum members without being "friends"...
241 enum
242 {
243 OneShotTimer = 1,
244 RepeatingTimer
245 };
246
248
257 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
258 vtkGetMacro(TimerDuration, unsigned long);
260
262
274 vtkSetMacro(TimerEventId, int);
275 vtkGetMacro(TimerEventId, int);
276 vtkSetMacro(TimerEventType, int);
277 vtkGetMacro(TimerEventType, int);
278 vtkSetMacro(TimerEventDuration, int);
279 vtkGetMacro(TimerEventDuration, int);
280 vtkSetMacro(TimerEventPlatformId, int);
281 vtkGetMacro(TimerEventPlatformId, int);
283
289 virtual void TerminateApp() { this->Done = true; }
290
292
299
301
305 vtkSetMacro(LightFollowCamera, vtkTypeBool);
306 vtkGetMacro(LightFollowCamera, vtkTypeBool);
307 vtkBooleanMacro(LightFollowCamera, vtkTypeBool);
309
311
318 vtkSetClampMacro(DesiredUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
319 vtkGetMacro(DesiredUpdateRate, double);
321
323
328 vtkSetClampMacro(StillUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
329 vtkGetMacro(StillUpdateRate, double);
331
333
337 vtkGetMacro(Initialized, int);
339
341
348 vtkGetObjectMacro(Picker, vtkAbstractPicker);
350
356
358
364 vtkGetObjectMacro(PickingManager, vtkPickingManager);
366
368
372 virtual void ExitCallback();
373 virtual void UserCallback();
374 virtual void StartPickCallback();
375 virtual void EndPickCallback();
377
381 virtual void GetMousePosition(int* x, int* y)
382 {
383 *x = 0;
384 *y = 0;
385 }
386
388
395
400 virtual void Render();
401
403
408 void FlyTo(vtkRenderer* ren, double x, double y, double z);
409 void FlyTo(vtkRenderer* ren, double* x) { this->FlyTo(ren, x[0], x[1], x[2]); }
410 void FlyToImage(vtkRenderer* ren, double x, double y);
411 void FlyToImage(vtkRenderer* ren, double* x) { this->FlyToImage(ren, x[0], x[1]); }
413
415
418 vtkSetClampMacro(NumberOfFlyFrames, int, 1, VTK_INT_MAX);
419 vtkGetMacro(NumberOfFlyFrames, int);
421
423
427 vtkSetMacro(Dolly, double);
428 vtkGetMacro(Dolly, double);
430
432
440 vtkGetVector2Macro(EventPosition, int);
441 vtkGetVector2Macro(LastEventPosition, int);
442 vtkSetVector2Macro(LastEventPosition, int);
443 virtual void SetEventPosition(int x, int y)
444 {
445 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
446 << "," << y << ")");
447 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
448 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
449 {
450 this->LastEventPosition[0] = this->EventPosition[0];
451 this->LastEventPosition[1] = this->EventPosition[1];
452 this->EventPosition[0] = x;
453 this->EventPosition[1] = y;
454 this->Modified();
455 }
456 }
457 virtual void SetEventPosition(int pos[2]) { this->SetEventPosition(pos[0], pos[1]); }
458 virtual void SetEventPositionFlipY(int x, int y)
459 {
460 this->SetEventPosition(x, this->Size[1] - y - 1);
461 }
462 virtual void SetEventPositionFlipY(int pos[2]) { this->SetEventPositionFlipY(pos[0], pos[1]); }
464
465 virtual int* GetEventPositions(int pointerIndex)
466 {
467 if (pointerIndex >= VTKI_MAX_POINTERS)
468 {
469 return nullptr;
470 }
471 return this->EventPositions[pointerIndex];
472 }
473 virtual int* GetLastEventPositions(int pointerIndex)
474 {
475 if (pointerIndex >= VTKI_MAX_POINTERS)
476 {
477 return nullptr;
478 }
479 return this->LastEventPositions[pointerIndex];
480 }
481 virtual void SetEventPosition(int x, int y, int pointerIndex)
482 {
483 if (pointerIndex < 0 || pointerIndex >= VTKI_MAX_POINTERS)
484 {
485 return;
486 }
487 if (pointerIndex == 0)
488 {
489 this->LastEventPosition[0] = this->EventPosition[0];
490 this->LastEventPosition[1] = this->EventPosition[1];
491 this->EventPosition[0] = x;
492 this->EventPosition[1] = y;
493 }
494 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
495 << "," << y << ") for pointerIndex number " << pointerIndex);
496 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
497 this->LastEventPositions[pointerIndex][0] != x ||
498 this->LastEventPositions[pointerIndex][1] != y)
499 {
500 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
501 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
502 this->EventPositions[pointerIndex][0] = x;
503 this->EventPositions[pointerIndex][1] = y;
504 this->Modified();
505 }
506 }
507 virtual void SetEventPosition(int pos[2], int pointerIndex)
508 {
509 this->SetEventPosition(pos[0], pos[1], pointerIndex);
510 }
511 virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
512 {
513 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
514 }
515 virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
516 {
517 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
518 }
519
521
524 vtkSetMacro(AltKey, int);
525 vtkGetMacro(AltKey, int);
527
529
532 vtkSetMacro(ControlKey, int);
533 vtkGetMacro(ControlKey, int);
535
537
540 vtkSetMacro(ShiftKey, int);
541 vtkGetMacro(ShiftKey, int);
543
545
548 vtkSetMacro(KeyCode, char);
549 vtkGetMacro(KeyCode, char);
551
553
557 vtkSetMacro(RepeatCount, int);
558 vtkGetMacro(RepeatCount, int);
560
562
568 vtkSetStringMacro(KeySym);
569 vtkGetStringMacro(KeySym);
571
573
576 vtkSetMacro(PointerIndex, int);
577 vtkGetMacro(PointerIndex, int);
579
581
584 void SetRotation(double rotation);
585 vtkGetMacro(Rotation, double);
586 vtkGetMacro(LastRotation, double);
588
590
593 void SetScale(double scale);
594 vtkGetMacro(Scale, double);
595 vtkGetMacro(LastScale, double);
597
599
602 void SetTranslation(double val[2]);
603 vtkGetVector2Macro(Translation, double);
604 vtkGetVector2Macro(LastTranslation, double);
606
608
611 void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
612 const char* keysym, int pointerIndex)
613 {
614 this->SetEventPosition(x, y, pointerIndex);
615 this->ControlKey = ctrl;
616 this->ShiftKey = shift;
617 this->KeyCode = keycode;
618 this->RepeatCount = repeatcount;
619 this->PointerIndex = pointerIndex;
620 if (keysym)
621 {
622 this->SetKeySym(keysym);
623 }
624 this->Modified();
625 }
626 void SetEventInformation(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
627 int repeatcount = 0, const char* keysym = nullptr)
628 {
629 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
630 }
632
634
638 void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
639 const char* keysym, int pointerIndex)
640 {
641 this->SetEventInformation(
642 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
643 }
644 void SetEventInformationFlipY(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
645 int repeatcount = 0, const char* keysym = nullptr)
646 {
647 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
648 }
650
652
655 void SetKeyEventInformation(int ctrl = 0, int shift = 0, char keycode = 0, int repeatcount = 0,
656 const char* keysym = nullptr)
657 {
658 this->ControlKey = ctrl;
659 this->ShiftKey = shift;
660 this->KeyCode = keycode;
661 this->RepeatCount = repeatcount;
662 if (keysym)
663 {
664 this->SetKeySym(keysym);
665 }
666 this->Modified();
667 }
669
671
682 vtkSetVector2Macro(Size, int);
683 vtkGetVector2Macro(Size, int);
684 vtkSetVector2Macro(EventSize, int);
685 vtkGetVector2Macro(EventSize, int);
687
693 virtual vtkRenderer* FindPokedRenderer(int, int);
694
703
705
713 vtkSetMacro(UseTDx, bool);
714 vtkGetMacro(UseTDx, bool);
716
718
723 virtual void MouseMoveEvent();
724 virtual void RightButtonPressEvent();
726 virtual void LeftButtonPressEvent();
732 virtual void MouseWheelLeftEvent();
733 virtual void MouseWheelRightEvent();
734 virtual void ExposeEvent();
735 virtual void ConfigureEvent();
736 virtual void EnterEvent();
737 virtual void LeaveEvent();
738 virtual void KeyPressEvent();
739 virtual void KeyReleaseEvent();
740 virtual void CharEvent();
741 virtual void ExitEvent();
744 virtual void FifthButtonPressEvent();
747
749
753 virtual void StartPinchEvent();
754 virtual void PinchEvent();
755 virtual void EndPinchEvent();
756 virtual void StartRotateEvent();
757 virtual void RotateEvent();
758 virtual void EndRotateEvent();
759 virtual void StartPanEvent();
760 virtual void PanEvent();
761 virtual void EndPanEvent();
762 virtual void TapEvent();
763 virtual void LongTapEvent();
764 virtual void SwipeEvent();
766
768
774 vtkSetMacro(RecognizeGestures, bool);
775 vtkGetMacro(RecognizeGestures, bool);
777
779
784 vtkGetMacro(PointersDownCount, int);
786
788
795 void ClearContact(size_t contactID);
796 int GetPointerIndexForContact(size_t contactID);
798 bool IsPointerIndexSet(int i);
799 void ClearPointerIndex(int i);
801
802protected:
805
809
810 // Used as a helper object to pick instances of vtkProp
813
814 bool Done; // is the event loop done running
815
821
825 int Style;
830
831 // Event information
836 double Rotation;
838 double Scale;
839 double LastScale;
840 double Translation[2];
841 double LastTranslation[2];
843 char* KeySym;
844 int EventPosition[2];
845 int LastEventPosition[2];
846 int EventSize[2];
847 int Size[2];
852
853 int EventPositions[VTKI_MAX_POINTERS][2];
854 int LastEventPositions[VTKI_MAX_POINTERS][2];
856
857 size_t PointerIndexLookup[VTKI_MAX_POINTERS];
858
859 // control the fly to
861 double Dolly;
862
872 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr)
873 {
874 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
875 }
876 void ReleaseFocus() { this->Superclass::InternalReleaseFocus(); }
877
882
883 // Timer related members
884 friend struct vtkTimerStruct;
885 vtkTimerIdMap* TimerMap; // An internal, PIMPLd map of timers and associated attributes
886 unsigned long TimerDuration; // in milliseconds
888
894 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
895 virtual int InternalDestroyTimer(int platformTimerId);
898
899 // Force the interactor to handle the Start() event loop, ignoring any
900 // overrides. (Overrides are registered by observing StartEvent on the
901 // interactor.)
903
907 virtual void StartEventLoop() {}
908
909 bool UseTDx; // 3DConnexion device.
910
911 // when recognizing gestures VTK will take multitouch events
912 // if it receives them and convert them to gestures
915 int PointersDown[VTKI_MAX_POINTERS];
917 int StartingEventPositions[VTKI_MAX_POINTERS][2];
919
920private:
922 void operator=(const vtkRenderWindowInteractor&) = delete;
923};
924
925VTK_ABI_NAMESPACE_END
926#endif
define API for picking subclasses
abstract API for pickers that can pick an instance of vtkProp
a list of nodes that form an assembly path
superclass for callback/observer methods
Definition vtkCommand.h:384
create a window for renderers to draw into
a simple class to control print indentation
Definition vtkIndent.h:29
record and play VTK events passing through a vtkRenderWindowInteractor
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
abstract base class for most VTK objects
const char * GetClassName() const
Return the class name as a string.
abstract base class for most VTK objects
Definition vtkObject.h:49
virtual void Modified()
Update the modification time for this object.
manage contention for cursors and other resources
Class defines API to manage the picking process.
platform-independent render window interaction including picking and frame rate control.
unsigned long GetTimerDuration(int timerId)
Get the duration (in milliseconds) for the specified timerId.
void HideCursor()
Hide or show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual void StartEventLoop()
Run the event loop (does not return until TerminateApp is called).
virtual void FourthButtonReleaseEvent()
Fire various events.
virtual void PinchEvent()
Fire various gesture based events.
virtual void SwipeEvent()
Fire various gesture based events.
virtual void StartRotateEvent()
Fire various gesture based events.
void SetRenderWindow(vtkRenderWindow *aren)
Set/Get the rendering window being controlled by this object.
void SetKeyEventInformation(int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
Set all the keyboard-related event information in one call.
void UnRegister(vtkObjectBase *o) override
This Method detects loops of RenderWindow-Interactor, so objects are freed properly.
virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
virtual void EndPinchEvent()
Fire various gesture based events.
virtual void KeyReleaseEvent()
Fire various events.
virtual int * GetLastEventPositions(int pointerIndex)
virtual void EndPickCallback()
These methods correspond to the Exit, User and Pick callbacks.
virtual void Enable()
Enable/Disable interactions.
virtual int InternalDestroyTimer(int platformTimerId)
Internal methods for creating and destroying timers that must be implemented by subclasses.
int CreateRepeatingTimer(unsigned long duration)
Create a repeating timer, with the specified duration (in milliseconds).
vtkObserverMediator * ObserverMediator
Widget mediators are used to resolve contention for cursors and other resources.
virtual void EndRotateEvent()
Fire various gesture based events.
virtual void ExitEvent()
Fire various events.
void FlyToImage(vtkRenderer *ren, double x, double y)
Given a position x, move the current camera's focal point to x.
void SetRotation(double rotation)
Set/get the rotation for the gesture in degrees, update LastRotation.
virtual void ExposeEvent()
Fire various events.
virtual void EndPanEvent()
Fire various gesture based events.
virtual void Render()
Render the scene.
virtual vtkRenderer * FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
virtual vtkAbstractPropPicker * CreateDefaultPicker()
Create default picker.
virtual void MouseWheelLeftEvent()
Fire various events.
virtual void MouseWheelForwardEvent()
Fire various events.
virtual void SetEventPosition(int x, int y)
Set/Get information about the current event.
virtual void TerminateApp()
This function is called on 'q','e' keypress if exitmethod is not specified and should be overridden b...
virtual void UserCallback()
These methods correspond to the Exit, User and Pick callbacks.
void SetHardwareWindow(vtkHardwareWindow *aren)
Set/Get the hardware window being controlled by this object.
virtual void LeftButtonReleaseEvent()
Fire various events.
virtual void CharEvent()
Fire various events.
virtual int DestroyTimer()
int IsOneShotTimer(int timerId)
Query whether the specified timerId is a one shot timer.
void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount, const char *keysym, int pointerIndex)
Set all the event information in one call.
vtkObserverMediator * GetObserverMediator()
Return the object used to mediate between vtkInteractorObservers contending for resources.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void UpdateSize(int x, int y)
Event loop notification member for window size change.
virtual vtkPickingManager * CreateDefaultPickingManager()
Create default pickingManager.
virtual void LeaveEvent()
Fire various events.
virtual vtkInteractorObserver * GetInteractorStyle()
External switching between joystick/trackball/new? modes.
virtual void FourthButtonPressEvent()
Fire various events.
virtual void MouseWheelRightEvent()
Fire various events.
virtual void EnterEvent()
Fire various events.
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
Internal methods for creating and destroying timers that must be implemented by subclasses.
~vtkRenderWindowInteractor() override
virtual void RightButtonPressEvent()
Fire various events.
virtual void Start()
Start the event loop.
void SetEventInformation(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
Set all the event information in one call.
void ShowCursor()
Hide or show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual void ConfigureEvent()
Fire various events.
virtual void FifthButtonPressEvent()
Fire various events.
virtual int * GetEventPositions(int pointerIndex)
virtual void StartPanEvent()
Fire various gesture based events.
virtual int CreateTimer(int timerType)
This class provides two groups of methods for manipulating timers.
int ResetTimer(int timerId)
Reset the specified timer.
int GetCurrentTimerId()
Internal methods for creating and destroying timers that must be implemented by subclasses.
virtual void MouseWheelBackwardEvent()
Fire various events.
virtual void SetInteractorStyle(vtkInteractorObserver *)
External switching between joystick/trackball/new? modes.
void ClearContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
void FlyTo(vtkRenderer *ren, double x, double y, double z)
Given a position x, move the current camera's focal point to x.
int CreateOneShotTimer(unsigned long duration)
Create a one shot timer, with the specified duration (in milliseconds).
void ReInitialize()
Prepare for handling events and set the Enabled flag to true.
virtual void ExitCallback()
These methods correspond to the Exit, User and Pick callbacks.
void SetEventInformationFlipY(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
Calls SetEventInformation, but flips the Y based on the current Size[1] value (i.e.
int DestroyTimer(int timerId)
Destroy the timer specified by timerId.
vtkSmartPointer< vtkInteractorObserver > InteractorStyle
void SetTranslation(double val[2])
Set/get the translation for pan/swipe gestures, update LastTranslation.
void FlyToImage(vtkRenderer *ren, double *x)
Given a position x, move the current camera's focal point to x.
virtual void PanEvent()
Fire various gesture based events.
virtual void ProcessEvents()
Process all user-interaction, timer events and return.
virtual void RightButtonReleaseEvent()
Fire various events.
virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount, const char *keysym, int pointerIndex)
Calls SetEventInformation, but flips the Y based on the current Size[1] value (i.e.
virtual void GetMousePosition(int *x, int *y)
Get the current position of the mouse.
virtual void SetEventPositionFlipY(int x, int y)
Set/Get information about the current event.
int GetPointerIndexForContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
static vtkRenderWindowInteractor * New()
virtual void FifthButtonReleaseEvent()
Fire various events.
bool IsPointerIndexSet(int i)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void LeftButtonPressEvent()
Fire various events.
void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
virtual void MiddleButtonPressEvent()
Fire various events.
virtual void StartPickCallback()
These methods correspond to the Exit, User and Pick callbacks.
int GetPointerIndexForExistingContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void MouseMoveEvent()
Fire various events.
void FlyTo(vtkRenderer *ren, double *x)
Given a position x, move the current camera's focal point to x.
virtual void StartPinchEvent()
Fire various gesture based events.
virtual void SetEventPosition(int pos[2])
Set/Get information about the current event.
virtual void SetPicker(vtkAbstractPicker *)
Set/Get the object used to perform pick operations.
virtual int GetVTKTimerId(int platformTimerId)
Get the VTK timer ID that corresponds to the supplied platform ID.
void SetScale(double scale)
Set/get the scale for the gesture, updates LastScale.
virtual void Initialize()
Prepare for handling events and set the Enabled flag to true.
virtual void RotateEvent()
Fire various gesture based events.
virtual void TapEvent()
Fire various gesture based events.
virtual void SetEventPositionFlipY(int pos[2])
Set/Get information about the current event.
virtual void SetEventPosition(int x, int y, int pointerIndex)
void ClearPointerIndex(int i)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void LongTapEvent()
Fire various gesture based events.
virtual void MiddleButtonReleaseEvent()
Fire various events.
virtual void RecognizeGesture(vtkCommand::EventIds)
virtual void SetEventPosition(int pos[2], int pointerIndex)
virtual void SetPickingManager(vtkPickingManager *)
Set the picking manager.
virtual void KeyPressEvent()
Fire various events.
create a window for renderers to draw into
abstract specification for renderers
Definition vtkRenderer.h:59
Hold a reference to a vtkObjectBase instance.
int vtkTypeBool
Definition vtkABI.h:64
#define VTKI_MAX_POINTERS
#define VTK_INT_MAX
Definition vtkType.h:144
#define VTK_FLOAT_MAX
Definition vtkType.h:152