Hello,
please see attached patch which adds a function to get an image ID from
a name (similar to get_part_id). I updated
examples/embryo_custom_state.edc to show how to use it.
Please tell me whether I need to change anything or if this patch is
okay to commit.
Regards,
Daniel Willmann
>From 1ae67cfb7dcb75504395ae631bcc01b283e60a37 Mon Sep 17 00:00:00 2001
From: Daniel Willmann <d.willm...@samsung.com>
Date: Tue, 30 Oct 2012 21:10:32 +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 <d.willm...@samsung.com>
---
trunk/edje/data/include/edje.inc | 1 +
trunk/edje/src/examples/Makefile.am | 1 +
trunk/edje/src/examples/bubble-blue.png | Bin 0 -> 4505 bytes
trunk/edje/src/examples/embryo_custom_state.edc | 50 +++++++++++++++++++++++
trunk/edje/src/lib/edje_embryo.c | 28 +++++++++++++
trunk/edje/src/lib/edje_private.h | 4 +-
6 files changed, 82 insertions(+), 2 deletions(-)
create mode 100644 trunk/edje/src/examples/bubble-blue.png
diff --git a/trunk/edje/data/include/edje.inc b/trunk/edje/data/include/edje.inc
index dfa5416..55eb9ee 100644
--- a/trunk/edje/data/include/edje.inc
+++ b/trunk/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/trunk/edje/src/examples/Makefile.am b/trunk/edje/src/examples/Makefile.am
index a224158..ddfc5a9 100644
--- a/trunk/edje/src/examples/Makefile.am
+++ b/trunk/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/trunk/edje/src/examples/bubble-blue.png b/trunk/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/trunk/edje/src/examples/embryo_custom_state.edc b/trunk/edje/src/examples/embryo_custom_state.edc
index 9277c90..35a3998 100644
--- a/trunk/edje/src/examples/embryo_custom_state.edc
+++ b/trunk/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/trunk/edje/src/lib/edje_embryo.c b/trunk/edje/src/lib/edje_embryo.c
index cad3b60..16e6f02 100644
--- a/trunk/edje/src/lib/edje_embryo.c
+++ b/trunk/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/trunk/edje/src/lib/edje_private.h b/trunk/edje/src/lib/edje_private.h
index 20439f4..0a93a34 100644
--- a/trunk/edje/src/lib/edje_private.h
+++ b/trunk/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
--
1.7.9.5
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel