1 ///@file 2 /// Mouse event 3 // 4 // Copyright (C) 2012 Thomas Geymayer <tomgey@gmail.com> 5 // 6 // This library is free software; you can redistribute it and/or 7 // modify it under the terms of the GNU Library General Public 8 // License as published by the Free Software Foundation; either 9 // version 2 of the License, or (at your option) any later version. 10 // 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 // Library General Public License for more details. 15 // 16 // You should have received a copy of the GNU Library General Public 17 // License along with this library; if not, write to the Free Software 18 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 20 #ifndef CANVAS_MOUSE_EVENT_HXX_ 21 #define CANVAS_MOUSE_EVENT_HXX_ 22 23 #include "DeviceEvent.hxx" 24 25 namespace simgear 26 { 27 namespace canvas 28 { 29 30 /** 31 * Mouse (button/move/wheel) event 32 */ 33 class MouseEvent: 34 public DeviceEvent 35 { 36 public: 37 MouseEvent(); 38 MouseEvent(const osgGA::GUIEventAdapter& ea); 39 MouseEvent* clone(int type = 0) const override; 40 41 bool canBubble() const override; 42 getScreenPos() const43 osg::Vec2f getScreenPos() const { return screen_pos; } getClientPos() const44 osg::Vec2f getClientPos() const { return client_pos; } getLocalPos() const45 osg::Vec2f getLocalPos() const { return local_pos; } getDelta() const46 osg::Vec2f getDelta() const { return delta; } 47 getScreenX() const48 float getScreenX() const { return screen_pos.x(); } getScreenY() const49 float getScreenY() const { return screen_pos.y(); } 50 getClientX() const51 float getClientX() const { return client_pos.x(); } getClientY() const52 float getClientY() const { return client_pos.y(); } 53 getLocalX() const54 float getLocalX() const { return local_pos.x(); } getLocalY() const55 float getLocalY() const { return local_pos.y(); } 56 getDeltaX() const57 float getDeltaX() const { return delta.x(); } getDeltaY() const58 float getDeltaY() const { return delta.y(); } 59 getButton() const60 int getButton() const { return button; } getButtonMask() const61 int getButtonMask() const { return buttons; } 62 getCurrentClickCount() const63 int getCurrentClickCount() const { return click_count; } 64 65 osg::Vec2f screen_pos, //!< Position in screen coordinates 66 client_pos, //!< Position in window/canvas coordinates 67 local_pos, //!< Position in local/element coordinates 68 delta; 69 int button, //!< Button for this event 70 buttons, //!< Current button state 71 click_count; //!< Current click count 72 }; 73 74 } // namespace canvas 75 } // namespace simgear 76 77 #endif /* CANVAS_MOUSE_EVENT_HXX_ */ 78