151#ifndef vtkRenderWindowInteractor_h
152#define vtkRenderWindowInteractor_h
156#include "vtkRenderingCoreModule.h"
160VTK_ABI_NAMESPACE_BEGIN
164#define VTKI_TIMER_FIRST 0
165#define VTKI_TIMER_UPDATE 1
169#define VTKI_MAX_POINTERS 5
203 this->Initialized = 0;
233 vtkGetMacro(Done,
bool);
234 vtkSetMacro(Done,
bool);
255 vtkGetMacro(Enabled,
int);
262 vtkBooleanMacro(EnableRender,
bool);
264 vtkSetMacro(EnableRender,
bool);
266 vtkGetMacro(EnableRender,
bool);
295 virtual
void UpdateSize(
int x,
int y);
314 virtual
int CreateTimer(
int timerType);
315 virtual
int DestroyTimer();
321 int CreateRepeatingTimer(
unsigned long duration);
327 int CreateOneShotTimer(
unsigned long duration);
333 int IsOneShotTimer(
int timerId);
338 unsigned long GetTimerDuration(
int timerId);
343 int ResetTimer(
int timerId);
349 int DestroyTimer(
int timerId);
354 virtual
int GetVTKTimerId(
int platformTimerId);
374 vtkSetClampMacro(TimerDuration,
unsigned long, 1, 100000);
375 vtkGetMacro(TimerDuration,
unsigned long);
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);
436 vtkGetMacro(DesiredUpdateRate,
double);
446 vtkGetMacro(StillUpdateRate,
double);
454 vtkGetMacro(Initialized,
int);
491 virtual
void ExitCallback();
492 virtual
void UserCallback();
493 virtual
void StartPickCallback();
494 virtual
void EndPickCallback();
500 virtual
void GetMousePosition(
int* x,
int* y)
538 vtkGetMacro(NumberOfFlyFrames,
int);
546 vtkSetMacro(Dolly,
double);
547 vtkGetMacro(Dolly,
double);
559 vtkGetVector2Macro(EventPosition,
int);
560 vtkGetVector2Macro(LastEventPosition,
int);
561 vtkSetVector2Macro(LastEventPosition,
int);
564 vtkDebugMacro(<< this->
GetClassName() <<
" (" <<
this <<
"): setting EventPosition to (" << x
566 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
567 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
569 this->LastEventPosition[0] = this->EventPosition[0];
570 this->LastEventPosition[1] = this->EventPosition[1];
571 this->EventPosition[0] = x;
572 this->EventPosition[1] = y;
579 this->SetEventPosition(x, this->Size[1] - y - 1);
590 return this->EventPositions[pointerIndex];
598 return this->LastEventPositions[pointerIndex];
606 if (pointerIndex == 0)
608 this->LastEventPosition[0] = this->EventPosition[0];
609 this->LastEventPosition[1] = this->EventPosition[1];
610 this->EventPosition[0] = x;
611 this->EventPosition[1] = y;
613 vtkDebugMacro(<< this->
GetClassName() <<
" (" <<
this <<
"): setting EventPosition to (" << x
614 <<
"," << y <<
") for pointerIndex number " << pointerIndex);
615 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
616 this->LastEventPositions[pointerIndex][0] != x ||
617 this->LastEventPositions[pointerIndex][1] != y)
619 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
620 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
621 this->EventPositions[pointerIndex][0] = x;
622 this->EventPositions[pointerIndex][1] = y;
628 this->SetEventPosition(pos[0], pos[1], pointerIndex);
632 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
636 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
647 vtkSetMacro(AltKey,
int);
648 vtkGetMacro(AltKey,
int);
657 vtkSetMacro(ControlKey,
int);
658 vtkGetMacro(ControlKey,
int);
665 vtkSetMacro(ShiftKey,
int);
666 vtkGetMacro(ShiftKey,
int);
693 vtkSetMacro(KeyCode,
char);
694 vtkGetMacro(KeyCode,
char);
702 vtkSetMacro(RepeatCount,
int);
703 vtkGetMacro(RepeatCount,
int);
727 vtkSetStringMacro(KeySym);
728 vtkGetStringMacro(KeySym);
735 vtkSetMacro(PointerIndex,
int);
736 vtkGetMacro(PointerIndex,
int);
744 vtkGetMacro(Rotation,
double);
745 vtkGetMacro(LastRotation,
double);
753 vtkGetMacro(Scale,
double);
754 vtkGetMacro(LastScale,
double);
762 vtkGetVector2Macro(Translation,
double);
763 vtkGetVector2Macro(LastTranslation,
double);
771 const char* keysym,
int pointerIndex)
773 this->SetEventPosition(x, y, pointerIndex);
774 this->ControlKey = ctrl;
775 this->ShiftKey = shift;
776 this->KeyCode = keycode;
777 this->RepeatCount = repeatcount;
778 this->PointerIndex = pointerIndex;
781 this->SetKeySym(keysym);
786 int repeatcount = 0,
const char* keysym =
nullptr)
788 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
798 const char* keysym,
int pointerIndex)
800 this->SetEventInformation(
801 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
804 int repeatcount = 0,
const char* keysym =
nullptr)
806 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
815 const char* keysym =
nullptr)
817 this->ControlKey = ctrl;
818 this->ShiftKey = shift;
819 this->KeyCode = keycode;
820 this->RepeatCount = repeatcount;
823 this->SetKeySym(keysym);
841 vtkSetVector2Macro(Size,
int);
842 vtkGetVector2Macro(Size,
int);
843 vtkSetVector2Macro(EventSize,
int);
844 vtkGetVector2Macro(EventSize,
int);
872 vtkSetMacro(UseTDx,
bool);
873 vtkGetMacro(UseTDx,
bool);
933 vtkSetMacro(RecognizeGestures,
bool);
934 vtkGetMacro(RecognizeGestures,
bool);
943 vtkGetMacro(PointersDownCount,
int);
1030 double Translation[2];
1031 double LastTranslation[2];
1034 int EventPosition[2];
1035 int LastEventPosition[2];
1064 this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
1074 friend struct vtkTimerStruct;
1115VTK_ABI_NAMESPACE_END
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
create a window for renderers to draw into
a simple class to control print indentation
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
virtual void Modified()
Update the modification time for this object.
Class defines API to manage the picking process.
platform-independent render window interaction including picking and frame rate control.
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.
vtkHardwareWindow * HardwareWindow
virtual void StartRotateEvent()
Fire various gesture based events.
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 Enable()
Enable/Disable interactions.
virtual int InternalDestroyTimer(int platformTimerId)
Internal methods for creating and destroying timers that must be implemented by subclasses.
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 LeftButtonReleaseEvent()
Fire various events.
virtual void CharEvent()
Fire various events.
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 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? 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.
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.
void ReInitialize()
Prepare for handling events and set the Enabled flag to true.
vtkPickingManager * PickingManager
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.
unsigned long TimerDuration
virtual void RightButtonReleaseEvent()
Fire various events.
vtkCommand::EventIds CurrentGesture
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 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 vtkCommand::EventIds GetCurrentGesture() const
Get the current gesture that was recognized when handling multitouch and VR events.
virtual void MiddleButtonPressEvent()
Fire various events.
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.
vtkAbstractPicker * Picker
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.
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.
vtkTypeBool LightFollowCamera
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)
vtkRenderWindow * RenderWindow
vtkRenderWindowInteractor()
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.
#define VTKI_MAX_POINTERS
#define VTK_MARSHAL_EXCLUDE_REASON_IS_INTERNAL
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALEXCLUDE(reason)