Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

mousecursor_generic.h

Go to the documentation of this file.
00001 #ifndef header_mousecursor_generic
00002 #define header_mousecursor_generic
00003 
00004 #include "displaycard_generic.h"
00005 #include "API/Core/System/thread.h"
00006 #include "API/Core/System/mutex.h"
00007 #include "API/Display/Display/mousecursor.h"
00008 #include "API/Display/Display/surface.h"
00009 #include "mousecursor_provider_generic.h"
00010 
00011 class CL_MouseCursor_Generic 
00012         : public CL_DisplayCard_Generic::CL_FlipDisplayCallback_Generic
00013         , public CL_Runnable
00014 {
00015 public:
00016         CL_MouseCursor_Generic();
00017         virtual ~CL_MouseCursor_Generic();
00018 
00019         void set_cursor(
00020                 CL_MouseCursorProvider *provider,
00021                 int frame=0);
00022 
00023         void show(bool show_async=true);
00024         void hide();
00025 
00026         // CL_Runnable overrides
00027         virtual void run();
00028 
00029         // CL_DisplayCard_Generic::CL_FlipDisplayCallback_Generic overrides
00030         virtual void pre_flip();
00031         virtual void post_flip();
00032 
00033 private:
00034         friend CL_MouseCursor;
00035 
00036         void invalidate_region();
00037         void save_region(CL_Target *source, const CL_ClipRect &r);
00038         void load_region(CL_Target *dest);
00039         void show_cursor(CL_Target *dest, bool load_saved);
00040 
00041         CL_ClipRect m_rect;
00042         unsigned char *m_buffer;
00043 
00044         bool volatile m_visible;
00045         bool volatile m_async;
00046         int volatile m_last_x;
00047         int volatile m_last_y;
00048         bool m_callback_added;
00049 
00050         CL_MouseCursorProvider *m_provider;
00051         CL_Surface *m_cursor;
00052         unsigned int m_cur_frame;
00053         unsigned int m_frame_timer;
00054 
00055         CL_Thread *m_thread;
00056         CL_Mutex *m_mux;
00057 
00058         static CL_MouseCursor_Generic m_instance;
00059 };
00060 
00061 #endif

Generated at Wed Apr 4 19:54:02 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001