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
48#ifndef vtkRenderWindowInteractor_h
49#define vtkRenderWindowInteractor_h
50
51#include "vtkCommand.h" // for method sig
52#include "vtkObject.h"
53#include "vtkRenderingCoreModule.h" // For export macro
54#include "vtkSmartPointer.h" // For InteractorStyle
55
56VTK_ABI_NAMESPACE_BEGIN
57class vtkTimerIdMap;
58
59// Timer flags for win32/X compatibility
60#define VTKI_TIMER_FIRST 0
61#define VTKI_TIMER_UPDATE 1
62
63// maximum pointers active at once
64// for example in multitouch
65#define VTKI_MAX_POINTERS 5
66
69class vtkAssemblyPath;
72class vtkRenderWindow;
73class vtkRenderer;
77
78class VTKRENDERINGCORE_EXPORT vtkRenderWindowInteractor : public vtkObject
79{
80
82
83public:
86 void PrintSelf(ostream& os, vtkIndent indent) override;
87
89
96 virtual void Initialize();
98 {
99 this->Initialized = 0;
100 this->Enabled = 0;
101 this->Initialize();
102 }
104
109 void UnRegister(vtkObjectBase* o) override;
110
116 virtual void Start();
117
124 virtual void ProcessEvents() {}
125
129 vtkGetMacro(Done, bool);
130 vtkSetMacro(Done, bool);
131
141 virtual void Enable()
142 {
143 this->Enabled = 1;
144 this->Modified();
145 }
146 virtual void Disable()
147 {
148 this->Enabled = 0;
149 this->Modified();
150 }
151 vtkGetMacro(Enabled, int);
152
154
158 vtkBooleanMacro(EnableRender, bool);
159 vtkSetMacro(EnableRender, bool);
160 vtkGetMacro(EnableRender, bool);
162
164
168 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
170
172
178 vtkGetObjectMacro(HardwareWindow, vtkHardwareWindow);
180
188 virtual void UpdateSize(int x, int y);
189
206 virtual int CreateTimer(int timerType); // first group, for backward compatibility
207 virtual int DestroyTimer(); // first group, for backward compatibility
208
213 int CreateRepeatingTimer(unsigned long duration);
214
219 int CreateOneShotTimer(unsigned long duration);
220
225 int IsOneShotTimer(int timerId);
226
230 unsigned long GetTimerDuration(int timerId);
231
235 int ResetTimer(int timerId);
236
241 int DestroyTimer(int timerId);
242
246 virtual int GetVTKTimerId(int platformTimerId);
247
248 // Moved into the public section of the class so that classless timer procs
249 // can access these enum members without being "friends"...
250 enum
251 {
252 OneShotTimer = 1,
253 RepeatingTimer
254 };
255
257
266 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
267 vtkGetMacro(TimerDuration, unsigned long);
269
271
283 vtkSetMacro(TimerEventId, int);
284 vtkGetMacro(TimerEventId, int);
285 vtkSetMacro(TimerEventType, int);
286 vtkGetMacro(TimerEventType, int);
287 vtkSetMacro(TimerEventDuration, int);
288 vtkGetMacro(TimerEventDuration, int);
289 vtkSetMacro(TimerEventPlatformId, int);
290 vtkGetMacro(TimerEventPlatformId, int);
292
298 virtual void TerminateApp() { this->Done = true; }
299
301
308
310
314 vtkSetMacro(LightFollowCamera, vtkTypeBool);
315 vtkGetMacro(LightFollowCamera, vtkTypeBool);
316 vtkBooleanMacro(LightFollowCamera, vtkTypeBool);
318
320
327 vtkSetClampMacro(DesiredUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
328 vtkGetMacro(DesiredUpdateRate, double);
330
332
337 vtkSetClampMacro(StillUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
338 vtkGetMacro(StillUpdateRate, double);
340
342
346 vtkGetMacro(Initialized, int);
348
350
357 vtkGetObjectMacro(Picker, vtkAbstractPicker);
359
365
367
373 vtkGetObjectMacro(PickingManager, vtkPickingManager);
375
377
381 virtual void ExitCallback();
382 virtual void UserCallback();
383 virtual void StartPickCallback();
384 virtual void EndPickCallback();
386
390 virtual void GetMousePosition(int* x, int* y)
391 {
392 *x = 0;
393 *y = 0;
394 }
395
397
404
409 virtual void Render();
410
412
417 void FlyTo(vtkRenderer* ren, double x, double y, double z);
418 void FlyTo(vtkRenderer* ren, double* x) { this->FlyTo(ren, x[0], x[1], x[2]); }
419 void FlyToImage(vtkRenderer* ren, double x, double y);
420 void FlyToImage(vtkRenderer* ren, double* x) { this->FlyToImage(ren, x[0], x[1]); }
422
424
427 vtkSetClampMacro(NumberOfFlyFrames, int, 1, VTK_INT_MAX);
428 vtkGetMacro(NumberOfFlyFrames, int);
430
432
436 vtkSetMacro(Dolly, double);
437 vtkGetMacro(Dolly, double);
439
441
449 vtkGetVector2Macro(EventPosition, int);
450 vtkGetVector2Macro(LastEventPosition, int);
451 vtkSetVector2Macro(LastEventPosition, int);
452 virtual void SetEventPosition(int x, int y)
453 {
454 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
455 << "," << y << ")");
456 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
457 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
458 {
459 this->LastEventPosition[0] = this->EventPosition[0];
460 this->LastEventPosition[1] = this->EventPosition[1];
461 this->EventPosition[0] = x;
462 this->EventPosition[1] = y;
463 this->Modified();
464 }
465 }
466 virtual void SetEventPosition(int pos[2]) { this->SetEventPosition(pos[0], pos[1]); }
467 virtual void SetEventPositionFlipY(int x, int y)
468 {
469 this->SetEventPosition(x, this->Size[1] - y - 1);
470 }
471 virtual void SetEventPositionFlipY(int pos[2]) { this->SetEventPositionFlipY(pos[0], pos[1]); }
473
474 virtual int* GetEventPositions(int pointerIndex)
475 {
476 if (pointerIndex >= VTKI_MAX_POINTERS)
477 {
478 return nullptr;
479 }
480 return this->EventPositions[pointerIndex];
481 }
482 virtual int* GetLastEventPositions(int pointerIndex)
483 {
484 if (pointerIndex >= VTKI_MAX_POINTERS)
485 {
486 return nullptr;
487 }
488 return this->LastEventPositions[pointerIndex];
489 }
490 virtual void SetEventPosition(int x, int y, int pointerIndex)
491 {
492 if (pointerIndex < 0 || pointerIndex >= VTKI_MAX_POINTERS)
493 {
494 return;
495 }
496 if (pointerIndex == 0)
497 {
498 this->LastEventPosition[0] = this->EventPosition[0];
499 this->LastEventPosition[1] = this->EventPosition[1];
500 this->EventPosition[0] = x;
501 this->EventPosition[1] = y;
502 }
503 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
504 << "," << y << ") for pointerIndex number " << pointerIndex);
505 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
506 this->LastEventPositions[pointerIndex][0] != x ||
507 this->LastEventPositions[pointerIndex][1] != y)
508 {
509 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
510 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
511 this->EventPositions[pointerIndex][0] = x;
512 this->EventPositions[pointerIndex][1] = y;
513 this->Modified();
514 }
515 }
516 virtual void SetEventPosition(int pos[2], int pointerIndex)
517 {
518 this->SetEventPosition(pos[0], pos[1], pointerIndex);
519 }
520 virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
521 {
522 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
523 }
524 virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
525 {
526 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
527 }
528
530
533 vtkSetMacro(AltKey, int);
534 vtkGetMacro(AltKey, int);
536
538
541 vtkSetMacro(ControlKey, int);
542 vtkGetMacro(ControlKey, int);
544
546
549 vtkSetMacro(ShiftKey, int);
550 vtkGetMacro(ShiftKey, int);
552
554
557 vtkSetMacro(KeyCode, char);
558 vtkGetMacro(KeyCode, char);
560
562
566 vtkSetMacro(RepeatCount, int);
567 vtkGetMacro(RepeatCount, int);
569
571
577 vtkSetStringMacro(KeySym);
578 vtkGetStringMacro(KeySym);
580
582
585 vtkSetMacro(PointerIndex, int);
586 vtkGetMacro(PointerIndex, int);
588
590
593 void SetRotation(double rotation);
594 vtkGetMacro(Rotation, double);
595 vtkGetMacro(LastRotation, double);
597
599
602 void SetScale(double scale);
603 vtkGetMacro(Scale, double);
604 vtkGetMacro(LastScale, double);
606
608
611 void SetTranslation(double val[2]);
612 vtkGetVector2Macro(Translation, double);
613 vtkGetVector2Macro(LastTranslation, double);
615
617
620 void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
621 const char* keysym, int pointerIndex)
622 {
623 this->SetEventPosition(x, y, pointerIndex);
624 this->ControlKey = ctrl;
625 this->ShiftKey = shift;
626 this->KeyCode = keycode;
627 this->RepeatCount = repeatcount;
628 this->PointerIndex = pointerIndex;
629 if (keysym)
630 {
631 this->SetKeySym(keysym);
632 }
633 this->Modified();
634 }
635 void SetEventInformation(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
636 int repeatcount = 0, const char* keysym = nullptr)
637 {
638 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
639 }
641
643
647 void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
648 const char* keysym, int pointerIndex)
649 {
650 this->SetEventInformation(
651 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
652 }
653 void SetEventInformationFlipY(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
654 int repeatcount = 0, const char* keysym = nullptr)
655 {
656 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
657 }
659
661
664 void SetKeyEventInformation(int ctrl = 0, int shift = 0, char keycode = 0, int repeatcount = 0,
665 const char* keysym = nullptr)
666 {
667 this->ControlKey = ctrl;
668 this->ShiftKey = shift;
669 this->KeyCode = keycode;
670 this->RepeatCount = repeatcount;
671 if (keysym)
672 {
673 this->SetKeySym(keysym);
674 }
675 this->Modified();
676 }
678
680
691 vtkSetVector2Macro(Size, int);
692 vtkGetVector2Macro(Size, int);
693 vtkSetVector2Macro(EventSize, int);
694 vtkGetVector2Macro(EventSize, int);
696
702 virtual vtkRenderer* FindPokedRenderer(int, int);
703
712
714
722 vtkSetMacro(UseTDx, bool);
723 vtkGetMacro(UseTDx, bool);
725
727
732 virtual void MouseMoveEvent();
733 virtual void RightButtonPressEvent();
735 virtual void LeftButtonPressEvent();
741 virtual void MouseWheelLeftEvent();
742 virtual void MouseWheelRightEvent();
743 virtual void ExposeEvent();
744 virtual void ConfigureEvent();
745 virtual void EnterEvent();
746 virtual void LeaveEvent();
747 virtual void KeyPressEvent();
748 virtual void KeyReleaseEvent();
749 virtual void CharEvent();
750 virtual void ExitEvent();
753 virtual void FifthButtonPressEvent();
756
758
762 virtual void StartPinchEvent();
763 virtual void PinchEvent();
764 virtual void EndPinchEvent();
765 virtual void StartRotateEvent();
766 virtual void RotateEvent();
767 virtual void EndRotateEvent();
768 virtual void StartPanEvent();
769 virtual void PanEvent();
770 virtual void EndPanEvent();
771 virtual void TapEvent();
772 virtual void LongTapEvent();
773 virtual void SwipeEvent();
775
777
783 vtkSetMacro(RecognizeGestures, bool);
784 vtkGetMacro(RecognizeGestures, bool);
786
788
793 vtkGetMacro(PointersDownCount, int);
795
797
804 void ClearContact(size_t contactID);
805 int GetPointerIndexForContact(size_t contactID);
807 bool IsPointerIndexSet(int i);
808 void ClearPointerIndex(int i);
810
811protected:
814
818
819 // Used as a helper object to pick instances of vtkProp
822
823 bool Done; // is the event loop done running
824
830
834 int Style;
839
840 // Event information
845 double Rotation;
847 double Scale;
848 double LastScale;
849 double Translation[2];
850 double LastTranslation[2];
852 char* KeySym;
853 int EventPosition[2];
854 int LastEventPosition[2];
855 int EventSize[2];
856 int Size[2];
861
862 int EventPositions[VTKI_MAX_POINTERS][2];
863 int LastEventPositions[VTKI_MAX_POINTERS][2];
865
866 size_t PointerIndexLookup[VTKI_MAX_POINTERS];
867
868 // control the fly to
870 double Dolly;
871
881 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr)
882 {
883 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
884 }
885 void ReleaseFocus() { this->Superclass::InternalReleaseFocus(); }
886
891
892 // Timer related members
893 friend struct vtkTimerStruct;
894 vtkTimerIdMap* TimerMap; // An internal, PIMPLd map of timers and associated attributes
895 unsigned long TimerDuration; // in milliseconds
897
903 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
904 virtual int InternalDestroyTimer(int platformTimerId);
907
908 // Force the interactor to handle the Start() event loop, ignoring any
909 // overrides. (Overrides are registered by observing StartEvent on the
910 // interactor.)
912
916 virtual void StartEventLoop() {}
917
918 bool UseTDx; // 3DConnexion device.
919
920 // when recognizing gestures VTK will take multitouch events
921 // if it receives them and convert them to gestures
924 int PointersDown[VTKI_MAX_POINTERS];
926 int StartingEventPositions[VTKI_MAX_POINTERS][2];
928
929private:
931 void operator=(const vtkRenderWindowInteractor&) = delete;
932};
933
934VTK_ABI_NAMESPACE_END
935#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:38
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:58
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:68
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