39#ifndef vtkRenderWindowInteractor_h 
   40#define vtkRenderWindowInteractor_h 
   44#include "vtkRenderingCoreModule.h"  
   47VTK_ABI_NAMESPACE_BEGIN
 
   51#define VTKI_TIMER_FIRST 0 
   52#define VTKI_TIMER_UPDATE 1 
   56#define VTKI_MAX_POINTERS 5 
   90    this->Initialized = 0;
 
  120  vtkGetMacro(Done, 
bool);
 
  121  vtkSetMacro(Done, 
bool);
 
  142  vtkGetMacro(Enabled, 
int);
 
  149  vtkBooleanMacro(EnableRender, 
bool);
 
  150  vtkSetMacro(EnableRender, 
bool);
 
  151  vtkGetMacro(EnableRender, 
bool);
 
  257  vtkSetClampMacro(TimerDuration, 
unsigned long, 1, 100000);
 
  258  vtkGetMacro(TimerDuration, 
unsigned long);
 
  274  vtkSetMacro(TimerEventId, 
int);
 
  275  vtkGetMacro(TimerEventId, 
int);
 
  276  vtkSetMacro(TimerEventType, 
int);
 
  277  vtkGetMacro(TimerEventType, 
int);
 
  278  vtkSetMacro(TimerEventDuration, 
int);
 
  279  vtkGetMacro(TimerEventDuration, 
int);
 
  280  vtkSetMacro(TimerEventPlatformId, 
int);
 
  281  vtkGetMacro(TimerEventPlatformId, 
int);
 
  319  vtkGetMacro(DesiredUpdateRate, 
double);
 
  329  vtkGetMacro(StillUpdateRate, 
double);
 
  337  vtkGetMacro(Initialized, 
int);
 
  419  vtkGetMacro(NumberOfFlyFrames, 
int);
 
  427  vtkSetMacro(Dolly, 
double);
 
  428  vtkGetMacro(Dolly, 
double);
 
  440  vtkGetVector2Macro(EventPosition, 
int);
 
  441  vtkGetVector2Macro(LastEventPosition, 
int);
 
  442  vtkSetVector2Macro(LastEventPosition, 
int);
 
  445    vtkDebugMacro(<< this->
GetClassName() << 
" (" << 
this << 
"): setting EventPosition to (" << x
 
  447    if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
 
  448      this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
 
  450      this->LastEventPosition[0] = this->EventPosition[0];
 
  451      this->LastEventPosition[1] = this->EventPosition[1];
 
  452      this->EventPosition[0] = x;
 
  453      this->EventPosition[1] = y;
 
  460    this->SetEventPosition(x, this->Size[1] - y - 1);
 
  471    return this->EventPositions[pointerIndex];
 
  479    return this->LastEventPositions[pointerIndex];
 
  487    if (pointerIndex == 0)
 
  489      this->LastEventPosition[0] = this->EventPosition[0];
 
  490      this->LastEventPosition[1] = this->EventPosition[1];
 
  491      this->EventPosition[0] = x;
 
  492      this->EventPosition[1] = y;
 
  494    vtkDebugMacro(<< this->
GetClassName() << 
" (" << 
this << 
"): setting EventPosition to (" << x
 
  495                  << 
"," << y << 
") for pointerIndex number " << pointerIndex);
 
  496    if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
 
  497      this->LastEventPositions[pointerIndex][0] != x ||
 
  498      this->LastEventPositions[pointerIndex][1] != y)
 
  500      this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
 
  501      this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
 
  502      this->EventPositions[pointerIndex][0] = x;
 
  503      this->EventPositions[pointerIndex][1] = y;
 
  509    this->SetEventPosition(pos[0], pos[1], pointerIndex);
 
  513    this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
 
  517    this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
 
  524  vtkSetMacro(AltKey, 
int);
 
  525  vtkGetMacro(AltKey, 
int);
 
  532  vtkSetMacro(ControlKey, 
int);
 
  533  vtkGetMacro(ControlKey, 
int);
 
  540  vtkSetMacro(ShiftKey, 
int);
 
  541  vtkGetMacro(ShiftKey, 
int);
 
  548  vtkSetMacro(KeyCode, 
char);
 
  549  vtkGetMacro(KeyCode, 
char);
 
  557  vtkSetMacro(RepeatCount, 
int);
 
  558  vtkGetMacro(RepeatCount, 
int);
 
  568  vtkSetStringMacro(KeySym);
 
  569  vtkGetStringMacro(KeySym);
 
  576  vtkSetMacro(PointerIndex, 
int);
 
  577  vtkGetMacro(PointerIndex, 
int);
 
  585  vtkGetMacro(Rotation, 
double);
 
  586  vtkGetMacro(LastRotation, 
double);
 
  594  vtkGetMacro(Scale, 
double);
 
  595  vtkGetMacro(LastScale, 
double);
 
  603  vtkGetVector2Macro(Translation, 
double);
 
  604  vtkGetVector2Macro(LastTranslation, 
double);
 
  612    const char* keysym, 
int pointerIndex)
 
  614    this->SetEventPosition(x, y, pointerIndex);
 
  615    this->ControlKey = ctrl;
 
  616    this->ShiftKey = shift;
 
  617    this->KeyCode = keycode;
 
  618    this->RepeatCount = repeatcount;
 
  619    this->PointerIndex = pointerIndex;
 
  622      this->SetKeySym(keysym);
 
  627    int repeatcount = 0, 
const char* keysym = 
nullptr)
 
  629    this->SetEventInformation(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
 
  639    const char* keysym, 
int pointerIndex)
 
  641    this->SetEventInformation(
 
  642      x, this->Size[1] - y - 1, ctrl, shift, keycode, repeatcount, keysym, pointerIndex);
 
  645    int repeatcount = 0, 
const char* keysym = 
nullptr)
 
  647    this->SetEventInformationFlipY(x, y, ctrl, shift, keycode, repeatcount, keysym, 0);
 
  656    const char* keysym = 
nullptr)
 
  658    this->ControlKey = ctrl;
 
  659    this->ShiftKey = shift;
 
  660    this->KeyCode = keycode;
 
  661    this->RepeatCount = repeatcount;
 
  664      this->SetKeySym(keysym);
 
  682  vtkSetVector2Macro(Size, 
int);
 
  683  vtkGetVector2Macro(Size, 
int);
 
  684  vtkSetVector2Macro(EventSize, 
int);
 
  685  vtkGetVector2Macro(EventSize, 
int);
 
  713  vtkSetMacro(UseTDx, 
bool);
 
  714  vtkGetMacro(UseTDx, 
bool);
 
  774  vtkSetMacro(RecognizeGestures, 
bool);
 
  775  vtkGetMacro(RecognizeGestures, 
bool);
 
  784  vtkGetMacro(PointersDownCount, 
int);
 
  840  double Translation[2];
 
  841  double LastTranslation[2];
 
  844  int EventPosition[2];
 
  845  int LastEventPosition[2];
 
  874    this->Superclass::InternalGrabFocus(mouseEvents, keypressEvents);
 
  884  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
 
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()
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 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.
 
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.
 
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.
 
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 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.
 
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.
 
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.
 
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)
 
virtual void SetPickingManager(vtkPickingManager *)
Set the picking manager.
 
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