]> git.mxchange.org Git - simgear.git/blobdiff - simgear/canvas/MouseEvent.hxx
Canvas::Text: add line-height property.
[simgear.git] / simgear / canvas / MouseEvent.hxx
index 2e6a26dd6173bcc5ef912ae7aba2e32965aeb020..f6faee76d8de3498d2d9694d9097143fdfe2ad1e 100644 (file)
@@ -19,6 +19,7 @@
 #ifndef CANVAS_MOUSE_EVENT_HXX_
 #define CANVAS_MOUSE_EVENT_HXX_
 
+#include "CanvasEvent.hxx"
 #include <osgGA/GUIEventAdapter>
 
 namespace simgear
@@ -26,32 +27,53 @@ namespace simgear
 namespace canvas
 {
 
-  class MouseEvent
+  class MouseEvent:
+    public Event
   {
     public:
-      typedef osgGA::GUIEventAdapter::EventType EventType;
-      typedef osgGA::GUIEventAdapter::ScrollingMotion Scroll;
-
-      MouseEvent(EventType type):
-        type(type),
-        x(-1), y(-1),
-        dx(0), dy(0),
+      MouseEvent():
         button(-1),
         state(-1),
         mod(-1),
-        scroll(osgGA::GUIEventAdapter::SCROLL_NONE)
+        click_count(0)
       {}
 
-      osg::Vec2f getPos() const { return osg::Vec2f(x, y); }
-      osg::Vec3f getPos3() const { return osg::Vec3f(x, y, 0); }
+      MouseEvent(const osgGA::GUIEventAdapter& ea):
+        button(ea.getButton()),
+        state(ea.getButtonMask()),
+        mod(ea.getModKeyMask()),
+        click_count(0)
+      {
+        time = ea.getTime();
+      }
+
+      osg::Vec2f getScreenPos() const { return screen_pos; }
+      osg::Vec2f getClientPos() const { return client_pos; }
+      osg::Vec2f getLocalPos()  const { return  local_pos; }
+      osg::Vec2f getDelta() const { return delta; }
+
+      float getScreenX() const { return screen_pos.x(); }
+      float getScreenY() const { return screen_pos.y(); }
+
+      float getClientX() const { return client_pos.x(); }
+      float getClientY() const { return client_pos.y(); }
+
+      float getLocalX() const { return local_pos.x(); }
+      float getLocalY() const { return local_pos.y(); }
+
+      float getDeltaX() const { return delta.x(); }
+      float getDeltaY() const { return delta.y(); }
+
+      int getCurrentClickCount() const { return click_count; }
 
-      EventType   type;
-      float       x, y,
-                  dx, dy;
-      int         button, //<! Button for this event
-                  state,  //<! Current button state
-                  mod;    //<! Keyboard modifier state
-      Scroll      scroll;
+      osg::Vec2f  screen_pos,   //<! Position in screen coordinates
+                  client_pos,   //<! Position in window/canvas coordinates
+                  local_pos,    //<! Position in local/element coordinates
+                  delta;
+      int         button,       //<! Button for this event
+                  state,        //<! Current button state
+                  mod,          //<! Keyboard modifier state
+                  click_count;  //<! Current click count
   };
 
 } // namespace canvas