summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJee-Yong Um <jc9.um@samsung.com>2016-12-15 13:19:39 +0900
committerJee-Yong Um <jc9.um@samsung.com>2016-12-15 14:38:36 +0900
commit4e6254aeb86d1716820da2860dbcb6bec1b3ce86 (patch)
treec30e692e74095fdaac42f124cfcce372abf577c4
parent91b7a2bc4a149e1648a3374176768aef9e7094cf (diff)
downloadefl-devs/conr2d/common_attributes.tar.gz
Edje.Global: introduce new class for edje global configurationsdevs/conr2d/common_attributes
-rw-r--r--src/Makefile_Edje.am1
-rw-r--r--src/lib/edje/Edje_Eo.h1
-rw-r--r--src/lib/edje/Edje_Legacy.h2
-rw-r--r--src/lib/edje/edje_global.eo13
-rw-r--r--src/lib/edje/edje_main.c5
-rw-r--r--src/lib/edje/edje_object.eo47
-rw-r--r--src/lib/edje/edje_private.h2
-rw-r--r--src/lib/edje/edje_smart.c9
-rw-r--r--src/lib/edje/edje_util.c78
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 :*/