VTK  9.3.1
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
42#ifndef vtkRenderWindowInteractor_h
43#define vtkRenderWindowInteractor_h
44
45#include "vtkCommand.h" // for method sig
46#include "vtkObject.h"
47#include "vtkRenderingCoreModule.h" // For export macro
48#include "vtkSmartPointer.h" // For InteractorStyle
49
50VTK_ABI_NAMESPACE_BEGIN
51class vtkTimerIdMap;
52
53// Timer flags for win32/X compatibility
54#define VTKI_TIMER_FIRST 0
55#define VTKI_TIMER_UPDATE 1
56
57// maximum pointers active at once
58// for example in multitouch
59#define VTKI_MAX_POINTERS 5
60
63class vtkAssemblyPath;
66class vtkRenderWindow;
67class vtkRenderer;
71
72class VTKRENDERINGCORE_EXPORT vtkRenderWindowInteractor : public vtkObject
73{
74
76
77public:
80 void PrintSelf(ostream& os, vtkIndent indent) override;
81
83
90 virtual void Initialize();
92 {
93 this->Initialized = 0;
94 this->Enabled = 0;
95 this->Initialize();
96 }
98
103 void UnRegister(vtkObjectBase* o) override;
104
110 virtual void Start();
111
118 virtual void ProcessEvents() {}
119
123 vtkGetMacro(Done, bool);
124 vtkSetMacro(Done, bool);
125
135 virtual void Enable()
136 {
137 this->Enabled = 1;
138 this->Modified();
139 }
140 virtual void Disable()
141 {
142 this->Enabled = 0;
143 this->Modified();
144 }
145 vtkGetMacro(Enabled, int);
146
148
152 vtkBooleanMacro(EnableRender, bool);
153 vtkSetMacro(EnableRender, bool);
154 vtkGetMacro(EnableRender, bool);
156
158
162 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
164
166
172 vtkGetObjectMacro(HardwareWindow, vtkHardwareWindow);
174
182 virtual void UpdateSize(int x, int y);
183
200 virtual int CreateTimer(int timerType); // first group, for backward compatibility
201 virtual int DestroyTimer(); // first group, for backward compatibility
202
207 int CreateRepeatingTimer(unsigned long duration);
208
213 int CreateOneShotTimer(unsigned long duration);
214
219 int IsOneShotTimer(int timerId);
220
224 unsigned long GetTimerDuration(int timerId);
225
229 int ResetTimer(int timerId);
230
235 int DestroyTimer(int timerId);
236
240 virtual int GetVTKTimerId(int platformTimerId);
241
242 // Moved into the public section of the class so that classless timer procs
243 // can access these enum members without being "friends"...
244 enum
245 {
246 OneShotTimer = 1,
247 RepeatingTimer
248 };
249
251
260 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
261 vtkGetMacro(TimerDuration, unsigned long);
263
265
277 vtkSetMacro(TimerEventId, int);
278 vtkGetMacro(TimerEventId, int);
279 vtkSetMacro(TimerEventType, int);
280 vtkGetMacro(TimerEventType, int);
281 vtkSetMacro(TimerEventDuration, int);
282 vtkGetMacro(TimerEventDuration, int);
283 vtkSetMacro(TimerEventPlatformId, int);
284 vtkGetMacro(TimerEventPlatformId, int);
286
292 virtual void TerminateApp() { this->Done = true; }
293
295
302
304
308 vtkSetMacro(LightFollowCamera, vtkTypeBool);
309 vtkGetMacro(LightFollowCamera, vtkTypeBool);
310 vtkBooleanMacro(LightFollowCamera, vtkTypeBool);
312
314
321 vtkSetClampMacro(DesiredUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
322 vtkGetMacro(DesiredUpdateRate, double);
324
326
331 vtkSetClampMacro(StillUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
332 vtkGetMacro(StillUpdateRate, double);
334
336
340 vtkGetMacro(Initialized, int);
342
344
351 vtkGetObjectMacro(Picker, vtkAbstractPicker);
353
359
361
367 vtkGetObjectMacro(PickingManager, vtkPickingManager);
369
371
375 virtual void ExitCallback();
376 virtual void UserCallback();
377 virtual void StartPickCallback();
378 virtual void EndPickCallback();
380
384 virtual void GetMousePosition(int* x, int* y)
385 {
386 *x = 0;
387 *y = 0;
388 }
389
391
398
403 virtual void Render();
404
406
411 void FlyTo(vtkRenderer* ren, double x, double y, double z);
412 void FlyTo(vtkRenderer* ren, double* x) { this->FlyTo(ren, x[0], x[1], x[2]); }
413 void FlyToImage(vtkRenderer* ren, double x, double y);
414 void FlyToImage(vtkRenderer* ren, double* x) { this->FlyToImage(ren, x[0], x[1]); }
416
418
421 vtkSetClampMacro(NumberOfFlyFrames, int, 1, VTK_INT_MAX);
422 vtkGetMacro(NumberOfFlyFrames, int);
424
426
430 vtkSetMacro(Dolly, double);
431 vtkGetMacro(Dolly, double);
433
435
443 vtkGetVector2Macro(EventPosition, int);
444 vtkGetVector2Macro(LastEventPosition, int);
445 vtkSetVector2Macro(LastEventPosition, int);
446 virtual void SetEventPosition(int x, int y)
447 {
448 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
449 << "," << y << ")");
450 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
451 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
452 {
453 this->LastEventPosition[0] = this->EventPosition[0];
454 this->LastEventPosition[1] = this->EventPosition[1];
455 this->EventPosition[0] = x;
456 this->EventPosition[1] = y;
457 this->Modified();
458 }
459 }
460 virtual void SetEventPosition(int pos[2]) { this->SetEventPosition(pos[0], pos[1]); }
461 virtual void SetEventPositionFlipY(int x, int y)
462 {
463 this->SetEventPosition(x, this->Size[1] - y - 1);
464 }
465 virtual void SetEventPositionFlipY(int pos[2]) { this->SetEventPositionFlipY(pos[0], pos[1]); }
467
468 virtual int* GetEventPositions(int pointerIndex)
469 {
470 if (pointerIndex >= VTKI_MAX_POINTERS)
471 {
472 return nullptr;
473 }
474 return this->EventPositions[pointerIndex];
475 }
476 virtual int* GetLastEventPositions(int pointerIndex)
477 {
478 if (pointerIndex >= VTKI_MAX_POINTERS)
479 {
480 return nullptr;
481 }
482 return this->LastEventPositions[pointerIndex];
483 }
484 virtual void SetEventPosition(int x, int y, int pointerIndex)
485 {
486 if (pointerIndex < 0 || pointerIndex >= VTKI_MAX_POINTERS)
487 {
488 return;
489 }
490 if (pointerIndex == 0)
491 {
492 this->LastEventPosition[0] = this->EventPosition[0];
493 this->LastEventPosition[1] = this->EventPosition[1];
494 this->EventPosition[0] = x;
495 this->EventPosition[1] = y;
496 }
497 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
498 << "," << y << ") for pointerIndex number " << pointerIndex);
499 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
500 this->LastEventPositions[pointerIndex][0] != x ||
501 this->LastEventPositions[pointerIndex][1] != y)
502 {
503 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
504 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
505 this->EventPositions[pointerIndex][0] = x;
506 this->EventPositions[pointerIndex][1] = y;
507 this->Modified();
508 }
509 }
510 virtual void SetEventPosition(int pos[2], int pointerIndex)
511 {
512 this->SetEventPosition(pos[0], pos[1], pointerIndex);
513 }
514 virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
515 {
516 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
517 }
518 virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
519 {
520 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
521 }
522
524
527 vtkSetMacro(AltKey, int);
528 vtkGetMacro(AltKey, int);
530
532
535 vtkSetMacro(ControlKey, int);
536 vtkGetMacro(ControlKey, int);
538
540
543 vtkSetMacro(ShiftKey, int);
544 vtkGetMacro(ShiftKey, int);
546
548
551 vtkSetMacro(KeyCode, char);
552 vtkGetMacro(KeyCode, char);
554
556
560 vtkSetMacro(RepeatCount, int);
561 vtkGetMacro(RepeatCount, int);
563
565
571 vtkSetStringMacro(KeySym);
572 vtkGetStringMacro(KeySym);
574
576
579 vtkSetMacro(PointerIndex, int);
580 vtkGetMacro(PointerIndex, int);
582
584
587 void SetRotation(double rotation);
588 vtkGetMacro(Rotation, double);
589 vtkGetMacro(LastRotation, double);
591
593
596 void SetScale(double scale);
597 vtkGetMacro(Scale, double);
598 vtkGetMacro(LastScale, double);
600
602
605 void SetTranslation(double val[2]);
606 vtkGetVector2Macro(Translation, double);
607 vtkGetVector2Macro(LastTranslation, double);
609
611
614 void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
615 const char* keysym, int pointerIndex)
616 {
617 this->SetEventPosition(x, y, pointerIndex);
618 this->ControlKey = ctrl;
619 this->ShiftKey = shift;
620 this->KeyCode = keycode;
621 this->RepeatCount = repeatcount;
622 this->PointerIndex = pointerIndex;
623 if (keysym)
624 {
625 this->SetKeySym(keysym);
626 }
627 this->Modified();
628 }
629 void SetEventInformation(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
630 int repeatcount = 0, const char* keysym = nullptr)
631 {
632 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
633 }
635
637
641 void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
642 const char* keysym, int pointerIndex)
643 {
644 this->SetEventInformation(
645 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
646 }
647 void SetEventInformationFlipY(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
648 int repeatcount = 0, const char* keysym = nullptr)
649 {
650 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
651 }
653
655
658 void SetKeyEventInformation(int ctrl = 0, int shift = 0, char keycode = 0, int repeatcount = 0,
659 const char* keysym = nullptr)
660 {
661 this->ControlKey = ctrl;
662 this->ShiftKey = shift;
663 this->KeyCode = keycode;
664 this->RepeatCount = repeatcount;
665 if (keysym)
666 {
667 this->SetKeySym(keysym);
668 }
669 this->Modified();
670 }
672
674
685 vtkSetVector2Macro(Size, int);
686 vtkGetVector2Macro(Size, int);
687 vtkSetVector2Macro(EventSize, int);
688 vtkGetVector2Macro(EventSize, int);
690
696 virtual vtkRenderer* FindPokedRenderer(int, int);
697
706
708
716 vtkSetMacro(UseTDx, bool);
717 vtkGetMacro(UseTDx, bool);
719
721
726 virtual void MouseMoveEvent();
727 virtual void RightButtonPressEvent();
729 virtual void LeftButtonPressEvent();
735 virtual void MouseWheelLeftEvent();
736 virtual void MouseWheelRightEvent();
737 virtual void ExposeEvent();
738 virtual void ConfigureEvent();
739 virtual void EnterEvent();
740 virtual void LeaveEvent();
741 virtual void KeyPressEvent();
742 virtual void KeyReleaseEvent();
743 virtual void CharEvent();
744 virtual void ExitEvent();
747 virtual void FifthButtonPressEvent();
750
752
756 virtual void StartPinchEvent();
757 virtual void PinchEvent();
758 virtual void EndPinchEvent();
759 virtual void StartRotateEvent();
760 virtual void RotateEvent();
761 virtual void EndRotateEvent();
762 virtual void StartPanEvent();
763 virtual void PanEvent();
764 virtual void EndPanEvent();
765 virtual void TapEvent();
766 virtual void LongTapEvent();
767 virtual void SwipeEvent();
769
771
777 vtkSetMacro(RecognizeGestures, bool);
778 vtkGetMacro(RecognizeGestures, bool);
780
782
787 vtkGetMacro(PointersDownCount, int);
789
791
798 void ClearContact(size_t contactID);
799 int GetPointerIndexForContact(size_t contactID);
801 bool IsPointerIndexSet(int i);
802 void ClearPointerIndex(int i);
804
805protected:
808
812
813 // Used as a helper object to pick instances of vtkProp
816
817 bool Done; // is the event loop done running
818
824
828 int Style;
833
834 // Event information
839 double Rotation;
841 double Scale;
842 double LastScale;
843 double Translation[2];
844 double LastTranslation[2];
846 char* KeySym;
847 int EventPosition[2];
848 int LastEventPosition[2];
849 int EventSize[2];
850 int Size[2];
855
856 int EventPositions[VTKI_MAX_POINTERS][2];
857 int LastEventPositions[VTKI_MAX_POINTERS][2];
859
860 size_t PointerIndexLookup[VTKI_MAX_POINTERS];
861
862 // control the fly to
864 double Dolly;
865
875 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr)
876 {
877 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
878 }
879 void ReleaseFocus() { this->Superclass::InternalReleaseFocus(); }
880
885
886 // Timer related members
887 friend struct vtkTimerStruct;
888 vtkTimerIdMap* TimerMap; // An internal, PIMPLd map of timers and associated attributes
889 unsigned long TimerDuration; // in milliseconds
891
897 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
898 virtual int InternalDestroyTimer(int platformTimerId);
901
902 // Force the interactor to handle the Start() event loop, ignoring any
903 // overrides. (Overrides are registered by observing StartEvent on the
904 // interactor.)
906
910 virtual void StartEventLoop() {}
911
912 bool UseTDx; // 3DConnexion device.
913
914 // when recognizing gestures VTK will take multitouch events
915 // if it receives them and convert them to gestures
918 int PointersDown[VTKI_MAX_POINTERS];
920 int StartingEventPositions[VTKI_MAX_POINTERS][2];
922
923private:
925 void operator=(const vtkRenderWindowInteractor&) = delete;
926};
927
928VTK_ABI_NAMESPACE_END
929#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:52
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:62
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