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

Reply via email to