#ifndef OSGUTIL_GUIEVENTADAPTER #define OSGUTIL_GUIEVENTADAPTER 1 #include #include namespace osgUtil{ /** Pure virtual base class for adapting platform specfic events into generic keyboard and mouse events. */ class GUIEventAdapter : public osg::Referenced { public: GUIEventAdapter() {} enum MouseButtonMask { LEFT_BUTTON=1, MIDDLE_BUTTON=2, RIGHT_BUTTON=4 }; enum EventType { PUSH, RELEASE, DRAG, MOVE, KEYBOARD, FRAME, RESIZE, NONE }; /** Get the EventType of the GUI event.*/ virtual EventType getEventType() const = 0; /** key pressed, return -1 if inapropriate for this event. */ virtual int getKey() const = 0; /** button pressed/released, return -1 if inappropriate for this event.*/ virtual int getButton() const = 0; /** window minimum x. */ virtual int getXmin() const = 0; /** window maximum x. */ virtual int getXmax() const = 0; /** window minimum y. */ virtual int getYmin() const = 0; /** window maximum y. */ virtual int getYmax() const = 0; /** current mouse x position.*/ virtual int getX() const = 0; /** current mouse y position.*/ virtual int getY() const = 0; /** current mouse button state */ virtual unsigned int getButtonMask() const = 0; /** time in seconds of event. */ virtual float time() const = 0; protected: /** Force users to create on heap, so that mulitple referencing is safe.*/ virtual ~GUIEventAdapter() {} }; } #endif