From 1f3d6824c8db30cd5636aaa3978a953bedff4ed8 Mon Sep 17 00:00:00 2001 From: MarianoGNU Date: Sun, 20 Dec 2015 18:21:53 -0300 Subject: Move shaders to default theme and add shader_override related methods to Control class --- scene/resources/theme.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'scene/resources/theme.cpp') diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index e2413f7d84..685b2e07e1 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -266,7 +266,52 @@ void Theme::get_icon_list(StringName p_type, List *p_list) const { p_list->push_back(*key); } + +} + +void Theme::set_shader(const StringName &p_name,const StringName &p_type,const Ref& p_shader) { + bool new_value=!shader_map.has(p_type) || !shader_map[p_type].has(p_name); + + shader_map[p_type][p_name]=p_shader; + if (new_value) { + _change_notify(); + emit_changed();; + } +} + +Ref Theme::get_shader(const StringName &p_name, const StringName &p_type) const { + if (shader_map.has(p_type) && shader_map[p_type].has(p_name) && shader_map[p_type][p_name].is_valid()) { + return shader_map[p_type][p_name]; + } else { + return NULL; + } +} + +bool Theme::has_shader(const StringName &p_name, const StringName &p_type) const { + return (shader_map.has(p_type) && shader_map[p_type].has(p_name) && shader_map[p_type][p_name].is_valid()); +} + +void Theme::clear_shader(const StringName &p_name, const StringName &p_type) { + ERR_FAIL_COND(!shader_map.has(p_type)); + ERR_FAIL_COND(!shader_map[p_type].has(p_name)); + + shader_map[p_type].erase(p_name); + _change_notify(); + emit_changed();; +} + +void Theme::get_shader_list(const StringName &p_type, List *p_list) const { + if (!shader_map.has(p_type)) + return; + + const StringName *key=NULL; + + while((key=shader_map[p_type].next(key))) { + + p_list->push_back(*key); + } + } -- cgit v1.2.3