/*! * @file proto_singleton.h * @brief Definition of the GLGuiHandler singleton Class */ #ifndef _GLGUI_HANDLER_H #define _GLGUI_HANDLER_H #include "event_listener.h" #include "glgui_widget.h" namespace OrxGui { // FORWARD DECLARATION class GLGuiCursor; //! A singleton class for the GLGui-Handler class GLGuiHandler : public EventListener { ObjectListDeclaration(GLGuiHandler); public: /** @returns a Pointer to the only object of this Class */ inline static GLGuiHandler* getInstance(void) { if (!GLGuiHandler::singletonRef) GLGuiHandler::singletonRef = new GLGuiHandler(); return GLGuiHandler::singletonRef; }; /** @brief deletes the instance if it exists */ inline static void deleteInstance() { if (GLGuiHandler::singletonRef) delete GLGuiHandler::singletonRef; }; void activateCursor(); void deactivateCursor(/** ignore param */ bool deleteCursor = true); GLGuiCursor* cursor() const { return this->_cursor; } const Vector2D& cursorPositionOverFocusedWidget() const; const Vector2D& cursorPositionAbs() const; Vector2D cursorPositionRel(const GLGuiWidget* const widget) const; const Vector2D& resolution(); void selectNext(); void selectPrevious(); void activate(); void deactivate(); void checkFocus(); virtual void process(const Event &event); void draw(); void tick(float dt); private: GLGuiHandler(void); virtual ~GLGuiHandler(void); static GLGuiHandler* singletonRef; bool isActive; GLGuiCursor* _cursor; Vector2D _resolution; }; } #endif /* _GLGUI_HANDLER_H */