Go to the documentation of this file.
51 #ifndef vtkRenderWindowInteractor_h
52 #define vtkRenderWindowInteractor_h
54 #include "vtkRenderingCoreModule.h"
61 #define VTKI_TIMER_FIRST 0
62 #define VTKI_TIMER_UPDATE 1
66 #define VTKI_MAX_POINTERS 5
134 vtkGetMacro(EnableRender,
bool);
211 enum {OneShotTimer=1,RepeatingTimer};
223 vtkSetClampMacro(TimerDuration,
unsigned long,1,100000);
224 vtkGetMacro(TimerDuration,
unsigned long);
241 vtkGetMacro(TimerEventId,
int);
243 vtkGetMacro(TimerEventType,
int);
245 vtkGetMacro(TimerEventDuration,
int);
247 vtkGetMacro(TimerEventPlatformId,
int);
272 vtkGetMacro(LightFollowCamera,
int);
285 vtkGetMacro(DesiredUpdateRate,
double);
295 vtkGetMacro(StillUpdateRate,
double);
303 vtkGetMacro(Initialized,
int);
372 {this->FlyTo(ren, x[0], x[1], x[2]);}
375 {this->FlyToImage(ren, x[0], x[1]);}
383 vtkGetMacro(NumberOfFlyFrames,
int);
392 vtkGetMacro(Dolly,
double);
404 vtkGetVector2Macro(EventPosition,
int);
405 vtkGetVector2Macro(LastEventPosition,
int);
406 vtkSetVector2Macro(LastEventPosition,
int);
410 <<
"): setting EventPosition to (" << x <<
"," << y <<
")");
411 if (this->EventPosition[0] != x || this->EventPosition[1] != y ||
412 this->LastEventPosition[0] != x || this->LastEventPosition[1] != y)
414 this->LastEventPosition[0] = this->EventPosition[0];
415 this->LastEventPosition[1] = this->EventPosition[1];
416 this->EventPosition[0] = x;
417 this->EventPosition[1] = y;
423 this->SetEventPosition(pos[0], pos[1]);
427 this->SetEventPosition(x, this->Size[1] - y - 1);
431 this->SetEventPositionFlipY(pos[0], pos[1]);
441 return this->EventPositions[pointerIndex];
449 return this->LastEventPositions[pointerIndex];
457 if (pointerIndex == 0)
459 this->LastEventPosition[0] = this->EventPosition[0];
460 this->LastEventPosition[1] = this->EventPosition[1];
461 this->EventPosition[0] = x;
462 this->EventPosition[1] = y;
465 <<
"): setting EventPosition to (" << x <<
"," << y <<
") for pointerIndex number " << pointerIndex);
466 if (this->EventPositions[pointerIndex][0] != x || this->EventPositions[pointerIndex][1] != y ||
467 this->LastEventPositions[pointerIndex][0] != x || this->LastEventPositions[pointerIndex][1] != y)
469 this->LastEventPositions[pointerIndex][0] = this->EventPositions[pointerIndex][0];
470 this->LastEventPositions[pointerIndex][1] = this->EventPositions[pointerIndex][1];
471 this->EventPositions[pointerIndex][0] = x;
472 this->EventPositions[pointerIndex][1] = y;
478 this->SetEventPosition(pos[0], pos[1], pointerIndex);
482 this->SetEventPosition(x, this->Size[1] - y - 1, pointerIndex);
486 this->SetEventPositionFlipY(pos[0], pos[1], pointerIndex);
494 vtkGetMacro(AltKey,
int);
502 vtkGetMacro(ControlKey,
int);
510 vtkGetMacro(ShiftKey,
int);
518 vtkGetMacro(KeyCode,
char);
527 vtkGetMacro(RepeatCount,
int);
537 vtkSetStringMacro(KeySym);
546 vtkGetMacro(PointerIndex,
int);
554 vtkGetMacro(Rotation,
double);
555 vtkGetMacro(LastRotation,
double);
563 vtkGetMacro(Scale,
double);
564 vtkGetMacro(LastScale,
double);
572 vtkGetVector2Macro(Translation,
double);
573 vtkGetVector2Macro(LastTranslation,
double);
589 this->SetEventPosition(x,y,pointerIndex);
590 this->ControlKey = ctrl;
591 this->ShiftKey = shift;
592 this->KeyCode = keycode;
593 this->RepeatCount = repeatcount;
594 this->PointerIndex = pointerIndex;
597 this->SetKeySym(keysym);
602 int ctrl=0,
int shift=0,
605 const char* keysym=0)
607 this->SetEventInformation(x,y,ctrl,shift,keycode,repeatcount,keysym,0);
623 this->SetEventInformation(x,
624 this->Size[1] - y - 1,
633 int ctrl=0,
int shift=0,
636 const char* keysym=0)
638 this->SetEventInformationFlipY(x,y,ctrl,shift,keycode,repeatcount,keysym,0);
650 const char* keysym=0)
652 this->ControlKey = ctrl;
653 this->ShiftKey = shift;
654 this->KeyCode = keycode;
655 this->RepeatCount = repeatcount;
658 this->SetKeySym(keysym);
676 vtkSetVector2Macro(Size,
int);
677 vtkGetVector2Macro(Size,
int);
678 vtkSetVector2Macro(EventSize,
int);
679 vtkGetVector2Macro(EventSize,
int);
708 vtkGetMacro(UseTDx,
bool);
763 vtkGetMacro(RecognizeGestures,
bool);
772 vtkGetMacro(PointersDownCount,
int);
825 double Translation[2];
826 double LastTranslation[2];
829 int EventPosition[2];
830 int LastEventPosition[2];
868 friend struct vtkTimerStruct;
void SetRenderWindow(vtkRenderWindow *aren)
Set/Get the rendering window being controlled by this object.
static vtkRenderWindowInteractor * New()
superclass for callback/observer methods
virtual void StartPanEvent()
virtual void MouseWheelForwardEvent()
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
Internal methods for creating and destroying timers that must be implemented by subclasses.
record and play VTK events passing through a vtkRenderWindowInteractor
virtual int CreateTimer(int timerType)
This class provides two groups of methods for manipulating timers.
virtual void StartEventLoop()
Run the event loop (does not return until TerminateApp is called).
virtual void MiddleButtonPressEvent()
virtual void MouseWheelBackwardEvent()
virtual void RotateEvent()
virtual int InternalDestroyTimer(int platformTimerId)
vtkObserverMediator * GetObserverMediator()
Return the object used to mediate between vtkInteractorObservers contending for resources.
void SetRotation(double val)
Set/get the rotation for the gesture in degrees, update LastRotation.
void FlyTo(vtkRenderer *ren, double *x)
virtual void EndPickCallback()
~vtkRenderWindowInteractor()
virtual void Modified()
Update the modification time for this object.
void SetScale(double val)
Set/get the scale for the gesture, updates LastScale.
abstract base class for most VTK objects
virtual void UpdateSize(int x, int y)
Event loop notification member for window size change.
vtkRenderWindow * RenderWindow
virtual void SetEventPosition(int x, int y)
virtual void LeaveEvent()
vtkPickingManager * PickingManager
void SetKeyEventInformation(int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=0)
Set all the keyboard-related event information in one call.
define API for picking subclasses
a list of nodes that form an assembly path
virtual void SetPickingManager(vtkPickingManager *)
Set the picking manager.
virtual void KeyPressEvent()
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
virtual vtkRenderer * FindPokedRenderer(int, int)
When an event occurs, we must determine which Renderer the event occurred within, since one RenderWin...
virtual int * GetLastEventPositions(int pointerIndex)
bool IsPointerIndexSet(int i)
void InternalReleaseFocus()
int GetPointerIndexForContact(size_t contactID)
virtual int * GetEventPositions(int pointerIndex)
int CreateOneShotTimer(unsigned long duration)
Create a one shot timer, with the specified duretion (in milliseconds).
virtual void RightButtonReleaseEvent()
vtkAbstractPicker * Picker
virtual void RightButtonPressEvent()
const char * GetClassName() const
Return the class name as a string.
virtual void GetMousePosition(int *x, int *y)
Get the current position of the mouse.
void FlyToImage(vtkRenderer *ren, double *x)
abstract base class for most VTK objects
virtual void EndPanEvent()
vtkObserverMediator * ObserverMediator
Widget mediators are used to resolve contention for cursors and other resources.
virtual void SwipeEvent()
virtual void ConfigureEvent()
virtual void SetInteractorStyle(vtkInteractorObserver *)
External switching between joystick/trackball/new? modes.
a simple class to control print indentation
virtual void SetEventPosition(int pos[2])
int DestroyTimer(int timerId)
Destroy the timer specified by timerId.
int ResetTimer(int timerId)
Reset the specified timer.
int IsOneShotTimer(int timerId)
Query whether the specified timerId is a one shot timer.
unsigned long GetTimerDuration(int timerId)
Get the duration (in milliseconds) for the specified timerId.
virtual void EndPinchEvent()
virtual void LongTapEvent()
int GetPointerIndexForExistingContact(size_t contactID)
virtual vtkPickingManager * CreateDefaultPickingManager()
Create default pickingManager.
virtual void UnRegister(vtkObjectBase *o)
This Method detects loops of RenderWindow-Interactor, so objects are freed properly.
vtkInteractorObserver * InteractorStyle
virtual void LeftButtonReleaseEvent()
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
virtual vtkAbstractPropPicker * CreateDefaultPicker()
Create default picker.
virtual void SetEventPosition(int x, int y, int pointerIndex)
virtual void Render()
Render the scene.
virtual void SetEventPositionFlipY(int pos[2])
virtual int DestroyTimer()
platform-independent render window interaction including picking and frame rate control.
virtual void EndRotateEvent()
virtual void MiddleButtonReleaseEvent()
virtual void ExitCallback()
These methods correspond to the the Exit, User and Pick callbacks.
abstract API for pickers that can pick an instance of vtkProp
virtual void UserCallback()
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
virtual void RecognizeGesture(vtkCommand::EventIds)
virtual void TerminateApp(void)
This function is called on 'q','e' keypress if exitmethod is not specified and should be overridden b...
void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
virtual void Enable()
Enable/Disable interactions.
virtual void EnterEvent()
virtual void KeyReleaseEvent()
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.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkRenderWindowInteractor()
abstract specification for renderers
virtual void StartRotateEvent()
virtual void Start()
Start the event loop.
void FlyToImage(vtkRenderer *ren, double x, double y)
virtual void SetEventPosition(int pos[2], int pointerIndex)
void SetEventInformationFlipY(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=0)
virtual void SetEventPositionFlipY(int x, int y)
virtual void SetPicker(vtkAbstractPicker *)
Set/Get the object used to perform pick operations.
#define VTKI_MAX_POINTERS
virtual void Initialize()
Prepare for handling events and set the Enabled flag to true.
void FlyTo(vtkRenderer *ren, double x, double y, double z)
Given a position x, move the current camera's focal point to x.
void SetTranslation(double val[2])
Set/get the tranlation for pan/swipe gestures, update LastTranslation.
void InternalGrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
These methods allow a command to exclusively grab all events.
virtual void SetEventPositionFlipY(int x, int y, int pointerIndex)
int CreateRepeatingTimer(unsigned long duration)
Create a repeating timer, with the specified duration (in milliseconds).
virtual void LeftButtonPressEvent()
virtual void ExposeEvent()
virtual void MouseMoveEvent()
Fire various events.
void ClearPointerIndex(int i)
create a window for renderers to draw into
virtual void SetEventPositionFlipY(int pos[2], int pointerIndex)
void ClearContact(size_t contactID)
Most multitouch systems use persistent contact/pointer ids to track events/motion during multitouch e...
virtual void PinchEvent()
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 StartPinchEvent()
Fire various gesture based events.
vtkCommand::EventIds CurrentGesture
virtual void StartPickCallback()
virtual int GetVTKTimerId(int platformTimerId)
Get the VTK timer ID that corresponds to the supplied platform ID.
void SetEventInformation(int x, int y, int ctrl=0, int shift=0, char keycode=0, int repeatcount=0, const char *keysym=0)
unsigned long TimerDuration
Class defines API to manage the picking process.
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.