45 #ifndef vtkRenderWindowInteractor_h
46 #define vtkRenderWindowInteractor_h
50 #include "vtkRenderingCoreModule.h"
55 #define VTKI_TIMER_FIRST 0
56 #define VTKI_TIMER_UPDATE 1
60 #define VTKI_MAX_POINTERS 5
94 this->Initialized = 0;
123 vtkGetMacro(Done,
bool);
124 vtkSetMacro(Done,
bool);
152 vtkBooleanMacro(EnableRender,
bool);
153 vtkSetMacro(EnableRender,
bool);
154 vtkGetMacro(EnableRender,
bool);
260 vtkSetClampMacro(TimerDuration,
unsigned long, 1, 100000);
261 vtkGetMacro(TimerDuration,
unsigned long);
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);
322 vtkGetMacro(DesiredUpdateRate,
double);
332 vtkGetMacro(StillUpdateRate,
double);
340 vtkGetMacro(Initialized,
int);
422 vtkGetMacro(NumberOfFlyFrames,
int);
430 vtkSetMacro(Dolly,
double);
431 vtkGetMacro(Dolly,
double);
443 vtkGetVector2Macro(EventPosition,
int);
444 vtkGetVector2Macro(LastEventPosition,
int);
445 vtkSetVector2Macro(LastEventPosition,
int);
448 vtkDebugMacro(<< this->
GetClassName() <<
" (" <<
this <<
"): setting EventPosition to (" << x
450 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
451 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
453 this->LastEventPosition[0] = this->EventPosition[0];
454 this->LastEventPosition[1] = this->EventPosition[1];
455 this->EventPosition[0] = x;
456 this->EventPosition[1] = y;
463 this->SetEventPosition(x, this->Size[1] - y - 1);
474 return this->EventPositions[pointerIndex];
482 return this->LastEventPositions[pointerIndex];
490 if (pointerIndex == 0)
492 this->LastEventPosition[0] = this->EventPosition[0];
493 this->LastEventPosition[1] = this->EventPosition[1];
494 this->EventPosition[0] = x;
495 this->EventPosition[1] = y;
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)
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;
512 this->SetEventPosition(pos[0], pos[1], pointerIndex);
516 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
520 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
551 vtkSetMacro(KeyCode,
char);
552 vtkGetMacro(KeyCode,
char);
560 vtkSetMacro(RepeatCount,
int);
561 vtkGetMacro(RepeatCount,
int);
571 vtkSetStringMacro(KeySym);
572 vtkGetStringMacro(KeySym);
579 vtkSetMacro(PointerIndex,
int);
580 vtkGetMacro(PointerIndex,
int);
588 vtkGetMacro(Rotation,
double);
589 vtkGetMacro(LastRotation,
double);
597 vtkGetMacro(Scale,
double);
598 vtkGetMacro(LastScale,
double);
606 vtkGetVector2Macro(Translation,
double);
607 vtkGetVector2Macro(LastTranslation,
double);
615 const char* keysym,
int pointerIndex)
617 this->SetEventPosition(x, y, pointerIndex);
620 this->KeyCode = keycode;
621 this->RepeatCount = repeatcount;
622 this->PointerIndex = pointerIndex;
625 this->SetKeySym(keysym);
630 int repeatcount = 0,
const char* keysym =
nullptr)
632 this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
642 const char* keysym,
int pointerIndex)
644 this->SetEventInformation(
645 x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
648 int repeatcount = 0,
const char* keysym =
nullptr)
650 this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
659 const char* keysym =
nullptr)
663 this->KeyCode = keycode;
664 this->RepeatCount = repeatcount;
667 this->SetKeySym(keysym);
685 vtkSetVector2Macro(Size,
int);
686 vtkGetVector2Macro(Size,
int);
687 vtkSetVector2Macro(EventSize,
int);
688 vtkGetVector2Macro(EventSize,
int);
716 vtkSetMacro(UseTDx,
bool);
717 vtkGetMacro(UseTDx,
bool);
775 vtkSetMacro(RecognizeGestures,
bool);
776 vtkGetMacro(RecognizeGestures,
bool);
785 vtkGetMacro(PointersDownCount,
int);
841 double Translation[2];
842 double LastTranslation[2];
845 int EventPosition[2];
846 int LastEventPosition[2];
885 friend struct vtkTimerStruct;
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
void InternalReleaseFocus()
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.
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()
virtual void PinchEvent()
virtual void SwipeEvent()
vtkHardwareWindow * HardwareWindow
virtual void StartRotateEvent()
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()
virtual void KeyReleaseEvent()
virtual void EndPickCallback()
virtual void Enable()
Enable/Disable interactions.
virtual int InternalDestroyTimer(int platformTimerId)
int CreateRepeatingTimer(unsigned long duration)
Create a repeating timer, with the specified duration (in milliseconds).
virtual vtkAbstractPropPicker * CreateDefaultPicker()
Create default picker.
vtkObserverMediator * ObserverMediator
Widget mediators are used to resolve contention for cursors and other resources.
virtual void EndRotateEvent()
void FlyToImage(vtkRenderer *ren, double x, double y)
virtual void ExposeEvent()
virtual void EndPanEvent()
virtual void Render()
Render the scene.
virtual void MouseWheelForwardEvent()
virtual void SetEventPosition(int x, int y)
virtual void UserCallback()
void SetHardwareWindow(vtkHardwareWindow *aren)
Set/Get the hardware window being controlled by this object.
virtual void LeftButtonReleaseEvent()
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.
virtual void TerminateApp(void)
This function is called on 'q','e' keypress if exitmethod is not specified and should be overridden b...
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 int * GetEventPositions(int pointerIndex)
virtual void LeaveEvent()
virtual void FourthButtonPressEvent()
virtual void EnterEvent()
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
Internal methods for creating and destroying timers that must be implemented by subclasses.
static vtkRenderWindowInteractor * New()
~vtkRenderWindowInteractor() override
virtual void RightButtonPressEvent()
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)
virtual vtkPickingManager * CreateDefaultPickingManager()
Create default pickingManager.
virtual void ConfigureEvent()
virtual void FifthButtonPressEvent()
virtual vtkRenderer * FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
virtual void StartPanEvent()
virtual int CreateTimer(int timerType)
This class provides two groups of methods for manipulating timers.
int ResetTimer(int timerId)
Reset the specified timer.
virtual void MouseWheelBackwardEvent()
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 SetRotation(double val)
Set/get the rotation for the gesture in degrees, update LastRotation.
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).
virtual void ExitCallback()
These methods correspond to the Exit, User and Pick callbacks.
vtkPickingManager * PickingManager
void SetEventInformationFlipY(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=nullptr)
int DestroyTimer(int timerId)
Destroy the timer specified by timerId.
void SetTranslation(double val[2])
Set/get the translation for pan/swipe gestures, update LastTranslation.
void FlyToImage(vtkRenderer *ren, double *x)
virtual void ProcessEvents()
Run the event loop and return.
unsigned long TimerDuration
virtual void RightButtonReleaseEvent()
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 GetMousePosition(int *x, int *y)
Get the current position of the mouse.
virtual void SetEventPositionFlipY(int x, int y)
int GetPointerIndexForContact(size_t contactID)
virtual void FifthButtonReleaseEvent()
bool IsPointerIndexSet(int i)
virtual void LeftButtonPressEvent()
void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
virtual void MiddleButtonPressEvent()
virtual int * GetLastEventPositions(int pointerIndex)
virtual void StartPickCallback()
int GetPointerIndexForExistingContact(size_t contactID)
virtual void MouseMoveEvent()
Fire various events.
void FlyTo(vtkRenderer *ren, double *x)
vtkAbstractPicker * Picker
vtkInteractorObserver * InteractorStyle
virtual void StartPinchEvent()
Fire various gesture based events.
virtual void SetEventPosition(int pos[2])
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.
virtual void Initialize()
Prepare for handling events and set the Enabled flag to true.
virtual void RotateEvent()
virtual void SetEventPositionFlipY(int pos[2])
vtkTypeBool LightFollowCamera
virtual void SetEventPosition(int x, int y, int pointerIndex)
void ClearPointerIndex(int i)
virtual void LongTapEvent()
void SetScale(double val)
Set/get the scale for the gesture, updates LastScale.
virtual void MiddleButtonReleaseEvent()
virtual void RecognizeGesture(vtkCommand::EventIds)
virtual void SetEventPosition(int pos[2], int pointerIndex)
virtual void SetPickingManager(vtkPickingManager *)
Set the picking manager.
vtkRenderWindow * RenderWindow
vtkRenderWindowInteractor()
virtual void KeyPressEvent()
create a window for renderers to draw into
abstract specification for renderers
#define VTKI_MAX_POINTERS