#ifndef __ENGINE_H__ #define __ENGINE_H__ #include #include #include #include #include #include namespace mogltk { class engine : public Base { public: class keyevent : public Base { public: keyevent(); virtual ~keyevent(); virtual void down(SDL_keysym) = 0; virtual void up(SDL_keysym) = 0; protected: keyevent * old_handler, * new_handler; }; class mouseevent : public Base { public: mouseevent(); virtual ~mouseevent(); virtual void move(SDL_MouseMotionEvent) = 0; virtual void action(SDL_MouseButtonEvent) = 0; protected: mouseevent * old_handler, * new_handler; }; static int setup() throw(GeneralException); static int postsetup() throw(GeneralException); static int GetInited(); static SDL_RWops * RWFromHandle(Handle *) throw (GeneralException); static void pollevents() throw (GeneralException); static void setappactive(bool); static bool getappactive(); static void setcursorvisible(bool); static bool getcursorvisible(); static void quit(); static bool quitrequested(); static int mouseX(); static int mouseY(); static int mouseZ(); static void setmouseX(int); static void setmouseY(int); static void setmouseZ(int); static int mousebuttons(); static double FPS(); static void lockmouse(); static void unlockmouse(); static void setkeyevent(keyevent *); static void setmouseevent(mouseevent *); static keyevent * getkeyevent(); static mouseevent * getmouseevent(); static glbase * glbase_o; static base * base_o; static widget * root; private: static bool inited; static bool postsetuped; static bool appactive; static bool cursorvisible; static bool quitrequest; static int mx; static int my; static int mz; static int mbuttons; static int frames; static double curfps; static Uint32 curticks; static int locked; static keyevent * keyevent_h; static mouseevent * mouseevent_h; static void updatemouse(); }; }; #endif