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
00027
00028
00029
00030 #ifndef _CEGUIMouseCursor_h_
00031 #define _CEGUIMouseCursor_h_
00032
00033 #include "CEGUIBase.h"
00034 #include "CEGUIString.h"
00035 #include "CEGUISingleton.h"
00036 #include "CEGUIVector.h"
00037 #include "CEGUIRect.h"
00038 #include "CEGUIEventSet.h"
00039 #include "CEGUIInputEvent.h"
00040 #include "CEGUIUDim.h"
00041
00042
00043 #if defined(_MSC_VER)
00044 # pragma warning(push)
00045 # pragma warning(disable : 4275)
00046 # pragma warning(disable : 4251)
00047 #endif
00048
00049
00050
00051 namespace CEGUI
00052 {
00057 enum MouseCursorImage
00058 {
00059 BlankMouseCursor = 0,
00060 DefaultMouseCursor = -1
00061 };
00062
00063
00070 class CEGUIEXPORT MouseCursor : public EventSet, public Singleton<MouseCursor>
00071 {
00072 public:
00073 static const String EventNamespace;
00074
00075
00076
00077
00078
00079 static const String EventImageChanged;
00080
00081
00086 MouseCursor(void);
00087
00088
00093 ~MouseCursor(void);
00094
00095
00103 static MouseCursor& getSingleton(void);
00104
00105
00113 static MouseCursor* getSingletonPtr(void);
00114
00115
00131 void setImage(const String& imageset, const String& image_name);
00132
00133
00138 void setImage(const Image* image);
00139
00140
00147 const Image* getImage(void) const {return d_cursorImage;}
00148
00149
00157 void draw(void) const;
00158
00159
00167 void setPosition(const Point& position);
00168
00169
00180 void offsetPosition(const Point& offset);
00181
00182
00195 void setConstraintArea(const Rect* area);
00196
00197
00210 void setUnifiedConstraintArea(const URect* area);
00211
00212
00220 void hide(void) {d_visible = false;}
00221
00222
00230 void show(void) {d_visible = true;}
00231
00232
00243 void setVisible(bool visible) {d_visible = visible;}
00244
00245
00253 bool isVisible(void) const {return d_visible;}
00254
00255
00263 Point getPosition(void) const
00264 { return d_position; }
00265
00266
00274 Rect getConstraintArea(void) const;
00275
00276
00284 const URect& getUnifiedConstraintArea(void) const;
00285
00286
00296 Point getDisplayIndependantPosition(void) const;
00297
00309 void notifyDisplaySizeChanged(const Size& new_size);
00310
00311 protected:
00312
00313
00314
00319 virtual void onImageChanged(MouseCursorEventArgs& e);
00320
00321
00322 private:
00323
00324
00325
00330 void constrainPosition(void);
00331
00332
00333
00334
00335 const Image* d_cursorImage;
00336 Vector2 d_position;
00337 bool d_visible;
00338 URect d_constraints;
00339
00340 GeometryBuffer* d_geometry;
00341 };
00342
00343 }
00344
00345 #if defined(_MSC_VER)
00346 # pragma warning(pop)
00347 #endif
00348
00349 #endif // end of guard _CEGUIMouseCursor_h_