diff options
author | Jee-Yong Um <jc9.um@samsung.com> | 2016-12-15 13:19:39 +0900 |
---|---|---|
committer | Jee-Yong Um <jc9.um@samsung.com> | 2016-12-15 14:38:36 +0900 |
commit | 4e6254aeb86d1716820da2860dbcb6bec1b3ce86 (patch) | |
tree | c30e692e74095fdaac42f124cfcce372abf577c4 | |
parent | 91b7a2bc4a149e1648a3374176768aef9e7094cf (diff) | |
download | efl-devs/conr2d/common_attributes.tar.gz |
Edje.Global: introduce new class for edje global configurationsdevs/conr2d/common_attributes
-rw-r--r-- | src/Makefile_Edje.am | 1 | ||||
-rw-r--r-- | src/lib/edje/Edje_Eo.h | 1 | ||||
-rw-r--r-- | src/lib/edje/Edje_Legacy.h | 2 | ||||
-rw-r--r-- | src/lib/edje/edje_global.eo | 13 | ||||
-rw-r--r-- | src/lib/edje/edje_main.c | 5 | ||||
-rw-r--r-- | src/lib/edje/edje_object.eo | 47 | ||||
-rw-r--r-- | src/lib/edje/edje_private.h | 2 | ||||
-rw-r--r-- | src/lib/edje/edje_smart.c | 9 | ||||
-rw-r--r-- | src/lib/edje/edje_util.c | 78 |
9 files changed, 97 insertions, 61 deletions
diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index a4f5073ed1..0d4b86d638 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -2,6 +2,7 @@ ### Library edje_eolian_files = \ + lib/edje/edje_global.eo \ lib/edje/edje_object.eo \ lib/edje/edje_edit.eo diff --git a/src/lib/edje/Edje_Eo.h b/src/lib/edje/Edje_Eo.h index c303ea8fba..0b6337ea75 100644 --- a/src/lib/edje/Edje_Eo.h +++ b/src/lib/edje/Edje_Eo.h @@ -1,4 +1,5 @@ #include <Efl.h> +#include "edje_global.eo.h" #include "edje_object.eo.h" #include "edje_edit.eo.h" diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h index 85920b33d2..90f28e75e4 100644 --- a/src/lib/edje/Edje_Legacy.h +++ b/src/lib/edje/Edje_Legacy.h @@ -732,7 +732,7 @@ EAPI void edje_object_size_class_del(Evas_Object *obj, const char *size_class); * * @ingroup Edje_Object */ -EAPI void edje_object_part_text_select_allow_set(const Edje_Object *obj, const char *part, Eina_Bool allow); +EAPI void edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow); #include "edje_object.eo.legacy.h" #include "edje_edit.eo.legacy.h" diff --git a/src/lib/edje/edje_global.eo b/src/lib/edje/edje_global.eo new file mode 100644 index 0000000000..ca4ccb1925 --- /dev/null +++ b/src/lib/edje/edje_global.eo @@ -0,0 +1,13 @@ +class Edje.Global (Efl.Object, Efl.Gfx.Color_Class, Efl.Gfx.Text_Class, Efl.Gfx.Size_Class) +{ + data: null; + eo_prefix: edje_global; + implements { + Efl.Gfx.Color_Class.color_class; + Efl.Gfx.Color_Class.color_class_del; + Efl.Gfx.Text_Class.text_class; + Efl.Gfx.Text_Class.text_class_del; + Efl.Gfx.Size_Class.size_class; + Efl.Gfx.Size_Class.size_class_del; + } +} diff --git a/src/lib/edje/edje_main.c b/src/lib/edje/edje_main.c index f6d8462e35..55318e2098 100644 --- a/src/lib/edje/edje_main.c +++ b/src/lib/edje/edje_main.c @@ -81,6 +81,7 @@ edje_init(void) } _edje_scale = FROM_DOUBLE(1.0); + _edje_global_obj = efl_add(EDJE_GLOBAL_CLASS, NULL); _edje_edd_init(); _edje_text_init(); @@ -140,6 +141,8 @@ shutdown_all: _edje_text_class_hash_free(); _edje_size_class_hash_free(); _edje_edd_shutdown(); + efl_del(_edje_global_obj); + _edje_global_obj = NULL; efreet_shutdown(); shutdown_evas: evas_shutdown(); @@ -191,6 +194,8 @@ _edje_shutdown_core(void) _edje_text_class_hash_free(); _edje_size_class_hash_free(); _edje_edd_shutdown(); + efl_del(_edje_global_obj); + _edje_global_obj = NULL; eina_cow_del(_edje_calc_params_map_cow); eina_cow_del(_edje_calc_params_physics_cow); diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo index eae29f029a..96a8e6bed9 100644 --- a/src/lib/edje/edje_object.eo +++ b/src/lib/edje/edje_object.eo @@ -618,52 +618,6 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part, be processed only at idle time.]] } - @property global_color_class @class { - set { - [[Set Edje color class. - - This function sets the color values for a process level color - class. This will cause all edje parts in the current process that - have the specified color class to have their colors multiplied by - these values. (Object level color classes set by - edje_object_color_class_set() will override the values set by this - function). - - Setting color emits a signal "color_class,set" with source being - the given color class in all objects. - - Note: unlike Evas, Edje colors are not pre-multiplied. That is, - half-transparent white is 255 255 255 128.]] - legacy: null; - return: bool; [[$true on success, $false otherwise]] - } - get { - [[Get Edje color class. - - This function gets the color values for a process level color - class. This value is the globally set and not per-object, that is, - the value that would be used by objects if they did not override with - \@ref edje_object_color_class_set(). - - See also, @.global_color_class.set() - - Note: unlike Evas, Edje colors are not pre-multiplied. That is, - half-transparent white is 255 255 255 128.]] - legacy: null; - return: bool; [[$true if found or $false if not found and all values - are zeored.]] - } - keys { - color_class: string; [[The name of color class]] - mode: Edje.Color_Class.Mode; [[Edje color class mode]] - } - values { - r: int; [[Object Red value]] - g: int; [[Object Green value]] - b: int; [[Object Blue value]] - a: int; [[Object Alpha value]] - } - } access_part_iterate { [[Iterate over all accessibility-enabled part names.]] legacy: null; @@ -1916,6 +1870,7 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part, Efl.Object.constructor; Efl.Object.destructor; Efl.Object.dbg_info_get; + Efl.Object.provider_find; Efl.Canvas.Object.no_render.set; Efl.Canvas.Object.paragraph_direction.set; Efl.Canvas.Group.group_add; diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 9a0fd21eb3..fd677e4394 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -2315,6 +2315,8 @@ const Eina_Inarray *edje_match_signal_source_hash_get(const char *signal, void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data); void _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m); +extern Edje_Global *_edje_global_obj; + // FIXME remove below 3 eapi decls when edje_convert goes EAPI void _edje_edd_init(void); EAPI void _edje_data_font_list_desc_make(Eet_Data_Descriptor **_font_list_edd, Eet_Data_Descriptor **_font_edd); diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c index b769f59dd8..41eba7b6a8 100644 --- a/src/lib/edje/edje_smart.c +++ b/src/lib/edje/edje_smart.c @@ -540,4 +540,13 @@ _edje_object_efl_observer_update(Eo *obj EINA_UNUSED, Edje *ed, Efl_Object *obs, } } +EOLIAN static Efl_Object * +_edje_object_efl_object_provider_find(Eo *obj, Edje *ed EINA_UNUSED, const Efl_Class *klass) +{ + if (klass == EDJE_GLOBAL_CLASS) + return _edje_global_obj; + + return efl_provider_find(efl_super(obj, EDJE_OBJECT_CLASS), klass); +} + #include "edje_object.eo.c" diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c index 5c6e397fc8..0efbceedb1 100644 --- a/src/lib/edje/edje_util.c +++ b/src/lib/edje/edje_util.c @@ -16,6 +16,8 @@ struct _Edje_Box_Layout char name[]; }; +Edje_Global *_edje_global_obj = NULL; + static Eina_Hash *_edje_color_class_hash = NULL; static Eina_Hash *_edje_text_class_hash = NULL; static Eina_Hash *_edje_size_class_hash = NULL; @@ -641,18 +643,18 @@ _edje_color_class_get_internal(Edje_Color_Class *cc, Edje_Color_Class_Mode mode, EAPI Eina_Bool edje_color_class_set(const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) { - Eina_Bool int_ret; + Eina_Bool int_ret = EINA_TRUE; - int_ret = edje_obj_global_color_class_set(EDJE_OBJECT_CLASS, color_class, EDJE_COLOR_CLASS_MODE_COLOR, r, g, b, a); - int_ret &= edje_obj_global_color_class_set(EDJE_OBJECT_CLASS, color_class, EDJE_COLOR_CLASS_MODE_COLOR2, r2, g2, b2, a2); - int_ret &= edje_obj_global_color_class_set(EDJE_OBJECT_CLASS, color_class, EDJE_COLOR_CLASS_MODE_COLOR3, r3, g3, b3, a3); + int_ret &= efl_gfx_color_class_set(_edje_global_obj, color_class, EFL_GFX_COLOR_CLASS_LAYER_NORMAL, r, g, b, a); + int_ret &= efl_gfx_color_class_set(_edje_global_obj, color_class, EFL_GFX_COLOR_CLASS_LAYER_OUTLINE, r2, g2, b2, a2); + int_ret &= efl_gfx_color_class_set(_edje_global_obj, color_class, EFL_GFX_COLOR_CLASS_LAYER_SHADOW, r3, g3, b3, a3); return int_ret; } EOLIAN Eina_Bool -_edje_object_global_color_class_set(Efl_Class *klass EINA_UNUSED, void *pd EINA_UNUSED, - const char *color_class, Edje_Color_Class_Mode mode, int r, int g, int b, int a) +_edje_global_efl_gfx_color_class_color_class_set(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, + const char *color_class, Efl_Gfx_Color_Class_Layer layer, int r, int g, int b, int a) { Eina_Bool int_ret; Eina_Bool need_update = EINA_FALSE; @@ -660,7 +662,7 @@ _edje_object_global_color_class_set(Efl_Class *klass EINA_UNUSED, void *pd EINA_ if (!_edje_color_class_hash) _edje_color_class_hash = eina_hash_string_superfast_new(NULL); - int_ret = _edje_color_class_set_internal(_edje_color_class_hash, color_class, mode, r, g, b, a, &need_update); + int_ret = _edje_color_class_set_internal(_edje_color_class_hash, color_class, layer, r, g, b, a, &need_update); if ((int_ret) && (need_update)) efl_observable_observers_update(_edje_color_class_member, color_class, "color_class,set"); @@ -671,18 +673,18 @@ _edje_object_global_color_class_set(Efl_Class *klass EINA_UNUSED, void *pd EINA_ EAPI Eina_Bool edje_color_class_get(const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3) { - Eina_Bool int_ret; + Eina_Bool int_ret = EINA_TRUE; - int_ret = edje_obj_global_color_class_get(EDJE_OBJECT_CLASS, color_class, EDJE_COLOR_CLASS_MODE_COLOR, r, g, b, a); - int_ret &= edje_obj_global_color_class_get(EDJE_OBJECT_CLASS, color_class, EDJE_COLOR_CLASS_MODE_COLOR2, r2, g2, b2, a2); - int_ret &= edje_obj_global_color_class_get(EDJE_OBJECT_CLASS, color_class, EDJE_COLOR_CLASS_MODE_COLOR3, r3, g3, b3, a3); + int_ret &= efl_gfx_color_class_get(_edje_global_obj, color_class, EFL_GFX_COLOR_CLASS_LAYER_NORMAL, r, g, b, a); + int_ret &= efl_gfx_color_class_get(_edje_global_obj, color_class, EFL_GFX_COLOR_CLASS_LAYER_OUTLINE, r2, g2, b2, a2); + int_ret &= efl_gfx_color_class_get(_edje_global_obj, color_class, EFL_GFX_COLOR_CLASS_LAYER_SHADOW, r3, g3, b3, a3); return int_ret; } EOLIAN Eina_Bool -_edje_object_global_color_class_get(Efl_Class *klass EINA_UNUSED, void *pd EINA_UNUSED, - const char *color_class, Edje_Color_Class_Mode mode, int *r, int *g, int *b, int *a) +_edje_global_efl_gfx_color_class_color_class_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, + const char *color_class, Efl_Gfx_Color_Class_Layer layer, int *r, int *g, int *b, int *a) { Edje_Color_Class *cc; @@ -691,12 +693,18 @@ _edje_object_global_color_class_get(Efl_Class *klass EINA_UNUSED, void *pd EINA_ else cc = eina_hash_find(_edje_color_class_hash, color_class); - return _edje_color_class_get_internal(cc, mode, r, g, b, a); + return _edje_color_class_get_internal(cc, layer, r, g, b, a); } EAPI void edje_color_class_del(const char *color_class) { + efl_gfx_color_class_del(_edje_global_obj, color_class); +} + +EOLIAN void +_edje_global_efl_gfx_color_class_color_class_del(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const char *color_class) +{ Edje_Color_Class *cc; if (!color_class) return; @@ -1069,6 +1077,13 @@ on_error: EAPI Eina_Bool edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size size) { + return efl_gfx_text_class_set(_edje_global_obj, text_class, font, (Efl_Font_Size)size); +} + +EOLIAN Eina_Bool +_edje_global_efl_gfx_text_class_text_class_set(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, + const char *text_class, const char *font, Efl_Font_Size size) +{ Edje_Text_Class *tc; if (!text_class) return EINA_FALSE; @@ -1113,6 +1128,13 @@ edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size siz EAPI Eina_Bool edje_text_class_get(const char *text_class, const char **font, Evas_Font_Size *size) { + return efl_gfx_text_class_get(_edje_global_obj, text_class, font, (Efl_Font_Size *)size); +} + +EOLIAN Eina_Bool +_edje_global_efl_gfx_text_class_text_class_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, + const char *text_class, const char **font, Efl_Font_Size *size) +{ Edje_Text_Class *tc; if (!text_class) return EINA_FALSE; @@ -1137,6 +1159,12 @@ edje_text_class_get(const char *text_class, const char **font, Evas_Font_Size *s EAPI void edje_text_class_del(const char *text_class) { + efl_gfx_text_class_del(_edje_global_obj, text_class); +} + +EOLIAN void +_edje_global_efl_gfx_text_class_text_class_del(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const char *text_class) +{ Edje_Text_Class *tc; if (!text_class) return; @@ -1453,6 +1481,13 @@ on_error: EAPI Eina_Bool edje_size_class_set(const char *size_class, Evas_Coord minw, Evas_Coord minh, Evas_Coord maxw, Evas_Coord maxh) { + return efl_gfx_size_class_set(_edje_global_obj, size_class, minw, minh, maxw, maxh); +} + +EOLIAN Eina_Bool +_edje_global_efl_gfx_size_class_size_class_set(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const char *size_class, + Evas_Coord minw, Evas_Coord minh, Evas_Coord maxw, Evas_Coord maxh) +{ Edje_Size_Class *sc; if (!size_class) return EINA_FALSE; @@ -1500,6 +1535,13 @@ edje_size_class_set(const char *size_class, Evas_Coord minw, Evas_Coord minh, Ev EAPI Eina_Bool edje_size_class_get(const char *size_class, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord *maxw, Evas_Coord *maxh) { + return efl_gfx_size_class_get(_edje_global_obj, size_class, minw, minh, maxw, maxh); +} + +EOLIAN Eina_Bool +_edje_global_efl_gfx_size_class_size_class_get(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const char *size_class, + Evas_Coord *minw, Evas_Coord *minh, Evas_Coord *maxw, Evas_Coord *maxh) +{ Edje_Size_Class *sc; if (!size_class) return EINA_FALSE; @@ -1528,6 +1570,12 @@ edje_size_class_get(const char *size_class, Evas_Coord *minw, Evas_Coord *minh, EAPI void edje_size_class_del(const char *size_class) { + efl_gfx_size_class_del(_edje_global_obj, size_class); +} + +EOLIAN void +_edje_global_efl_gfx_size_class_size_class_del(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, const char *size_class) +{ Edje_Size_Class *sc; if (!size_class) return; @@ -6663,4 +6711,6 @@ edje_object_part_swallow_get(const Edje_Object *obj, const char *part) return efl_content_get(efl_part(obj, part)); } +#include "edje_global.eo.c" + /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ |