X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=lib%2Fgui%2Fmousecursor.h;h=c6b19f39b5ab0a2490815f36a26c731d83379257;hb=4b476ec30e7dd62249328054402d6493c20a685d;hp=8ff45e6406d29162da7fd827464dec298a9477bd;hpb=9c511ea692d3a2339597211f08f18ea74fad35ec;p=supertux.git diff --git a/lib/gui/mousecursor.h b/lib/gui/mousecursor.h index 8ff45e640..c6b19f39b 100644 --- a/lib/gui/mousecursor.h +++ b/lib/gui/mousecursor.h @@ -22,40 +22,65 @@ #include -#include "special/timer.h" -#include "video/surface.h" - -#define MC_FRAME_PERIOD 800 // in ms - -#define MC_STATES_NB 3 -enum { - MC_NORMAL, - MC_CLICK, - MC_LINK, - MC_HIDE -}; - -class MouseCursor -{ -public: - MouseCursor(std::string cursor_file, int frames); - ~MouseCursor(); - int state(); - void set_state(int nstate); - void set_mid(int x, int y); - void draw(DrawingContext& context); - - static MouseCursor* current() { return current_; }; - static void set_current(MouseCursor* pcursor) { current_ = pcursor; }; - -private: - int mid_x, mid_y; - static MouseCursor* current_; - int state_before_click; - int cur_state; - int cur_frame, tot_frames; - Surface* cursor; - Timer timer; -}; +#include "../special/timer.h" +#include "../video/surface.h" + +namespace SuperTux + { + + #define MC_FRAME_PERIOD 800 // in ms + + #define MC_STATES_NB 3 + + enum { + MC_NORMAL, + MC_CLICK, + MC_LINK, + MC_HIDE + }; + + /// Mouse cursor. + /** Used to create mouse cursors. + The mouse cursors can be animated + and can be used in four different states. + (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */ + class MouseCursor + { + public: + /// Constructor of MouseCursor. + /** Expects an imagefile for the cursor and the number of animation frames it contains. */ + MouseCursor(std::string cursor_file, int frames); + ~MouseCursor(); + /// Get MouseCursor state. + /** (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */ + int state(); + /// Set MouseCursor state. + /** (MC_NORMAL, MC_CLICK, MC_LINK or MC_HIDE) */ + void set_state(int nstate); + /// Define the middle of a MouseCursor. + /** Useful for cross mouse cursor images in example. */ + void set_mid(int x, int y); + + /// Draw MouseCursor on screen. + void draw(DrawingContext& context); + + /// Return the current cursor. + static MouseCursor* current() + { return current_; }; + /// Set current cursor. + static void set_current(MouseCursor* pcursor) + { current_ = pcursor; }; + + private: + int mid_x, mid_y; + static MouseCursor* current_; + int state_before_click; + int cur_state; + int cur_frame, tot_frames; + Surface* cursor; + Timer timer; + }; + +} // namespace SuperTux #endif /*SUPERTUX_MOUSECURSOR_H*/