//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield //Distributed under the terms of the GNU Library General Public License (LGPL) //as published by the Free Software Foundation. #ifndef OSGGA_GUIEVENTADAPTER #define OSGGA_GUIEVENTADAPTER 1 #include #include namespace osgGA{ /** Pure virtual base class for adapting platform specific events into generic keyboard and mouse events. Used as GUI toolkit-independent input into GUIEventAdapters. Viewer writers should subclass this base class to implement the functionality to translate one of their GUI events, e.g. a Qt Event or an MFC Event, as appropriate. */ class OSGGA_EXPORT GUIEventAdapter : public osg::Referenced { public: enum MouseButtonMask { LEFT_MOUSE_BUTTON=1, MIDDLE_MOUSE_BUTTON=2, RIGHT_MOUSE_BUTTON=4 }; enum EventType { PUSH, RELEASE, DRAG, MOVE, KEYDOWN, KEYUP, FRAME, RESIZE, NONE }; enum ModKeyMask { MODKEY_LEFT_SHIFT = 0x0001, MODKEY_RIGHT_SHIFT = 0x0002, MODKEY_LEFT_CTRL = 0x0040, MODKEY_RIGHT_CTRL = 0x0080, MODKEY_LEFT_ALT = 0x0100, MODKEY_RIGHT_ALT = 0x0200, MODKEY_LEFT_META = 0x0400, MODKEY_RIGHT_META = 0x0800, MODKEY_NUM_LOCK = 0x1000, MODKEY_CAPS_LOCK = 0x2000, MODKEY_CTRL = (MODKEY_LEFT_CTRL|MODKEY_RIGHT_CTRL), MODKEY_SHIFT = (MODKEY_LEFT_SHIFT|MODKEY_RIGHT_SHIFT), MODKEY_ALT = (MODKEY_LEFT_ALT|MODKEY_RIGHT_ALT), MODKEY_META = (MODKEY_LEFT_META|MODKEY_RIGHT_META) }; /** Get the EventType of the GUI event.*/ virtual EventType getEventType() const = 0; /** key pressed, return -1 if inappr opriate 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; /** current modkey state */ virtual unsigned int getModKeyMask() const = 0; /** time in seconds of event. */ virtual double time() const = 0; protected: GUIEventAdapter() {} /** Force users to create on heap, so that multiple referencing is safe.*/ virtual ~GUIEventAdapter() {} }; } #endif