#ifndef CANVAS_MOUSE_EVENT_HXX_
#define CANVAS_MOUSE_EVENT_HXX_
+#include "CanvasEvent.hxx"
#include <osgGA/GUIEventAdapter>
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