00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _CEGUIMouseCursor_h_
00027 #define _CEGUIMouseCursor_h_
00028
00029 #include "CEGUIBase.h"
00030 #include "CEGUIString.h"
00031 #include "CEGUISingleton.h"
00032 #include "CEGUIVector.h"
00033 #include "CEGUIRect.h"
00034 #include "CEGUIEventSet.h"
00035 #include "CEGUIInputEvent.h"
00036 #include "CEGUIUDim.h"
00037
00038
00039 #if defined(_MSC_VER)
00040 # pragma warning(push)
00041 # pragma warning(disable : 4275)
00042 # pragma warning(disable : 4251)
00043 #endif
00044
00045
00046
00047 namespace CEGUI
00048 {
00049
00054 enum MouseCursorImage
00055 {
00056 BlankMouseCursor = 0,
00057 DefaultMouseCursor = -1
00058 };
00059
00060
00067 class CEGUIEXPORT MouseCursor : public EventSet, public Singleton<MouseCursor>
00068 {
00069 public:
00070 static const String EventNamespace;
00071
00072
00073
00074
00075
00076 static const String EventImageChanged;
00077
00078
00083 MouseCursor(void);
00084
00085
00090 ~MouseCursor(void);
00091
00092
00100 static MouseCursor& getSingleton(void);
00101
00102
00110 static MouseCursor* getSingletonPtr(void);
00111
00112
00128 void setImage(const String& imageset, const String& image_name);
00129
00130
00135 void setImage(const Image* image);
00136
00137
00144 const Image* getImage(void) const {return d_cursorImage;}
00145
00146
00154 void draw(void) const;
00155
00156
00164 void setPosition(const Point& position);
00165
00166
00177 void offsetPosition(const Point& offset);
00178
00179
00192 void setConstraintArea(const Rect* area);
00193
00194
00207 void setUnifiedConstraintArea(const URect* area);
00208
00209
00217 void hide(void) {d_visible = false;}
00218
00219
00227 void show(void) {d_visible = true;}
00228
00229
00237 bool isVisible(void) const {return d_visible;}
00238
00239
00247 Point getPosition(void) const {return Point(d_position.d_x, d_position.d_y);}
00248
00249
00257 Rect getConstraintArea(void) const;
00258
00259
00267 const URect& getUnifiedConstraintArea(void) const;
00268
00269
00279 Point getDisplayIndependantPosition(void) const;
00280
00281
00282 protected:
00283
00284
00285
00290 virtual void onImageChanged(MouseCursorEventArgs& e);
00291
00292
00293
00294
00295
00300 void addMouseCursorEvents(void);
00301
00302
00303 private:
00304
00305
00306
00311 void constrainPosition(void);
00312
00313
00314
00315
00316
00317 const Image* d_cursorImage;
00318 Vector3 d_position;
00319 bool d_visible;
00320 URect d_constraints;
00321 };
00322
00323 }
00324
00325 #if defined(_MSC_VER)
00326 # pragma warning(pop)
00327 #endif
00328
00329 #endif // end of guard _CEGUIMouseCursor_h_