Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CS_CANVAS_WIN32CANVASCOMMON_CUSTOMCURSOR_H__
00021 #define __CS_CANVAS_WIN32CANVASCOMMON_CUSTOMCURSOR_H__
00022
00027 #include "csextern_win.h"
00028 #include "csutil/csstring.h"
00029 #include "csutil/hash.h"
00030 #include "csutil/refcount.h"
00031 #include "csutil/weakkeyedhash.h"
00032 #include "csutil/weakref.h"
00033 #include "csgfx/rgbpixel.h"
00034
00041 class CS_CSPLUGINCOMMON_WIN_EXPORT csWin32CustomCursors
00042 {
00043 struct CachedCursor : public CS::Utility::FastRefCount<CachedCursor>
00044 {
00045 HCURSOR cursor;
00046 bool destroyAsIcon;
00047
00048 CachedCursor ()
00049 {
00050 cursor = 0;
00051 destroyAsIcon = false;
00052 }
00053 CachedCursor (HCURSOR h, bool b) : cursor (h), destroyAsIcon (b) {}
00054 ~CachedCursor();
00055 };
00056 CS::Container::WeakKeyedHash<csRef<CachedCursor>, csWeakRef<iImage> > cachedCursors;
00057
00058 csPtr<CachedCursor> CreateMonoCursor (iImage* image, const csRGBcolor* keycolor,
00059 int hotspot_x, int hotspot_y);
00060 public:
00061 ~csWin32CustomCursors ();
00062
00063 HCURSOR GetMouseCursor (iImage* image, const csRGBcolor* keycolor,
00064 int hotspot_x, int hotspot_y, csRGBcolor fg, csRGBcolor bg);
00065 private:
00066
00067 csPtr<CachedCursor> CreateCursor (iImage* image, const csRGBcolor* keycolor,
00068 int hotspot_x, int hotspot_y);
00069 };
00070
00073 #endif // __CS_CANVAS_WIN32CANVASCOMMON_CUSTOMCURSOR_H__
00074