From c5996880a6feedd355cc7011d4317959754a0435 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Thu, 15 Nov 2012 09:31:08 +0000 Subject: [PATCH] edje: Add embryo function get_image_id This makes it possible to change the image from an embryo script Signed-off-by: Daniel Willmann SVN revision: 79327 --- legacy/edje/AUTHORS | 1 + legacy/edje/ChangeLog | 4 ++ legacy/edje/NEWS | 1 + legacy/edje/data/include/edje.inc | 1 + legacy/edje/src/examples/Makefile.am | 1 + legacy/edje/src/examples/bubble-blue.png | Bin 0 -> 4505 bytes .../edje/src/examples/embryo_custom_state.edc | 50 ++++++++++++++++++ legacy/edje/src/lib/edje_embryo.c | 28 ++++++++++ legacy/edje/src/lib/edje_private.h | 4 +- 9 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 legacy/edje/src/examples/bubble-blue.png diff --git a/legacy/edje/AUTHORS b/legacy/edje/AUTHORS index bb02878a3b..60107efdf0 100644 --- a/legacy/edje/AUTHORS +++ b/legacy/edje/AUTHORS @@ -31,3 +31,4 @@ WooHyun Jung (woohyun) Guilherme Silveira Flavio Ceolin Daniel Zaoui +Daniel Willmann diff --git a/legacy/edje/ChangeLog b/legacy/edje/ChangeLog index 450b7b6042..336978b374 100644 --- a/legacy/edje/ChangeLog +++ b/legacy/edje/ChangeLog @@ -675,3 +675,7 @@ 2012-11-02 ChunEon Park (Hermet) * Fix to not update map uv for proxy + +2012-11-15 Daniel Willmann + + * Add embryo function get_image_id diff --git a/legacy/edje/NEWS b/legacy/edje/NEWS index 07c274a3e2..08aaf8b65f 100644 --- a/legacy/edje/NEWS +++ b/legacy/edje/NEWS @@ -9,6 +9,7 @@ Additions: * Add EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN * Add edje_codegen - A code generator to working with edje files. * Add more tags(preedit_sub1~4) for a variety of preediting states. + * Add embryo function get_image_id Improvements: * Change Edje to use Eo. diff --git a/legacy/edje/data/include/edje.inc b/legacy/edje/data/include/edje.inc index dfa5416069..55eb9ee7ae 100644 --- a/legacy/edje/data/include/edje.inc +++ b/legacy/edje/data/include/edje.inc @@ -84,6 +84,7 @@ native cancel_anim(id); */ native emit (sig[], src[]); native get_part_id (part[]); +native get_image_id (image[]); native set_state (part_id, state[], Float:state_val); native get_state (part_id, dst[], maxlen, &Float:val); native set_tween_state (part_id, Float:tween, state1[], Float:state1_val, state2[], Float:state2_val); diff --git a/legacy/edje/src/examples/Makefile.am b/legacy/edje/src/examples/Makefile.am index 1c62c9e65f..99f32df0f1 100644 --- a/legacy/edje/src/examples/Makefile.am +++ b/legacy/edje/src/examples/Makefile.am @@ -60,6 +60,7 @@ filesdir = $(pkgdatadir)/examples files_DATA = \ $(EDCS) \ bubble.png \ +bubble-blue.png \ red.png \ test.png \ Vera.ttf \ diff --git a/legacy/edje/src/examples/bubble-blue.png b/legacy/edje/src/examples/bubble-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf4dcdc5e0ebf3883a0f7c1aa9097c81fd2c28d GIT binary patch literal 4505 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 literal 0 HcmV?d00001 diff --git a/legacy/edje/src/examples/embryo_custom_state.edc b/legacy/edje/src/examples/embryo_custom_state.edc index 9277c9075b..35a39980ce 100644 --- a/legacy/edje/src/examples/embryo_custom_state.edc +++ b/legacy/edje/src/examples/embryo_custom_state.edc @@ -1,10 +1,29 @@ collections { + images { + image: "bubble.png" COMP; + image: "bubble-blue.png" COMP; + } + group { name: "main"; script { /* define 3 global vars to hold the rotation values */ public rotx; public roty; public rotz; + + public change_image(part[], img[]) { + new imgid; + new partid; + + partid = get_part_id(part); + imgid = get_image_id(img); + + custom_state(partid, "default", 0.0); + /* change the rotation in the custom state */ + set_state_val(partid, STATE_IMAGE, imgid); + /* apply the custom state */ + set_state(partid, "custom", 0.0); + } } parts { part { name: "bg"; @@ -13,6 +32,18 @@ collections { color: 255 255 255 255; } } + part { name: "img"; + type: IMAGE; + description { state: "default" 0.0; + image { normal: "bubble.png"; } + } + /* Dummy state - otherwise edje_cc discards bubble-blue.png + as it thinks it's unused */ + description { state: "foo" 0.0; + image { normal: "bubble-blue.png"; } + } + } + part { name: "title"; type: TEXT; description { state: "default" 0.0; @@ -61,6 +92,18 @@ collections { } } } + part { name: "setimg"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Change image"; + font: "Sans"; + size: 12; + align: 0.5 1; + } + } + } part { name: "rect"; type: RECT; mouse_events: 0; @@ -129,6 +172,13 @@ collections { set_text(PART:"Z", buf); } } + program { + signal: "mouse,down,1"; + source: "setimg"; + script { + change_image("img", "bubble-blue.png"); + } + } } } } diff --git a/legacy/edje/src/lib/edje_embryo.c b/legacy/edje/src/lib/edje_embryo.c index cad3b60e76..16e6f027c3 100644 --- a/legacy/edje/src/lib/edje_embryo.c +++ b/legacy/edje/src/lib/edje_embryo.c @@ -828,6 +828,33 @@ _edje_embryo_fn_get_part_id(Embryo_Program *ep, Embryo_Cell *params) return -1; } +/* get_image_id(img[]) */ +static Embryo_Cell +_edje_embryo_fn_get_image_id(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Edje_File *file; + Edje_Image_Directory *dir; + Edje_Image_Directory_Entry *dirent; + char *p; + unsigned int i, j; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + GETSTR(p, params[1]); + if (!p) return -1; + file = ed->file; + if (!file) return -1; + dir = file->image_dir; + dirent = dir->entries; + for (i = 0; i < dir->entries_count; i++, dirent++) + { + if (!dirent->entry) continue; + if (!strcmp(dirent->entry, p)) return dirent->id; + } + return -1; +} + static Embryo_Cell _edje_embryo_fn_play_sample(Embryo_Program *ep, Embryo_Cell *params) { @@ -3022,6 +3049,7 @@ _edje_embryo_script_init(Edje_Part_Collection *edc) embryo_program_native_call_add(ep, "emit", _edje_embryo_fn_emit); embryo_program_native_call_add(ep, "get_part_id", _edje_embryo_fn_get_part_id); + embryo_program_native_call_add(ep, "get_image_id", _edje_embryo_fn_get_image_id); embryo_program_native_call_add(ep, "set_state", _edje_embryo_fn_set_state); embryo_program_native_call_add(ep, "get_state", _edje_embryo_fn_get_state); embryo_program_native_call_add(ep, "set_tween_state", _edje_embryo_fn_set_tween_state); diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 20439f493f..0a93a34b64 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -530,8 +530,8 @@ struct _Edje_Image_Directory Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */ unsigned int entries_count; - Edje_Image_Directory_Set *sets; - unsigned int sets_count; /* an array of Edje_Image_Directory_Set */ + Edje_Image_Directory_Set *sets; /* an array of Edje_Image_Directory_Set */ + unsigned int sets_count; }; struct _Edje_Image_Directory_Entry