14#ifndef OSGGA_GUIEVENTADAPTER
15#define OSGGA_GUIEVENTADAPTER 1
57 if (&pd==
this)
return *
this;
86 LEFT_MOUSE_BUTTON = 1<<0,
87 MIDDLE_MOUSE_BUTTON = 1<<1,
88 RIGHT_MOUSE_BUTTON = 1<<2
103 PEN_PRESSURE = 1<<10,
104 PEN_ORIENTATION = 1<<11,
105 PEN_PROXIMITY_ENTER = 1<<12,
106 PEN_PROXIMITY_LEAVE = 1<<13,
107 CLOSE_WINDOW = 1<<14,
108 QUIT_APPLICATION = 1<<15,
157 KEY_Ampersand = 0x26,
159 KEY_Leftparen = 0x28,
160 KEY_Rightparen = 0x29,
168 KEY_Semicolon = 0x3B,
174 KEY_Leftbracket = 0x5B,
175 KEY_Backslash = 0x5C,
176 KEY_Rightbracket = 0x5D,
178 KEY_Underscore = 0x5F,
179 KEY_Backquote = 0x60,
181 KEY_BackSpace = 0xFF08,
183 KEY_Linefeed = 0xFF0A,
187 KEY_Scroll_Lock = 0xFF14,
188 KEY_Sys_Req = 0xFF15,
201 KEY_Page_Up = 0xFF55,
203 KEY_Page_Down = 0xFF56,
212 KEY_Execute = 0xFF62,
221 KEY_Mode_switch = 0xFF7E,
222 KEY_Script_switch = 0xFF7E,
223 KEY_Num_Lock = 0xFF7F,
227 KEY_KP_Space = 0xFF80,
229 KEY_KP_Enter = 0xFF8D,
234 KEY_KP_Home = 0xFF95,
235 KEY_KP_Left = 0xFF96,
237 KEY_KP_Right = 0xFF98,
238 KEY_KP_Down = 0xFF99,
239 KEY_KP_Prior = 0xFF9A,
240 KEY_KP_Page_Up = 0xFF9A,
241 KEY_KP_Next = 0xFF9B,
242 KEY_KP_Page_Down = 0xFF9B,
244 KEY_KP_Begin = 0xFF9D,
245 KEY_KP_Insert = 0xFF9E,
246 KEY_KP_Delete = 0xFF9F,
247 KEY_KP_Equal = 0xFFBD,
248 KEY_KP_Multiply = 0xFFAA,
250 KEY_KP_Separator = 0xFFAC,
251 KEY_KP_Subtract = 0xFFAD,
252 KEY_KP_Decimal = 0xFFAE,
253 KEY_KP_Divide = 0xFFAF,
311 KEY_Shift_L = 0xFFE1,
312 KEY_Shift_R = 0xFFE2,
313 KEY_Control_L = 0xFFE3,
314 KEY_Control_R = 0xFFE4,
315 KEY_Caps_Lock = 0xFFE5,
316 KEY_Shift_Lock = 0xFFE6,
322 KEY_Super_L = 0xFFEB,
323 KEY_Super_R = 0xFFEC,
324 KEY_Hyper_L = 0xFFED,
331 MODKEY_LEFT_SHIFT = 0x0001,
332 MODKEY_RIGHT_SHIFT = 0x0002,
333 MODKEY_LEFT_CTRL = 0x0004,
334 MODKEY_RIGHT_CTRL = 0x0008,
335 MODKEY_LEFT_ALT = 0x0010,
336 MODKEY_RIGHT_ALT = 0x0020,
337 MODKEY_LEFT_META = 0x0040,
338 MODKEY_RIGHT_META = 0x0080,
339 MODKEY_LEFT_SUPER = 0x0100,
340 MODKEY_RIGHT_SUPER = 0x0200,
341 MODKEY_LEFT_HYPER = 0x0400,
342 MODKEY_RIGHT_HYPER = 0x0800,
343 MODKEY_NUM_LOCK = 0x1000,
344 MODKEY_CAPS_LOCK = 0x2000,
345 MODKEY_CTRL = (MODKEY_LEFT_CTRL|MODKEY_RIGHT_CTRL),
346 MODKEY_SHIFT = (MODKEY_LEFT_SHIFT|MODKEY_RIGHT_SHIFT),
347 MODKEY_ALT = (MODKEY_LEFT_ALT|MODKEY_RIGHT_ALT),
348 MODKEY_META = (MODKEY_LEFT_META|MODKEY_RIGHT_META),
349 MODKEY_SUPER = (MODKEY_LEFT_SUPER|MODKEY_RIGHT_SUPER),
350 MODKEY_HYPER = (MODKEY_LEFT_HYPER|MODKEY_RIGHT_HYPER)
356 Y_INCREASING_DOWNWARDS
395 TouchPoint() : id(0), phase(TOUCH_UNKNOWN), x(0.0f), y(0.0f), tapCount(0) {}
401 tapCount(in_tap_count)
414 osg::Object(td,copyop),
415 _touches(td._touches) {}
436 _touches.push_back(
TouchPoint(
id, phase, x, y, tap_count));
469 double time()
const {
return _time; }
506 inline void setKey(
int key) { _key = key; }
509 virtual int getKey()
const {
return _key; }
552 void setX(
float x) { _mx = x; }
555 float getX()
const {
return _mx; }
558 void setY(
float y) { _my = y; }
561 float getY()
const {
return _my; }
566 return _pointerDataList.size()>=1 ?
567 _pointerDataList[_pointerDataList.size()-1]->getXnormalized():
568 2.0f*(getX()-getXmin())/(getXmax()-getXmin())-1.0f;
573 if (_pointerDataList.size()>=1)
return _pointerDataList[_pointerDataList.size()-1]->getYnormalized();
574 if (_mouseYOrientation==Y_INCREASING_UPWARDS)
return 2.0f*(getY()-getYmin())/(getYmax()-getYmin())-1.0f;
575 else return -(2.0f*(getY()-getYmin())/(getYmax()-getYmin())-1.0f);
584 inline float getXnormalized()
const {
return 2.0f*(getX()-getXmin())/(getXmax()-getXmin())-1.0f; }
592 inline float getYnormalized()
const
594 if (_mouseYOrientation==Y_INCREASING_UPWARDS)
return 2.0f*(getY()-getYmin())/(getYmax()-getYmin())-1.0f;
595 else return -(2.0f*(getY()-getYmin())/(getYmax()-getYmin())-1.0f);
628 _scrolling.motion = SCROLL_2D;
629 _scrolling.deltaX = x;
630 _scrolling.deltaY = y;
686 return (getTouchData()->get(ndx).x-_Xmin)/(_Xmax-_Xmin)*2.0f-1.0f;
690 if (_mouseYOrientation==Y_INCREASING_UPWARDS)
691 return (getTouchData()->get(ndx).y-_Ymin)/(_Ymax-_Ymin)*2.0f-1.0f;
693 return -((getTouchData()->get(ndx).y-_Ymin)/(_Ymax-_Ymin)*2.0f-1.0f);
701 unsigned int getNumPointerData()
const {
return static_cast<unsigned int>(_pointerDataList.size()); }
706 const PointerData*
getPointerData(
osg::Object* obj)
const {
for(
unsigned int i=0;i<_pointerDataList.size(); ++i) {
if (_pointerDataList[i]->
object==obj)
return _pointerDataList[i].get(); }
return 0; }
739 Scrolling() : motion(SCROLL_NONE), deltaX(0), deltaY(0) {}
751 TabletPen() : pressure(0), tiltX(0), tiltY(0), rotation(0), tabletPointerType(UNKNOWN) {}
752 TabletPen(
const TabletPen& rhs) : pressure(rhs.pressure), tiltX(rhs.tiltX), tiltY(rhs.tiltY), rotation(rhs.rotation), tabletPointerType(rhs.tabletPointerType) {}
Definition GUIEventAdapter:386
TouchSet _touches
Definition GUIEventAdapter:439
TouchSet::iterator iterator
Definition GUIEventAdapter:408
unsigned int getNumTouchPoints() const
Definition GUIEventAdapter:421
META_Object(osgGA, TouchData)
iterator begin()
Definition GUIEventAdapter:423
const TouchPoint get(unsigned int i) const
Definition GUIEventAdapter:429
TouchData()
Definition GUIEventAdapter:411
virtual ~TouchData()
Definition GUIEventAdapter:433
std::vector< TouchPoint > TouchSet
Definition GUIEventAdapter:406
TouchSet::const_iterator const_iterator
Definition GUIEventAdapter:409
const_iterator begin() const
Definition GUIEventAdapter:424
void addTouchPoint(unsigned int id, TouchPhase phase, float x, float y, unsigned int tap_count)
Definition GUIEventAdapter:435
TouchData(const TouchData &td, const osg::CopyOp ©op)
Definition GUIEventAdapter:413
iterator end()
Definition GUIEventAdapter:426
const_iterator end() const
Definition GUIEventAdapter:427
Definition GUIEventAdapter:82
void setXmax(float v)
Definition GUIEventAdapter:534
unsigned int getNumPointerData() const
Definition GUIEventAdapter:701
int getButton() const
Definition GUIEventAdapter:521
std::vector< osg::ref_ptr< PointerData > > PointerDataList
Definition GUIEventAdapter:696
void setWindowRectangle(int x, int y, int width, int height, bool updateMouseRange=true)
TouchData * getTouchData() const
Definition GUIEventAdapter:682
void setKey(int key)
Definition GUIEventAdapter:506
const osg::Matrix getPenOrientation() const
set the orientation from a tablet input device as a matrix.
float _Ymax
Definition GUIEventAdapter:727
int _windowY
Definition GUIEventAdapter:720
int _windowWidth
Definition GUIEventAdapter:721
void setButton(int button)
Definition GUIEventAdapter:518
int _buttonMask
Definition GUIEventAdapter:730
float getXmin() const
Definition GUIEventAdapter:531
MouseButtonMask
Definition GUIEventAdapter:85
int getWindowX() const
Definition GUIEventAdapter:484
const osg::GraphicsContext * getGraphicsContext() const
Definition GUIEventAdapter:474
int _windowHeight
Definition GUIEventAdapter:722
osg::ref_ptr< TouchData > _touchData
Definition GUIEventAdapter:756
float getScrollingDeltaX() const
get the scrolling x-delta.
Definition GUIEventAdapter:637
PointerData * getPointerData(unsigned int i)
Definition GUIEventAdapter:702
virtual GUIEventAdapter * asGUIEventAdapter()
Definition GUIEventAdapter:452
EventType _eventType
Definition GUIEventAdapter:716
bool isMultiTouchEvent() const
Definition GUIEventAdapter:683
void setWindowHeight(int v)
Definition GUIEventAdapter:499
float getYmin() const
Definition GUIEventAdapter:543
float getPenRotation() const
get the tablet pen rotation around the Z-axis in degrees.
Definition GUIEventAdapter:668
void setUnmodifiedKey(int key)
Definition GUIEventAdapter:512
int getWindowY() const
Definition GUIEventAdapter:490
void setWindowX(int v)
Definition GUIEventAdapter:481
float getPenTiltY() const
get the tablet pen tiltY in degrees.
Definition GUIEventAdapter:662
void setScrollingMotion(ScrollingMotion motion)
set scrolling motion (for EventType::SCROLL).
Definition GUIEventAdapter:621
MouseYOrientation _mouseYOrientation
Definition GUIEventAdapter:732
int getModKeyMask() const
get modifier key mask.
Definition GUIEventAdapter:618
void setGraphicsContext(osg::GraphicsContext *context)
Definition GUIEventAdapter:472
void setTabletPointerType(TabletPointerType pt)
set the tablet pointer type.
Definition GUIEventAdapter:671
EventType
Definition GUIEventAdapter:91
const PointerDataList & getPointerDataList() const
Definition GUIEventAdapter:699
int getWindowHeight() const
Definition GUIEventAdapter:502
void setEventType(EventType Type)
Definition GUIEventAdapter:463
float _mx
Definition GUIEventAdapter:728
float getPenPressure() const
get the tablet pen pressure (range 0..1).
Definition GUIEventAdapter:650
int getWindowWidth() const
Definition GUIEventAdapter:496
float _Xmax
Definition GUIEventAdapter:726
void setWindowWidth(int v)
Definition GUIEventAdapter:493
MouseYOrientation getMouseYOrientation() const
get mouse-Y orientation (mouse-Y increases upwards or downwards).
Definition GUIEventAdapter:603
static osg::ref_ptr< GUIEventAdapter > & getAccumulatedEventState()
void setPenRotation(float rotation)
set the tablet pen rotation around the Z-axis in degrees.
Definition GUIEventAdapter:665
virtual const GUIEventAdapter * asGUIEventAdapter() const
Definition GUIEventAdapter:453
TabletPointerType getTabletPointerType() const
get the tablet pointer type.
Definition GUIEventAdapter:674
int getButtonMask() const
get current mouse button state.
Definition GUIEventAdapter:612
ScrollingMotion
Definition GUIEventAdapter:360
@ SCROLL_DOWN
Definition GUIEventAdapter:365
@ SCROLL_LEFT
Definition GUIEventAdapter:362
@ SCROLL_NONE
Definition GUIEventAdapter:361
@ SCROLL_RIGHT
Definition GUIEventAdapter:363
@ SCROLL_UP
Definition GUIEventAdapter:364
float getX() const
Definition GUIEventAdapter:555
PointerDataList _pointerDataList
Definition GUIEventAdapter:759
int getUnmodifiedKey() const
Definition GUIEventAdapter:515
TabletPen _tabletPen
Definition GUIEventAdapter:754
void setXmin(float v)
Definition GUIEventAdapter:528
int _key
Definition GUIEventAdapter:723
virtual EventType getEventType() const
Definition GUIEventAdapter:466
void setYmax(float v)
Definition GUIEventAdapter:546
void setPenTiltX(float tiltX)
set the tablet pen tiltX in degrees.
Definition GUIEventAdapter:653
MouseYOrientation
Definition GUIEventAdapter:354
@ Y_INCREASING_UPWARDS
Definition GUIEventAdapter:355
void setWindowY(int v)
Definition GUIEventAdapter:487
ModKeyMask
Definition GUIEventAdapter:330
ScrollingMotion getScrollingMotion() const
get scrolling motion (for EventType::SCROLL).
Definition GUIEventAdapter:624
float _my
Definition GUIEventAdapter:729
void copyPointerDataFrom(const osgGA::GUIEventAdapter &sourceEvent)
const PointerData * getPointerData(unsigned int i) const
Definition GUIEventAdapter:703
float getPenTiltX() const
get the tablet pen tiltX in degrees.
Definition GUIEventAdapter:656
void setModKeyMask(int mask)
set modifier key mask.
Definition GUIEventAdapter:615
const PointerData * getPointerData(osg::Object *obj) const
Definition GUIEventAdapter:706
float getXnormalized() const
Definition GUIEventAdapter:564
float getXmax() const
Definition GUIEventAdapter:537
PointerData * getPointerData(osg::Object *obj)
Definition GUIEventAdapter:705
int _unmodifiedKey
Definition GUIEventAdapter:724
osg::GraphicsContext * getGraphicsContext()
Definition GUIEventAdapter:473
virtual int getKey() const
Definition GUIEventAdapter:509
float getScrollingDeltaY() const
get the scrolling y-delta.
Definition GUIEventAdapter:643
void setPenTiltY(float tiltY)
set the tablet pen tiltY in degrees.
Definition GUIEventAdapter:659
float getY() const
Definition GUIEventAdapter:561
void setScrollingMotionDelta(float x, float y)
set the scrolling delta to x,y and the scrolling motion to SCROLL_2D.
Definition GUIEventAdapter:627
void setPenPressure(float pressure)
set the tablet pen pressure (range 0..1).
Definition GUIEventAdapter:647
void setPointerDataList(const PointerDataList &pdl)
Definition GUIEventAdapter:697
float getTouchPointNormalizedY(unsigned int ndx) const
Definition GUIEventAdapter:689
KeySymbol
Definition GUIEventAdapter:113
void setTouchData(TouchData *td)
Definition GUIEventAdapter:681
void setY(float y)
Definition GUIEventAdapter:558
void setScrollingDeltaX(float v)
set the scrolling x-delta.
Definition GUIEventAdapter:634
void setInputRange(float Xmin, float Ymin, float Xmax, float Ymax)
Scrolling _scrolling
Definition GUIEventAdapter:742
PointerDataList & getPointerDataList()
Definition GUIEventAdapter:698
TouchPhase
Definition GUIEventAdapter:378
@ TOUCH_STATIONERY
Definition GUIEventAdapter:382
@ TOUCH_BEGAN
Definition GUIEventAdapter:380
@ TOUCH_UNKNOWN
Definition GUIEventAdapter:379
@ TOUCH_MOVED
Definition GUIEventAdapter:381
void setScrollingDeltaY(float v)
set the scrolling y-delta.
Definition GUIEventAdapter:640
float getYmax() const
Definition GUIEventAdapter:549
TabletPointerType
Definition GUIEventAdapter:370
@ PEN
Definition GUIEventAdapter:372
@ PUCK
Definition GUIEventAdapter:373
META_Object(osgGA, GUIEventAdapter)
int _windowX
Definition GUIEventAdapter:719
void addTouchPoint(unsigned int id, TouchPhase phase, float x, float y, unsigned int tapCount=0)
virtual ~GUIEventAdapter()
float getTouchPointNormalizedX(unsigned int ndx) const
Definition GUIEventAdapter:685
void addPointerData(PointerData *pd)
Definition GUIEventAdapter:707
float getYnormalized() const
Definition GUIEventAdapter:571
osg::observer_ptr< osg::GraphicsContext > _context
Definition GUIEventAdapter:718
GUIEventAdapter(const GUIEventAdapter &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
void setMouseYOrientationAndUpdateCoords(MouseYOrientation myo)
set mouse-Y orientation (mouse-Y increases upwards or downwards) and recompute variables
void setButtonMask(int mask)
set current mouse button state.
Definition GUIEventAdapter:609
int _button
Definition GUIEventAdapter:725
void setMouseYOrientation(MouseYOrientation myo)
set mouse-Y orientation (mouse-Y increases upwards or downwards).
Definition GUIEventAdapter:600
void setX(float x)
Definition GUIEventAdapter:552
int _modKeyMask
Definition GUIEventAdapter:731
double time() const
Definition GUIEventAdapter:469
void setYmin(float v)
Definition GUIEventAdapter:540
@ SHALLOW_COPY
Definition CopyOp:47
Definition GraphicsContext:30
Definition observer_ptr:39
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
#define OSGGA_EXPORT
Definition osgGA/Export:40
Definition GUIEventAdapter:744
TabletPen(const TabletPen &rhs)
Definition GUIEventAdapter:752
TabletPen()
Definition GUIEventAdapter:751
float pressure
Definition GUIEventAdapter:745
float tiltY
Definition GUIEventAdapter:747
float tiltX
Definition GUIEventAdapter:746
float rotation
Definition GUIEventAdapter:748
TabletPointerType tabletPointerType
Definition GUIEventAdapter:749
Definition GUIEventAdapter:389
TouchPoint(unsigned int in_id, TouchPhase in_phase, float in_x, float in_y, unsigned int in_tap_count)
Definition GUIEventAdapter:396
TouchPoint()
Definition GUIEventAdapter:395
float x
Definition GUIEventAdapter:392
unsigned int id
Definition GUIEventAdapter:390
unsigned int tapCount
Definition GUIEventAdapter:394
TouchPhase phase
Definition GUIEventAdapter:391
Definition GUIEventAdapter:26
PointerData(osg::Object *obj, float in_x, float in_xMin, float in_xMax, float in_y, float in_yMin, float in_yMax)
Definition GUIEventAdapter:36
float xMax
Definition GUIEventAdapter:71
float xMin
Definition GUIEventAdapter:71
osg::observer_ptr< osg::Object > object
Definition GUIEventAdapter:70
float getYnormalized() const
Definition GUIEventAdapter:75
PointerData(const PointerData &pd)
Definition GUIEventAdapter:45
float getXnormalized() const
Definition GUIEventAdapter:74
float yMin
Definition GUIEventAdapter:72
float x
Definition GUIEventAdapter:71
float yMax
Definition GUIEventAdapter:72
PointerData()
Definition GUIEventAdapter:27
float y
Definition GUIEventAdapter:72
PointerData & operator=(const PointerData &pd)
Definition GUIEventAdapter:55