diff options
Diffstat (limited to 'scene/resources/theme.h')
| -rw-r--r-- | scene/resources/theme.h | 171 |
1 files changed, 110 insertions, 61 deletions
diff --git a/scene/resources/theme.h b/scene/resources/theme.h index e9d890cf9..4de6fd78c 100644 --- a/scene/resources/theme.h +++ b/scene/resources/theme.h @@ -29,42 +29,41 @@ #ifndef THEME_H #define THEME_H +#include "io/resource_loader.h" #include "resource.h" #include "scene/resources/font.h" +#include "scene/resources/shader.h" #include "scene/resources/style_box.h" #include "scene/resources/texture.h" -#include "scene/resources/shader.h" -#include "io/resource_loader.h" /** @author Juan Linietsky <reduzio@gmail.com> */ class Theme : public Resource { - GDCLASS( Theme, Resource ); + GDCLASS(Theme, Resource); RES_BASE_EXTENSION("thm"); static Ref<Theme> default_theme; - //keep a reference count to font, so each time the font changes, we emit theme changed too - Map< Ref<Font>, int> font_refcount; + Map<Ref<Font>, int> font_refcount; void _ref_font(Ref<Font> p_sc); - void _unref_font( Ref<Font> p_sc); + void _unref_font(Ref<Font> p_sc); void _emit_theme_changed(); + HashMap<StringName, HashMap<StringName, Ref<Texture>, StringNameHasher>, StringNameHasher> icon_map; + HashMap<StringName, HashMap<StringName, Ref<StyleBox>, StringNameHasher>, StringNameHasher> style_map; + HashMap<StringName, HashMap<StringName, Ref<Font>, StringNameHasher>, StringNameHasher> font_map; + HashMap<StringName, HashMap<StringName, Ref<Shader>, StringNameHasher>, StringNameHasher> shader_map; + HashMap<StringName, HashMap<StringName, Color, StringNameHasher>, StringNameHasher> color_map; + HashMap<StringName, HashMap<StringName, int, StringNameHasher>, StringNameHasher> constant_map; - HashMap<StringName,HashMap<StringName,Ref<Texture>,StringNameHasher >, StringNameHasher > icon_map; - HashMap<StringName,HashMap<StringName,Ref<StyleBox>,StringNameHasher >,StringNameHasher > style_map; - HashMap<StringName,HashMap<StringName,Ref<Font>,StringNameHasher >,StringNameHasher > font_map; - HashMap<StringName,HashMap<StringName,Ref<Shader>,StringNameHasher >, StringNameHasher > shader_map; - HashMap<StringName,HashMap<StringName,Color,StringNameHasher >,StringNameHasher > color_map; - HashMap<StringName,HashMap<StringName,int,StringNameHasher>,StringNameHasher > constant_map; protected: - bool _set(const StringName& p_name, const Variant& p_value); - bool _get(const StringName& p_name,Variant &r_ret) const; - void _get_property_list( List<PropertyInfo> *p_list) const; + bool _set(const StringName &p_name, const Variant &p_value); + bool _get(const StringName &p_name, Variant &r_ret) const; + void _get_property_list(List<PropertyInfo> *p_list) const; static Ref<Texture> default_icon; static Ref<StyleBox> default_style; @@ -72,84 +71,134 @@ protected: Ref<Font> default_theme_font; - PoolVector<String> _get_icon_list(const String& p_type) const { PoolVector<String> ilret; List<StringName> il; get_icon_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } - PoolVector<String> _get_stylebox_list(const String& p_type) const { PoolVector<String> ilret; List<StringName> il; get_stylebox_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } - PoolVector<String> _get_stylebox_types(void) const { PoolVector<String> ilret; List<StringName> il; get_stylebox_types(&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } - PoolVector<String> _get_font_list(const String& p_type) const { PoolVector<String> ilret; List<StringName> il; get_font_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } - PoolVector<String> _get_color_list(const String& p_type) const { PoolVector<String> ilret; List<StringName> il; get_color_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } - PoolVector<String> _get_constant_list(const String& p_type) const { PoolVector<String> ilret; List<StringName> il; get_constant_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } - PoolVector<String> _get_type_list(const String& p_type) const { PoolVector<String> ilret; List<StringName> il; get_type_list(&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } + PoolVector<String> _get_icon_list(const String &p_type) const { + PoolVector<String> ilret; + List<StringName> il; + get_icon_list(p_type, &il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } + PoolVector<String> _get_stylebox_list(const String &p_type) const { + PoolVector<String> ilret; + List<StringName> il; + get_stylebox_list(p_type, &il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } + PoolVector<String> _get_stylebox_types(void) const { + PoolVector<String> ilret; + List<StringName> il; + get_stylebox_types(&il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } + PoolVector<String> _get_font_list(const String &p_type) const { + PoolVector<String> ilret; + List<StringName> il; + get_font_list(p_type, &il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } + PoolVector<String> _get_color_list(const String &p_type) const { + PoolVector<String> ilret; + List<StringName> il; + get_color_list(p_type, &il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } + PoolVector<String> _get_constant_list(const String &p_type) const { + PoolVector<String> ilret; + List<StringName> il; + get_constant_list(p_type, &il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } + PoolVector<String> _get_type_list(const String &p_type) const { + PoolVector<String> ilret; + List<StringName> il; + get_type_list(&il); + for (List<StringName>::Element *E = il.front(); E; E = E->next()) { + ilret.push_back(E->get()); + } + return ilret; + } static void _bind_methods(); -public: +public: static Ref<Theme> get_default(); - static void set_default(const Ref<Theme>& p_default); + static void set_default(const Ref<Theme> &p_default); - static void set_default_icon( const Ref<Texture>& p_icon ); - static void set_default_style( const Ref<StyleBox>& p_default_style); - static void set_default_font( const Ref<Font>& p_default_font ); + static void set_default_icon(const Ref<Texture> &p_icon); + static void set_default_style(const Ref<StyleBox> &p_default_style); + static void set_default_font(const Ref<Font> &p_default_font); - void set_default_theme_font( const Ref<Font>& p_default_font ); + void set_default_theme_font(const Ref<Font> &p_default_font); Ref<Font> get_default_theme_font() const; - void set_icon(const StringName& p_name,const StringName& p_type,const Ref<Texture>& p_icon); - Ref<Texture> get_icon(const StringName& p_name,const StringName& p_type) const; - bool has_icon(const StringName& p_name,const StringName& p_type) const; - void clear_icon(const StringName& p_name,const StringName& p_type); + void set_icon(const StringName &p_name, const StringName &p_type, const Ref<Texture> &p_icon); + Ref<Texture> get_icon(const StringName &p_name, const StringName &p_type) const; + bool has_icon(const StringName &p_name, const StringName &p_type) const; + void clear_icon(const StringName &p_name, const StringName &p_type); void get_icon_list(StringName p_type, List<StringName> *p_list) const; - void set_shader(const StringName& p_name,const StringName& p_type,const Ref<Shader>& p_shader); - Ref<Shader> get_shader(const StringName& p_name,const StringName& p_type) const; - bool has_shader(const StringName& p_name,const StringName& p_type) const; - void clear_shader(const StringName& p_name,const StringName& p_type); - void get_shader_list(const StringName& p_name, List<StringName> *p_list) const; + void set_shader(const StringName &p_name, const StringName &p_type, const Ref<Shader> &p_shader); + Ref<Shader> get_shader(const StringName &p_name, const StringName &p_type) const; + bool has_shader(const StringName &p_name, const StringName &p_type) const; + void clear_shader(const StringName &p_name, const StringName &p_type); + void get_shader_list(const StringName &p_name, List<StringName> *p_list) const; - void set_stylebox(const StringName& p_name,const StringName& p_type,const Ref<StyleBox>& p_style); - Ref<StyleBox> get_stylebox(const StringName& p_name,const StringName& p_type) const; - bool has_stylebox(const StringName& p_name,const StringName& p_type) const; - void clear_stylebox(const StringName& p_name,const StringName& p_type); + void set_stylebox(const StringName &p_name, const StringName &p_type, const Ref<StyleBox> &p_style); + Ref<StyleBox> get_stylebox(const StringName &p_name, const StringName &p_type) const; + bool has_stylebox(const StringName &p_name, const StringName &p_type) const; + void clear_stylebox(const StringName &p_name, const StringName &p_type); void get_stylebox_list(StringName p_type, List<StringName> *p_list) const; void get_stylebox_types(List<StringName> *p_list) const; - void set_font(const StringName& p_name,const StringName& p_type,const Ref<Font>& p_font); - Ref<Font> get_font(const StringName& p_name,const StringName& p_type) const; - bool has_font(const StringName& p_name,const StringName& p_type) const; - void clear_font(const StringName& p_name,const StringName& p_type); + void set_font(const StringName &p_name, const StringName &p_type, const Ref<Font> &p_font); + Ref<Font> get_font(const StringName &p_name, const StringName &p_type) const; + bool has_font(const StringName &p_name, const StringName &p_type) const; + void clear_font(const StringName &p_name, const StringName &p_type); void get_font_list(StringName p_type, List<StringName> *p_list) const; - void set_color(const StringName& p_name,const StringName& p_type,const Color& p_color); - Color get_color(const StringName& p_name,const StringName& p_type) const; - bool has_color(const StringName& p_name,const StringName& p_type) const; - void clear_color(const StringName& p_name,const StringName& p_type); + void set_color(const StringName &p_name, const StringName &p_type, const Color &p_color); + Color get_color(const StringName &p_name, const StringName &p_type) const; + bool has_color(const StringName &p_name, const StringName &p_type) const; + void clear_color(const StringName &p_name, const StringName &p_type); void get_color_list(StringName p_type, List<StringName> *p_list) const; - void set_constant(const StringName& p_name,const StringName& p_type,int p_constant); - int get_constant(const StringName& p_name,const StringName& p_type) const; - bool has_constant(const StringName& p_name,const StringName& p_type) const; - void clear_constant(const StringName& p_name,const StringName& p_type); + void set_constant(const StringName &p_name, const StringName &p_type, int p_constant); + int get_constant(const StringName &p_name, const StringName &p_type) const; + bool has_constant(const StringName &p_name, const StringName &p_type) const; + void clear_constant(const StringName &p_name, const StringName &p_type); void get_constant_list(StringName p_type, List<StringName> *p_list) const; void get_type_list(List<StringName> *p_list) const; - void copy_default_theme(); Theme(); ~Theme(); - }; - class ResourceFormatLoaderTheme : public ResourceFormatLoader { public: - virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); + virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL); virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String& p_type) const; + virtual bool handles_type(const String &p_type) const; virtual String get_resource_type(const String &p_path) const; - }; - - #endif |
