diff --git a/src/examples/edje/Makefile.am b/src/examples/edje/Makefile.am
index 5d4f15dcde..f418cab164 100644
--- a/src/examples/edje/Makefile.am
+++ b/src/examples/edje/Makefile.am
@@ -50,7 +50,8 @@ box_example.edc \
embryo_tween_anim.edc \
embryo_set_state_anim.edc \
bezier-transition-example.edc \
-textblock-hyphen.edc
+textblock-hyphen.edc \
+svg.edc
DIST_EDCS = $(EDCS)
@@ -85,6 +86,22 @@ red.png \
test.png \
Vera.ttf \
duck.wav \
+dst.svg \
+atom.svg \
+bojo.svg \
+bzrfeed.svg \
+yinyang.svg \
+ubuntu.svg \
+duke.svg \
+cartman.svg \
+ibm.svg \
+hg0.svg \
+fsm.svg \
+osa.svg \
+wikimedia.svg \
+scion.svg \
+eee.svg \
+google.svg \
en_IN/domain_name.po \
hi_IN/domain_name.po \
ta_IN/domain_name.mo \
@@ -111,7 +128,8 @@ signals2.c \
edje-swallow2.c \
edje-multisense.c \
edje-edit-part-box.c \
-edje-textblock-hyphenation.c
+edje-textblock-hyphenation.c \
+svg-test.c
EXTRA_DIST = $(DIST_EDCS) $(DATA_FILES)
@@ -181,7 +199,8 @@ edje-basic2 \
signals2 \
edje-swallow2 \
edje-edit-part-box \
-edje-textblock-hyphenation
+edje-textblock-hyphenation \
+svg-test
if ENABLE_MULTISENSE
EXTRA_PROGRAMS += edje-multisense
diff --git a/src/examples/edje/atom.svg b/src/examples/edje/atom.svg
new file mode 100755
index 0000000000..4dff5e330a
--- /dev/null
+++ b/src/examples/edje/atom.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/examples/edje/bozo.svg b/src/examples/edje/bozo.svg
new file mode 100755
index 0000000000..fe62615d8a
--- /dev/null
+++ b/src/examples/edje/bozo.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/examples/edje/bzrfeed.svg b/src/examples/edje/bzrfeed.svg
new file mode 100755
index 0000000000..e5d210f2e7
--- /dev/null
+++ b/src/examples/edje/bzrfeed.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/src/examples/edje/cartman.svg b/src/examples/edje/cartman.svg
new file mode 100755
index 0000000000..d4b2740c8f
--- /dev/null
+++ b/src/examples/edje/cartman.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/examples/edje/dst.svg b/src/examples/edje/dst.svg
new file mode 100755
index 0000000000..16d1baa6bc
--- /dev/null
+++ b/src/examples/edje/dst.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/examples/edje/duke.svg b/src/examples/edje/duke.svg
new file mode 100755
index 0000000000..64cdcf8ee7
--- /dev/null
+++ b/src/examples/edje/duke.svg
@@ -0,0 +1,25 @@
+
diff --git a/src/examples/edje/eee.svg b/src/examples/edje/eee.svg
new file mode 100644
index 0000000000..c23875ee18
--- /dev/null
+++ b/src/examples/edje/eee.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/fsm.svg b/src/examples/edje/fsm.svg
new file mode 100644
index 0000000000..f059954515
--- /dev/null
+++ b/src/examples/edje/fsm.svg
@@ -0,0 +1,20 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/google.svg b/src/examples/edje/google.svg
new file mode 100644
index 0000000000..3e51a42e9e
--- /dev/null
+++ b/src/examples/edje/google.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/hg0.svg b/src/examples/edje/hg0.svg
new file mode 100644
index 0000000000..2c51e0cae7
--- /dev/null
+++ b/src/examples/edje/hg0.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/ibm.svg b/src/examples/edje/ibm.svg
new file mode 100644
index 0000000000..c87ad11684
--- /dev/null
+++ b/src/examples/edje/ibm.svg
@@ -0,0 +1,44 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/osa.svg b/src/examples/edje/osa.svg
new file mode 100644
index 0000000000..3c74d15eaa
--- /dev/null
+++ b/src/examples/edje/osa.svg
@@ -0,0 +1,19 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/scion.svg b/src/examples/edje/scion.svg
new file mode 100644
index 0000000000..24fa109f9b
--- /dev/null
+++ b/src/examples/edje/scion.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/svg-test.c b/src/examples/edje/svg-test.c
new file mode 100644
index 0000000000..6716f6e87b
--- /dev/null
+++ b/src/examples/edje/svg-test.c
@@ -0,0 +1,111 @@
+/**
+ * Simple Edje example illustrating svg part usuage in edc.
+ *
+ * You'll need at least one Evas engine built for it (excluding the
+ * buffer one). See stdout/stderr for output.
+ *
+ * @verbatim
+ * edje_cc svg.edc && gcc -o svg-test svg-test.c `pkg-config --libs --cflags evas ecore ecore-evas edje`
+ * @endverbatim
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# define EINA_UNUSED
+#endif
+
+#ifndef PACKAGE_DATA_DIR
+#define PACKAGE_DATA_DIR "."
+#endif
+
+#include
+#include
+#include
+
+#define WIDTH 800
+#define HEIGHT 800
+
+static void
+_on_destroy(Ecore_Evas *ee EINA_UNUSED)
+{
+ ecore_main_loop_quit();
+}
+
+/* here just to keep our example's window size and background image's
+ * size in synchrony */
+static void
+_on_canvas_resize(Ecore_Evas *ee)
+{
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+ int w;
+ int h;
+
+ bg = ecore_evas_data_get(ee, "background");
+ edje_obj = ecore_evas_data_get(ee, "edje_obj");
+ ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
+ evas_object_resize(bg, w, h);
+ evas_object_resize(edje_obj, w, h);
+}
+
+int
+main(int argc EINA_UNUSED, char *argv[] EINA_UNUSED)
+{
+ const char *edje_file = "./svg.edj";
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *bg;
+ Evas_Object *edje_obj;
+
+ if (!ecore_evas_init())
+ return EXIT_FAILURE;
+
+ if (!edje_init())
+ goto shutdown_ecore_evas;
+
+ /* this will give you a window with an Evas canvas under the first
+ * engine available */
+ ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+ if (!ee) goto shutdown_edje;
+
+ ecore_evas_callback_destroy_set(ee, _on_destroy);
+ ecore_evas_callback_resize_set(ee, _on_canvas_resize);
+ ecore_evas_title_set(ee, "SVG Example");
+
+ evas = ecore_evas_get(ee);
+
+ bg = evas_object_rectangle_add(evas);
+ evas_object_color_set(bg, 0, 0, 0, 255);
+ evas_object_resize(bg, WIDTH, HEIGHT);
+ evas_object_focus_set(bg, EINA_TRUE);
+ evas_object_show(bg);
+ ecore_evas_data_set(ee, "background", bg);
+
+
+ edje_obj = edje_object_add(evas);
+
+ edje_object_file_set(edje_obj, edje_file, "svg-test");
+ evas_object_move(edje_obj, 0, 0);
+ evas_object_resize(edje_obj, WIDTH, HEIGHT);
+ evas_object_show(edje_obj);
+ ecore_evas_data_set(ee, "edje_obj", edje_obj);
+
+
+ ecore_evas_show(ee);
+
+ ecore_main_loop_begin();
+
+ ecore_evas_free(ee);
+ ecore_evas_shutdown();
+ edje_shutdown();
+
+ return EXIT_SUCCESS;
+
+ shutdown_edje:
+ edje_shutdown();
+ shutdown_ecore_evas:
+ ecore_evas_shutdown();
+
+ return EXIT_FAILURE;
+}
diff --git a/src/examples/edje/svg.edc b/src/examples/edje/svg.edc
new file mode 100644
index 0000000000..d458f451d0
--- /dev/null
+++ b/src/examples/edje/svg.edc
@@ -0,0 +1,104 @@
+#define SVG_PART(bg, vg, rel1x, rel1y, rel2x, rel2y,svg_id)\
+ rect { bg; \
+ description { state: "default" 0.0; \
+ color: 255 255 255 255; \
+ rel1.relative: rel1x rel1y; \
+ rel2.relative: rel2x rel2y; \
+ rel1.offset: 1 1; \
+ rel2.offset: -1 -1; \
+ } \
+ description { state: "clicked" 0.0; \
+ inherit: "default" 0.0; \
+ rel1.relative: 0.0 0.0; \
+ rel2.relative: 1.0 1.0; \
+ } \
+ }\
+ vector { vg;\
+ description { state: "default" 0.0; \
+ color: 255 255 255 255; \
+ rel1.to: bg; \
+ rel2.to: bg; \
+ image.normal: svg_id; \
+ } \
+ description { state: "clicked" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ }
+
+ #define SVG_PROGRAM(bg, vg) \
+ program { bg; \
+ signal: "mouse,down,1"; \
+ source: vg; \
+ action: STATE_SET "clicked"; \
+ transition: LINEAR 0.5; \
+ target: bg; \
+ }\
+ program { vg; \
+ signal: "mouse,up,1"; \
+ source: vg; \
+ action: STATE_SET "default"; \
+ transition: LINEAR 0.5; \
+ target: bg; \
+ }
+
+collections {
+ base_scale: 1.0;
+ /* TODO: Please replace embedded image files to your application image files. */
+ images {
+ vector: "dst.svg";
+ vector: "atom.svg";
+ vector: "bojo.svg";
+ vector: "bzrfeed.svg";
+ vector: "yinyang.svg";
+ vector: "ubuntu.svg";
+ vector: "duke.svg";
+ vector: "cartman.svg";
+ vector: "ibm.svg";
+ vector: "hg0.svg";
+ vector: "fsm.svg";
+ vector: "osa.svg";
+ vector: "wikimedia.svg";
+ vector: "scion.svg";
+ vector: "eee.svg";
+ vector: "google.svg";
+
+ }
+ group {
+ name: "svg-test";
+ parts {
+ SVG_PART("bg1", "vg1", 0.0, 0.0, .25, .25,"dst.svg")
+ SVG_PART("bg2", "vg2", 0.25, 0.0, .5, .25,"atom.svg")
+ SVG_PART("bg3", "vg3", 0.5, 0.0, .75, .25,"bojo.svg")
+ SVG_PART("bg4", "vg4", 0.75, 0.0, 1.0, .25,"bzrfreed.svg")
+ SVG_PART("bg5", "vg5", 0.0, 0.25, .25, .5,"yinyang.svg")
+ SVG_PART("bg6", "vg6", 0.25, 0.25, .5, .5,"ubuntu.svg")
+ SVG_PART("bg7", "vg7", 0.5, 0.25, .75, .5,"duke.svg")
+ SVG_PART("bg8", "vg8", 0.75, 0.25, 1.0, .5,"cartman.svg")
+ SVG_PART("bg9", "vg9", 0.0, 0.5, .25, .75,"ibm.svg")
+ SVG_PART("bg10", "vg10", 0.25, 0.5, .5, .75,"hg0.svg")
+ SVG_PART("bg11", "vg11", 0.5, 0.5, .75, .75,"fsm.svg")
+ SVG_PART("bg12", "vg12", 0.75, 0.5, 1.0, .75,"osa.svg")
+ SVG_PART("bg13", "vg13", 0.0, 0.75, .25, 1.0,"wikimedia.svg")
+ SVG_PART("bg14", "vg14", 0.25, 0.75, .5, 1.0,"scion.svg")
+ SVG_PART("bg15", "vg15", 0.5, 0.75, .75, 1.0,"eee.svg")
+ SVG_PART("bg16", "vg16", 0.75, 0.75, 1.0, 1.0,"google.svg")
+ }
+ programs {
+ SVG_PROGRAM("bg1", "vg1")
+ SVG_PROGRAM("bg2", "vg2")
+ SVG_PROGRAM("bg3", "vg3")
+ SVG_PROGRAM("bg4", "vg4")
+ SVG_PROGRAM("bg5", "vg5")
+ SVG_PROGRAM("bg6", "vg6")
+ SVG_PROGRAM("bg7", "vg7")
+ SVG_PROGRAM("bg8", "vg8")
+ SVG_PROGRAM("bg9", "vg9")
+ SVG_PROGRAM("bg10", "vg10")
+ SVG_PROGRAM("bg11", "vg11")
+ SVG_PROGRAM("bg12", "vg12")
+ SVG_PROGRAM("bg13", "vg13")
+ SVG_PROGRAM("bg14", "vg14")
+ SVG_PROGRAM("bg15", "vg15")
+ SVG_PROGRAM("bg16", "vg16")
+ }
+ }
\ No newline at end of file
diff --git a/src/examples/edje/ubuntu.svg b/src/examples/edje/ubuntu.svg
new file mode 100755
index 0000000000..4d7b3ee586
--- /dev/null
+++ b/src/examples/edje/ubuntu.svg
@@ -0,0 +1,26 @@
+
diff --git a/src/examples/edje/wikimedia.svg b/src/examples/edje/wikimedia.svg
new file mode 100644
index 0000000000..ad2c2115ca
--- /dev/null
+++ b/src/examples/edje/wikimedia.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/src/examples/edje/yinyang.svg b/src/examples/edje/yinyang.svg
new file mode 100755
index 0000000000..3c64a6c7b3
--- /dev/null
+++ b/src/examples/edje/yinyang.svg
@@ -0,0 +1,6 @@
+