VTK  9.6.20260515
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
150
151#ifndef vtkRenderWindowInteractor_h
152#define vtkRenderWindowInteractor_h
153
154#include "vtkCommand.h" // for method sig
155#include "vtkObject.h"
156#include "vtkRenderingCoreModule.h" // For export macro
157#include "vtkSmartPointer.h" // For InteractorStyle
158#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
159
160VTK_ABI_NAMESPACE_BEGIN
161class vtkTimerIdMap;
162
163// Timer flags for win32/X compatibility
164#define VTKI_TIMER_FIRST 0
165#define VTKI_TIMER_UPDATE 1
166
167// maximum pointers active at once
168// for example in multitouch
169#define VTKI_MAX_POINTERS 5
170
173class vtkAssemblyPath;
176class vtkRenderWindow;
177class vtkRenderer;
181
182class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkRenderWindowInteractor : public vtkObject
183{
184
186
187public:
190 void PrintSelf(ostream& os, vtkIndent indent) override;
191
193
200 virtual void Initialize();
202 {
203 this->Initialized = 0;
204 this->Enabled = 0;
205 this->Initialize();
206 }
207
208
213 void UnRegister(vtkObjectBase* o) override;
214
220 virtual void Start();
221
228 virtual void ProcessEvents() {}
229
233 vtkGetMacro(Done, bool);
234 vtkSetMacro(Done, bool);
235
245 virtual void Enable()
246 {
247 this->Enabled = 1;
248 this->Modified();
249 }
250 virtual void Disable()
251 {
252 this->Enabled = 0;
253 this->Modified();
254 }
255 vtkGetMacro(Enabled, int);
256
258
262 vtkBooleanMacro(EnableRender, bool);
264 vtkSetMacro(EnableRender, bool);
266 vtkGetMacro(EnableRender, bool);
268
270
274 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
276
278
286
295 virtual void UpdateSize(int x, int y);
296
314 virtual int CreateTimer(int timerType); // first group, for backward compatibility
315 virtual int DestroyTimer(); // first group, for backward compatibility
316
321 int CreateRepeatingTimer(unsigned long duration);
322
327 int CreateOneShotTimer(unsigned long duration);
328
333 int IsOneShotTimer(int timerId);
334
338 unsigned long GetTimerDuration(int timerId);
339
343 int ResetTimer(int timerId);
344
349 int DestroyTimer(int timerId);
350
354 virtual int GetVTKTimerId(int platformTimerId);
355
356 // Moved into the public section of the class so that classless timer procs
357 // can access these enum members without being "friends"...
358 enum
359 {
362 };
363
365
374 vtkSetClampMacro(TimerDuration, unsigned long, 1, 100000);
375 vtkGetMacro(TimerDuration, unsigned long);
377
379
391 vtkSetMacro(TimerEventId, int);
392 vtkGetMacro(TimerEventId, int);
393 vtkSetMacro(TimerEventType, int);
394 vtkGetMacro(TimerEventType, int);
395 vtkSetMacro(TimerEventDuration, int);
396 vtkGetMacro(TimerEventDuration, int);
397 vtkSetMacro(TimerEventPlatformId, int);
398 vtkGetMacro(TimerEventPlatformId, int);
400
406 virtual void TerminateApp() { this->Done = true; }
407
409
416
418
426
428
435 vtkSetClampMacro(DesiredUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
436 vtkGetMacro(DesiredUpdateRate, double);
438
440
445 vtkSetClampMacro(StillUpdateRate, double, 0.0001, VTK_FLOAT_MAX);
446 vtkGetMacro(StillUpdateRate, double);
448
450
454 vtkGetMacro(Initialized, int);
456
458
465 vtkGetObjectMacro(Picker, vtkAbstractPicker);
467
473
475
485
487
491 virtual void ExitCallback();
492 virtual void UserCallback();
493 virtual void StartPickCallback();
494 virtual void EndPickCallback();
496
500 virtual void GetMousePosition(int* x, int* y)
501 {
502 *x = 0;
503 *y = 0;
504 }
505
507
514
519 virtual void Render();
520
522
527 void FlyTo(vtkRenderer* ren, double x, double y, double z);
528 void FlyTo(vtkRenderer* ren, double* x) { this->FlyTo(ren, x[0], x[1], x[2]); }
529 void FlyToImage(vtkRenderer* ren, double x, double y);
530 void FlyToImage(vtkRenderer* ren, double* x) { this->FlyToImage(ren, x[0], x[1]); }
532
534
537 vtkSetClampMacro(NumberOfFlyFrames, int, 1, VTK_INT_MAX);
538 vtkGetMacro(NumberOfFlyFrames, int);
540
542
546 vtkSetMacro(Dolly, double);
547 vtkGetMacro(Dolly, double);
549
551
560 vtkGetVector2Macro(EventPosition, int);
562 vtkGetVector2Macro(LastEventPosition, int);
564 vtkSetVector2Macro(LastEventPosition, int);
566 virtual void SetEventPosition(int x, int y)
567 {
568 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
569 << "," << y << ")");
570 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
571 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
572 {
573 this->LastEventPosition[0] = this->EventPosition[0];
574 this->LastEventPosition[1] = this->EventPosition[1];
575 this->EventPosition[0] = x;
576 this->EventPosition[1] = y;
577 this->Modified();
578 }
579 }
581 virtual void SetEventPosition(int pos[2]) { this->SetEventPosition(pos[0], pos[1]); }
582 virtual void SetEventPositionFlipY(int x, int y)
583 {
584 this->SetEventPosition(x, this->Size[1] - y - 1);
585 }
586 virtual void SetEventPositionFlipY(int pos[2]) { this->SetEventPositionFlipY(pos[0], pos[1]); }
588
589 virtual int* GetEventPositions(int pointerIndex)
590 {
591 if (pointerIndex >= VTKI_MAX_POINTERS)
592 {
593 return nullptr;
594 }
595 return this->EventPositions[pointerIndex];
596 }
597 virtual int* GetLastEventPositions(int pointerIndex)
598 {
599 if (pointerIndex >= VTKI_MAX_POINTERS)
600 {
601 return nullptr;
602 }
603 return this->LastEventPositions[pointerIndex];
604 }
605 virtual void SetEventPosition(int x, int y, int pointerIndex)
606 {
607 if (pointerIndex < 0 || pointerIndex >= VTKI_MAX_POINTERS)
608 {
609 return;
610 }
611 if (pointerIndex == 0)
612 {
613 this->LastEventPosition[0] = this->EventPosition[0];
614 this->LastEventPosition[1] = this->EventPosition[1];
615 this->EventPosition[0] = x;
616 this->EventPosition[1] = y;
617 }
618 vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting EventPosition to (" << x
619 << "," << y << ") for pointerIndex number " << pointerIndex);
620 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
621 this->LastEventPositions[pointerIndex][0] != x ||
622 this->LastEventPositions[pointerIndex][1] != y)
623 {
624 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
625 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
626 this->EventPositions[pointerIndex][0] = x;
627 this->EventPositions[pointerIndex][1] = y;
628 this->Modified();
629 }
630 }
631 virtual void SetEventPosition(int pos[2], int pointerIndex)
632 {
633 this->SetEventPosition(pos[0], pos[1], pointerIndex);
634 }
635 virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
636 {
637 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
638 }
639 virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
640 {
641 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
642 }
643
645
652 vtkSetMacro(AltKey, int);
653 vtkGetMacro(AltKey, int);
655
657
662 vtkSetMacro(ControlKey, int);
663 vtkGetMacro(ControlKey, int);
665
667
670 vtkSetMacro(ShiftKey, int);
671 vtkGetMacro(ShiftKey, int);
673
675
698 vtkSetMacro(KeyCode, char);
699 vtkGetMacro(KeyCode, char);
701
703
707 vtkSetMacro(RepeatCount, int);
708 vtkGetMacro(RepeatCount, int);
710
712
732 vtkSetStringMacro(KeySym);
733 vtkGetStringMacro(KeySym);
735
737
740 vtkSetMacro(PointerIndex, int);
741 vtkGetMacro(PointerIndex, int);
743
745
748 void SetRotation(double rotation);
749 vtkGetMacro(Rotation, double);
750 vtkGetMacro(LastRotation, double);
752
754
757 void SetScale(double scale);
758 vtkGetMacro(Scale, double);
759 vtkGetMacro(LastScale, double);
761
763
766 void SetTranslation(double val[2]);
767 vtkGetVector2Macro(Translation, double);
768 vtkGetVector2Macro(LastTranslation, double);
770
772
775 void SetEventInformation(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
776 const char* keysym, int pointerIndex)
777 {
778 this->SetEventPosition(x, y, pointerIndex);
779 this->ControlKey = ctrl;
780 this->ShiftKey = shift;
781 this->KeyCode = keycode;
782 this->RepeatCount = repeatcount;
783 this->PointerIndex = pointerIndex;
784 if (keysym)
785 {
786 this->SetKeySym(keysym);
787 }
788 this->Modified();
789 }
790 void SetEventInformation(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
791 int repeatcount = 0, const char* keysym = nullptr)
792 {
793 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
794 }
795
796
798
802 void SetEventInformationFlipY(int x, int y, int ctrl, int shift, char keycode, int repeatcount,
803 const char* keysym, int pointerIndex)
804 {
806 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
807 }
808 void SetEventInformationFlipY(int x, int y, int ctrl = 0, int shift = 0, char keycode = 0,
809 int repeatcount = 0, const char* keysym = nullptr)
810 {
811 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
812 }
813
814
816
819 void SetKeyEventInformation(int ctrl = 0, int shift = 0, char keycode = 0, int repeatcount = 0,
820 const char* keysym = nullptr)
821 {
822 this->ControlKey = ctrl;
823 this->ShiftKey = shift;
824 this->KeyCode = keycode;
825 this->RepeatCount = repeatcount;
826 if (keysym)
827 {
828 this->SetKeySym(keysym);
829 }
830 this->Modified();
831 }
832
833
835
846 vtkSetVector2Macro(Size, int);
847 vtkGetVector2Macro(Size, int);
848 vtkSetVector2Macro(EventSize, int);
849 vtkGetVector2Macro(EventSize, int);
851
857 virtual vtkRenderer* FindPokedRenderer(int, int);
858
867
869
877 vtkSetMacro(UseTDx, bool);
878 vtkGetMacro(UseTDx, bool);
880
882
887 virtual void MouseMoveEvent();
888 virtual void RightButtonPressEvent();
890 virtual void LeftButtonPressEvent();
896 virtual void MouseWheelLeftEvent();
897 virtual void MouseWheelRightEvent();
898 virtual void ExposeEvent();
899 virtual void ConfigureEvent();
900 virtual void EnterEvent();
901 virtual void LeaveEvent();
902 virtual void KeyPressEvent();
903 virtual void KeyReleaseEvent();
904 virtual void CharEvent();
905 virtual void ExitEvent();
908 virtual void FifthButtonPressEvent();
911
913
917 virtual void StartPinchEvent();
918 virtual void PinchEvent();
919 virtual void EndPinchEvent();
920 virtual void StartRotateEvent();
921 virtual void RotateEvent();
922 virtual void EndRotateEvent();
923 virtual void StartPanEvent();
924 virtual void PanEvent();
925 virtual void EndPanEvent();
926 virtual void TapEvent();
927 virtual void LongTapEvent();
928 virtual void SwipeEvent();
930
932
938 vtkSetMacro(RecognizeGestures, bool);
939 vtkGetMacro(RecognizeGestures, bool);
941
943
948 vtkGetMacro(PointersDownCount, int);
950
952
959 void ClearContact(size_t contactID);
960 int GetPointerIndexForContact(size_t contactID);
962 bool IsPointerIndexSet(int i);
963 void ClearPointerIndex(int i);
965
985
987
996
997protected:
1000
1004
1005 // Used as a helper object to pick instances of vtkProp
1008
1009 bool Done; // is the event loop done running
1010
1016
1025
1026 // Event information
1031 double Rotation;
1033 double Scale;
1035 double Translation[2];
1038 char* KeySym;
1042 int Size[2];
1047
1051
1053
1054 // control the fly to
1056 double Dolly;
1057
1067 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr)
1068 {
1069 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
1070 }
1072
1077
1078 // Timer related members
1079 friend struct vtkTimerStruct;
1080 vtkTimerIdMap* TimerMap; // An internal, PIMPLd map of timers and associated attributes
1081 unsigned long TimerDuration; // in milliseconds
1083
1089 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
1090 virtual int InternalDestroyTimer(int platformTimerId);
1093
1094 // Force the interactor to handle the Start() event loop, ignoring any
1095 // overrides. (Overrides are registered by observing StartEvent on the
1096 // interactor.)
1098
1102 virtual void StartEventLoop() {}
1103
1104 bool UseTDx; // 3DConnexion device.
1105
1106 // when recognizing gestures VTK will take multitouch events
1107 // if it receives them and convert them to gestures
1114
1115private:
1117 void operator=(const vtkRenderWindowInteractor&) = delete;
1118};
1119
1120VTK_ABI_NAMESPACE_END
1121#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:385
create a window for renderers to draw into
a simple class to control print indentation
Definition vtkIndent.h:108
record and play VTK events passing through a vtkRenderWindowInteractor
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
const char * GetClassName() const
Return the class name as a string.
void InternalReleaseFocus()
These methods allow a command to exclusively grab all events.
void InternalGrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
These methods allow a command to exclusively grab all events.
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.
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.
int EventPositions[VTKI_MAX_POINTERS][2]
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)
When the event loop notifies the interactor that the window size has changed, this method is called t...
virtual vtkPickingManager * CreateDefaultPickingManager()
Create default pickingManager.
virtual void LeaveEvent()
Fire various events.
static bool InteractorManagesTheEventLoop
This flag is useful when you are integrating VTK in a larger system.
virtual vtkInteractorObserver * GetInteractorStyle()
External switching between joystick/trackball/new?
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?
void ClearContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
size_t PointerIndexLookup[VTKI_MAX_POINTERS]
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.
vtkSmartPointer< vtkInteractorObserver > InteractorStyle
void SetTranslation(double val[2])
Set/get the translation for pan/swipe gestures, update LastTranslation.
virtual void SetCurrentGesture(vtkCommand::EventIds eid)
Get the current gesture that was recognized when handling multitouch and VR events.
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.
int LastEventPositions[VTKI_MAX_POINTERS][2]
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)
friend class vtkInteractorObserver
These methods allow the interactor to control which events are processed.
virtual vtkCommand::EventIds GetCurrentGesture() const
Get the current gesture that was recognized when handling multitouch and VR events.
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 SetKeySym(const char *)
Set/get the key symbol for the key that was pressed.
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)
int StartingEventPositions[VTKI_MAX_POINTERS][2]
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
Hold a reference to a vtkObjectBase instance.
int vtkTypeBool
Definition vtkABI.h:64
#define VTKI_MAX_POINTERS
#define VTK_INT_MAX
Definition vtkType.h:192
#define VTK_FLOAT_MAX
Definition vtkType.h:200
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)