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() { invalidate(); }
00093
00094 void invalidate();
00095
00098 virtual void draw();
00099
00104 void set(MouseCursorType ctype, unsigned int cursor_id=0);
00105
00111 void setDrag(MouseCursorType ctype, unsigned int drag_id=0, int drag_offset_x=0, int drag_offset_y=0);
00112
00115 MouseCursorType getType() const { return m_cursor_type; }
00116
00119 unsigned int getId() const { return m_cursor_id; }
00120
00123 MouseCursorType getDragType() const { return m_drag_type; }
00124
00127 unsigned int getDragId() const { return m_drag_id; }
00128
00131 unsigned int getX() const {return m_mx;}
00132
00135 unsigned int getY() const {return m_my;}
00136
00137 protected:
00141 void setNativeCursor(unsigned int cursor_id);
00142
00150 unsigned int getNativeId(unsigned int cursor_id);
00151
00152 private:
00153 unsigned int m_cursor_id;
00154 unsigned int m_drag_id;
00155 MouseCursorType m_cursor_type;
00156 MouseCursorType m_drag_type;
00157
00158 SDL_Cursor* m_native_cursor;
00159
00160 RenderBackend* m_renderbackend;
00161 ImagePool* m_imgpool;
00162 AnimationPool* m_animpool;
00163
00164 unsigned int m_animtime;
00165 unsigned int m_drag_animtime;
00166
00167 int m_drag_offset_x;
00168 int m_drag_offset_y;
00169 int m_mx;
00170 int m_my;
00171 TimeManager* m_timemanager;
00172
00173 bool m_invalidated;
00174 };
00175
00176 }
00177
00178 #endif