cursor.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIFE_CURSOR_H
00023 #define FIFE_CURSOR_H
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 struct SDL_Cursor;
00035
00036 namespace FIFE {
00037
00038 class ImagePool;
00039 class AnimationPool;
00040 class RenderBackend;
00041 class TimeManager;
00042
00048 enum MouseCursorType {
00049 CURSOR_NONE,
00050 CURSOR_NATIVE,
00051 CURSOR_IMAGE,
00052 CURSOR_ANIMATION
00053 };
00054
00060 enum NativeCursor {
00061
00062 NC_ARROW = 1000000,
00063 NC_IBEAM,
00064 NC_WAIT,
00065 NC_CROSS,
00066 NC_UPARROW,
00067 NC_RESIZENW,
00068 NC_RESIZESE,
00069 NC_RESIZESW,
00070 NC_RESIZENE,
00071 NC_RESIZEE,
00072 NC_RESIZEW,
00073 NC_RESIZEN,
00074 NC_RESIZES,
00075 NC_RESIZEALL,
00076 NC_NO,
00077 NC_HAND,
00078 NC_APPSTARTING,
00079 NC_HELP
00080 };
00081
00084 class Cursor {
00085 public:
00088 Cursor(ImagePool* imgpool, AnimationPool* animpool, RenderBackend* renderbackend);
00089
00092 virtual ~Cursor() {}
00093
00096 virtual void draw();
00097
00102 void set(MouseCursorType ctype, unsigned int cursor_id=0);
00103
00109 void setDrag(MouseCursorType ctype, unsigned int drag_id=0, int drag_offset_x=0, int drag_offset_y=0);
00110
00113 MouseCursorType getType() const { return m_cursor_type; }
00114
00117 unsigned int getId() const { return m_cursor_id; }
00118
00121 MouseCursorType getDragType() const { return m_drag_type; }
00122
00125 unsigned int getDragId() const { return m_drag_id; }
00126
00129 unsigned int getX() const {return m_mx;}
00130
00133 unsigned int getY() const {return m_my;}
00134
00135 protected:
00139 void setNativeCursor(unsigned int cursor_id);
00140
00148 unsigned int getNativeId(unsigned int cursor_id);
00149
00150 private:
00151 unsigned int m_cursor_id;
00152 unsigned int m_drag_id;
00153 MouseCursorType m_cursor_type;
00154 MouseCursorType m_drag_type;
00155
00156 SDL_Cursor* m_native_cursor;
00157
00158 RenderBackend* m_renderbackend;
00159 ImagePool* m_imgpool;
00160 AnimationPool* m_animpool;
00161
00162 unsigned int m_animtime;
00163 unsigned int m_drag_animtime;
00164
00165 int m_drag_offset_x;
00166 int m_drag_offset_y;
00167 int m_mx;
00168 int m_my;
00169 TimeManager* m_timemanager;
00170 };
00171
00172 }
00173
00174 #endif