15 #include <vsg/app/Camera.h>
16 #include <vsg/app/EllipsoidModel.h>
17 #include <vsg/maths/transform.h>
18 #include <vsg/ui/ApplicationEvent.h>
19 #include <vsg/ui/KeyEvent.h>
20 #include <vsg/ui/PointerEvent.h>
21 #include <vsg/ui/ScrollWheelEvent.h>
22 #include <vsg/ui/TouchEvent.h>
42 void apply(
MoveEvent& moveEvent)
override;
49 virtual void rotate(
double angle,
const dvec3& axis);
50 virtual void zoom(
double ratio);
51 virtual void pan(
const dvec2& delta);
53 std::pair<int32_t, int32_t> cameraRenderAreaCoordinates(
const PointerEvent& pointerEvent)
const;
54 bool withinRenderArea(
const PointerEvent& pointerEvent)
const;
68 void addKeyViewpoint(KeySymbol key,
double latitude,
double longitude,
double altitude,
double duration = 1.0);
77 double duration = 0.0;
84 ButtonMask rotateButtonMask = BUTTON_MASK_1;
87 ButtonMask panButtonMask = BUTTON_MASK_2;
90 ButtonMask zoomButtonMask = BUTTON_MASK_3;
93 double zoomScale = 1.0;
96 bool supportsThrow =
true;
103 bool _hasFocus =
false;
104 bool _lastPointerEventWithinRenderArea =
false;
113 UpdateMode _updateMode = INACTIVE;
114 double _zoomPreviousRatio = 0.0;
116 double _rotateAngle = 0.0;
119 time_point _previousTime;
121 double _previousDelta = 0.0;
122 double _prevZoomTouchDistance = 0.0;
123 bool _thrown =
false;
125 time_point _startTime;
128 std::map<uint32_t, ref_ptr<TouchEvent>> _previousTouches;
130 double _animationDuration = 0.0;
Definition: ApplicationEvent.h:37
KeyPressEvent represents a key press event.
Definition: KeyEvent.h:308
MoveEvent represent a button move event.
Definition: PointerEvent.h:88
PointerEvent is a base class for mouse pointer events.
Definition: PointerEvent.h:33
TouchDownEvent represents a touch down event.
Definition: TouchEvent.h:45
TouchMoveEvent represents a touch move event.
Definition: TouchEvent.h:67
TouchUpEvent represents a touch up event.
Definition: TouchEvent.h:56
Trackball is an event handler that provides mouse and touch controlled 3d trackball camera view manip...
Definition: Trackball.h:29
dvec2 ndc(PointerEvent &event)
compute non dimensional window coordinate (-1,1) from event coords
void addWindow(ref_ptr< Window > window, const ivec2 &offset={})
add a Window to respond events for, with mouse coordinate offset to treat all associated windows
void addKeyViewpoint(KeySymbol key, ref_ptr< LookAt > lookAt, double duration=1.0)
add Key to Viewpoint binding using a LookAt to define the viewpoint
std::map< KeySymbol, Viewpoint > keyViewpointMap
container that maps key symbol bindings with the Viewpoint that should move the LookAt to when presse...
Definition: Trackball.h:81
void addKeyViewpoint(KeySymbol key, double latitude, double longitude, double altitude, double duration=1.0)
add Key to Viewpoint binding using a latitude, longitude and altitude to define the viewpoint....
void setViewpoint(ref_ptr< LookAt > lookAt, double duration=1.0)
std::map< observer_ptr< Window >, ivec2 > windowOffsets
list of windows that this Trackball should respond to events from, and the points xy offsets to apply
Definition: Trackball.h:59
dvec3 tbc(PointerEvent &event)
compute trackball coordinate from event coords
Definition: Trackball.h:75