00001 #ifndef GUI_STATUSBAR_HPP 00002 #define GUI_STATUSBAR_HPP 00003 00004 #include <utils.hpp> 00005 #include "gui_frame.hpp" 00006 #include "gui_color.hpp" 00007 00008 namespace gui 00009 { 00010 class texture; 00011 00013 00020 class status_bar : public frame 00021 { 00022 public : 00023 00024 enum orientation 00025 { 00026 ORIENT_HORIZONTAL, 00027 ORIENT_VERTICAL 00028 }; 00029 00031 explicit status_bar(manager* pManager); 00032 00034 virtual ~status_bar(); 00035 00037 00040 virtual std::string serialize(const std::string& sTab) const; 00041 00043 00046 virtual bool can_use_script(const std::string& sScriptName) const; 00047 00049 00051 virtual void copy_from(uiobject* pObj); 00052 00054 00056 void set_min_value(float fMin); 00057 00059 00061 void set_max_value(float fMax); 00062 00064 00067 void set_min_max_values(float fMin, float fMax); 00068 00070 00072 void set_value(float fValue); 00073 00075 00077 void set_bar_draw_layer(layer_type mBarLayer); 00078 00080 00082 void set_bar_draw_layer(const std::string& sBarLayer); 00083 00085 00087 void set_bar_texture(texture* pBarTexture); 00088 00090 00092 void set_bar_color(const color& mBarColor); 00093 00095 00097 void set_orientation(orientation mOrient); 00098 00100 00106 void set_reversed(bool bReversed); 00107 00109 00111 float get_min_value() const; 00112 00114 00116 float get_max_value() const; 00117 00119 00121 float get_value() const; 00122 00124 00126 layer_type get_bar_draw_layer() const; 00127 00129 00131 texture* get_bar_texture() const; 00132 00134 00136 const color& get_bar_color() const; 00137 00139 00141 orientation get_orientation() const; 00142 00144 00146 bool is_reversed() const; 00147 00149 virtual void create_glue(); 00150 00152 00154 virtual void parse_block(xml::block* pBlock); 00155 00157 virtual void update(float fDelta); 00158 00160 static void register_glue(utils::wptr<lua::state> pLua); 00161 00162 protected : 00163 00164 texture* create_bar_texture_(); 00165 void fire_update_bar_texture_(); 00166 00167 bool bUpdateBarTexture_; 00168 00169 orientation mOrientation_; 00170 bool bReversed_; 00171 00172 float fValue_; 00173 float fMinValue_; 00174 float fMaxValue_; 00175 00176 color mBarColor_; 00177 layer_type mBarLayer_; 00178 texture* pBarTexture_; 00179 std::array<float,4> lInitialTextCoords_; 00180 }; 00181 00185 class lua_status_bar : public lua_frame 00186 { 00187 public : 00188 00189 explicit lua_status_bar(lua_State* pLua); 00190 00191 // Glues 00192 int _get_min_max_values(lua_State*); 00193 int _get_orientation(lua_State*); 00194 int _is_reversed(lua_State*); 00195 int _get_status_bar_color(lua_State*); 00196 int _get_status_bar_texture(lua_State*); 00197 int _get_value(lua_State*); 00198 int _set_min_max_values(lua_State*); 00199 int _set_orientation(lua_State*); 00200 int _set_reversed(lua_State*); 00201 int _set_status_bar_color(lua_State*); 00202 int _set_status_bar_texture(lua_State*); 00203 int _set_value(lua_State*); 00204 00205 static const char className[]; 00206 static const char* classList[]; 00207 static Lunar<lua_status_bar>::RegType methods[]; 00208 00209 protected : 00210 00211 status_bar* pStatusBarParent_; 00212 }; 00213 00216 } 00217 00218 #endif