jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4650a62e85db6fbe84e07ca4b4304450cd5f47ba

commit 4650a62e85db6fbe84e07ca4b4304450cd5f47ba
Author: smohanty <smohan...@gmail.com>
Date:   Thu Jun 29 17:20:45 2017 +0900

    evas/vg: rewrite the vg example with more test cases
    
    basic shape, stroke, transformation, interpolation test cases added
    
    Reviewers: jpeg
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D4992
---
 src/examples/evas/evas-vg-simple.c | 610 ++++++++++++++++++++++++++-----------
 1 file changed, 425 insertions(+), 185 deletions(-)

diff --git a/src/examples/evas/evas-vg-simple.c 
b/src/examples/evas/evas-vg-simple.c
index 4bcdd970b2..30eed1edac 100644
--- a/src/examples/evas/evas-vg-simple.c
+++ b/src/examples/evas/evas-vg-simple.c
@@ -15,8 +15,8 @@
 #define PACKAGE_EXAMPLES_DIR "."
 #endif
 
-#define WIDTH 400
-#define HEIGHT 400
+#define WIDTH 600
+#define HEIGHT 600
 
 #ifndef EFL_BETA_API_SUPPORT
 #define EFL_BETA_API_SUPPORT
@@ -26,8 +26,6 @@
 #define EFL_EO_API_SUPPORT
 #endif
 
-#include <math.h>
-
 #include <Eo.h>
 #include <Efl.h>
 #include <Evas.h>
@@ -35,28 +33,58 @@
 #include <Ecore_Evas.h>
 #include <Eina.h>
 
-#define PATH_KAPPA 0.5522847498
-#define PI         3.1415926535
-
-static Efl_VG *beginning = NULL;
-static Efl_VG *end = NULL;
-static Efl_VG *root = NULL;
-static double start_time = 0;
-static Ecore_Animator *anim = NULL;
-
 struct example_data
 {
    Ecore_Evas  *ee;
    Evas        *evas;
    Evas_Object *bg;
    Evas_Object *vg;
+   Eina_List   *shape_list;
+
 };
 
 static struct example_data d;
+Ecore_Animator *animator;
+static const char *batman = "M 256,213 C 245,181 206,187 234,262 147,181 
169,71.2 233,18 220,56 235,81 283,88 285,78.7 286,69.3 288,60 289,61.3 290,62.7 
291,64 291,64 297,63 300,63 303,63 309,64 309,64 310,62.7 311,61.3 312,60 
314,69.3 315,78.7 317,88 365,82 380,56 367,18 431,71 453,181 366,262 394,187 
356,181 344,213 328,185 309,184 300,284 291,184 272,185 256,213 Z";
+
+static const char *morph1[2] = {"M 0,0 L 0,0 L 100,0 L 100,0 L 100,100 L 
100,100 L 0,100 L 0,100 L 0,0",
+                                "M 0,0 L 50,-80 L 100,0 L 180,50 L 100,100 L 
50,180 L 0,100 L -80,50 L 0,0"};
+
+static void _main_menu();
+static void _main_menu_key_handle(void *data, Evas *evas, Evas_Object *o, void 
*einfo);
+
+static const char *main_menu = \
+  "Main Menu:\n"
+  "\t1 - Basic Shape test\n"
+  "\t2 - Interpolation\n"
+  "\te - Exit\n"
+  "\th - print help\n";
+
+static const char *basic_shape_menu = \
+  "Basic Shape Menu:\n"
+  "\tup   - Increase Stroke Width by 0.5\n"
+  "\tdown - Decrease Stroke Width by 0.5\n"
+  "\tr    - +10 degree rotation\n"
+  "\tR    - -10 degree rotation\n"
+  "\ts    - +(.1, .1) scale\n"
+  "\tS    - -(.1, .1) scale\n"
+  "\tt    - +(10,10) translation\n"
+  "\tT    - +(10,10) translation\n"
+  "\td    - Reset path data\n"
+  "\te    - Exit\n"
+  "\tb    - Back to Main Menu\n"
+  "\th    - print help\n";
+
+static const char *interpolation_menu = \
+  "Interpolation Menu:\n"
+  "\te    - Exit\n"
+  "\tb    - Back to Main Menu\n"
+  "\th    - print help\n";
 
 static void
 _on_delete(Ecore_Evas *ee EINA_UNUSED)
 {
+   if (animator) ecore_animator_del(animator);
    ecore_main_loop_quit();
 }
 
@@ -71,193 +99,414 @@ _canvas_resize_cb(Ecore_Evas *ee)
 }
 
 static void
-vector_set(int x, int y, int w, int h)
+reset_test()
 {
-   int vg_w = w, vg_h = h;
-   Efl_VG *root_node, *tmp_vg;
+  if(d.vg) evas_object_del(d.vg);
+  d.shape_list = eina_list_free(d.shape_list);
 
-   //Create VG Object
-   Evas_Object *tmp = evas_object_rectangle_add(d.evas);
-   evas_object_resize(tmp, vg_w, vg_h);
-   evas_object_color_set(tmp, 100, 100, 50, 100);
-   evas_object_move(tmp, x,y);
-   evas_object_show(tmp);
 
-   d.vg = evas_object_vg_add(d.evas);
-   evas_object_resize(d.vg, vg_w, vg_h);
-   evas_object_move(d.vg, x,y);
-   evas_object_show(d.vg);
-   evas_object_clip_set(d.vg, tmp);
-
-     // Applying map on the evas_object_vg
-//   Evas_Map *m = evas_map_new(4);
-//   evas_map_smooth_set(m, EINA_TRUE);
-//   evas_map_util_points_populate_from_object_full(m, d.vg, 0);
-//   evas_map_util_rotate(m, 10, 0,0);
-//   evas_object_map_enable_set(d.vg, EINA_TRUE);
-//   evas_object_map_set(d.vg, m);
-
-   // apply some transformation
-   double radian = 30.0 * 2 * 3.141 / 360.0;
-   Eina_Matrix3 matrix;
-   eina_matrix3_identity(&matrix);
-   eina_matrix3_rotate(&matrix, radian);
-
-   root = efl_add(EFL_VG_CONTAINER_CLASS, NULL);
-   //evas_vg_node_transformation_set(root, &matrix);
-
-   Efl_VG *bg = efl_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(efl_added, 
"bg"));
-   evas_vg_shape_append_rect(bg, 0, 0 , vg_w, vg_h, 0, 0);
-   evas_vg_node_origin_set(bg, 0,0);
-   evas_vg_shape_stroke_width_set(bg, 1.0);
-   evas_vg_node_color_set(bg, 80, 80, 80, 80);
-
-   Efl_VG *shape = efl_add(EFL_VG_SHAPE_CLASS, root, 
efl_vg_name_set(efl_added, "shape"));
-   Efl_VG *rgradient = efl_add(EFL_VG_GRADIENT_RADIAL_CLASS, NULL, 
efl_vg_name_set(efl_added, "rgradient"));
-   Efl_VG *lgradient = efl_add(EFL_VG_GRADIENT_LINEAR_CLASS, NULL, 
efl_vg_name_set(efl_added, "lgradient"));
-
-   evas_vg_shape_append_arc(shape, 0, 0, 100, 100, 25, 330);
-
-   Efl_Gfx_Gradient_Stop stops[3];
-   stops[0].r = 255;
-   stops[0].g = 0;
-   stops[0].b = 0;
-   stops[0].a = 255;
-   stops[0].offset = 0;
-   stops[1].r = 0;
-   stops[1].g = 255;
-   stops[1].b = 0;
-   stops[1].a = 255;
-   stops[1].offset = 0.5;
-   stops[2].r = 0;
-   stops[2].g = 0;
-   stops[2].b = 255;
-   stops[2].a = 255;
-   stops[2].offset = 1;
-
-   evas_vg_node_origin_set(rgradient, 10, 10);
-   evas_vg_gradient_spread_set(rgradient, EFL_GFX_GRADIENT_SPREAD_REFLECT);
-   evas_vg_gradient_stop_set(rgradient, stops, 3);
-   evas_vg_gradient_radial_center_set(rgradient, 30, 30);
-   evas_vg_gradient_radial_radius_set(rgradient, 80);
-
-   evas_vg_node_origin_set(lgradient, 10, 10);
-   evas_vg_gradient_stop_set(lgradient, stops, 3);
-   evas_vg_gradient_spread_set(lgradient, EFL_GFX_GRADIENT_SPREAD_REFLECT);
-   evas_vg_gradient_stop_set(lgradient, stops, 3);
-   evas_vg_gradient_linear_start_set(lgradient, 10, 10);
-   evas_vg_gradient_linear_end_set(lgradient, 50, 50);
-
-   evas_vg_node_origin_set(shape, 10, 10);
-   evas_vg_shape_fill_set(shape, rgradient);
-   evas_vg_shape_stroke_scale_set(shape, 2.0);
-   evas_vg_shape_stroke_width_set(shape, 1.0);
-   evas_vg_node_color_set(shape, 0, 0, 255, 255);
-   evas_vg_shape_stroke_color_set(shape, 0, 0, 255, 128);
-
-   Efl_VG *rect = efl_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(efl_added, 
"rect"));
-   evas_vg_shape_append_rect(rect, 0, 0, 100, 100, 0, 0);
-   evas_vg_node_origin_set(rect, 100, 100);
-   evas_vg_shape_fill_set(rect, lgradient);
-   evas_vg_shape_stroke_width_set(rect, 2.0);
-   evas_vg_shape_stroke_join_set(rect, EFL_GFX_JOIN_ROUND);
-   evas_vg_shape_stroke_color_set(rect, 255, 255, 255, 255);
-
-   Efl_VG *rect1 = efl_add(EFL_VG_SHAPE_CLASS, root, 
efl_vg_name_set(efl_added, "rect1"));
-   evas_vg_shape_append_rect(rect1, 0, 0, 70, 70, 0, 0);
-   evas_vg_node_origin_set(rect1, 50, 70);
-   evas_vg_shape_stroke_scale_set(rect1, 2);
-   evas_vg_shape_stroke_width_set(rect1, 8.0);
-   evas_vg_shape_stroke_join_set(rect1, EFL_GFX_JOIN_ROUND);
-   evas_vg_shape_stroke_color_set(rect1, 0, 100, 80, 100);
-
-   Efl_VG *circle = efl_add(EFL_VG_SHAPE_CLASS, root, 
efl_vg_name_set(efl_added, "circle"));
-   evas_vg_shape_append_arc(circle, 0, 0, 250, 100, 30, 300);
-   evas_vg_shape_fill_set(circle, lgradient);
-   //evas_vg_node_transformation_set(&matrix),
-   evas_vg_node_origin_set(circle, 50,50);
-   evas_vg_node_color_set(circle, 50, 0, 0, 50);
-
-   // Foreground
-   Efl_VG *fg = efl_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(efl_added, 
"fg"));
-   evas_vg_shape_append_rect(fg, 0, 0, vg_w, vg_h, 0, 0);
-   evas_vg_node_origin_set(fg, 0, 0);
-   evas_vg_shape_stroke_width_set(fg, 5.0);
-   evas_vg_shape_stroke_join_set(fg, EFL_GFX_JOIN_ROUND);
-   evas_vg_shape_stroke_color_set(fg, 70, 70, 0, 70);
-
-   Efl_VG *tst = efl_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(efl_added, 
"tst"));
-   evas_vg_shape_append_rect(tst, 50, 25, 200, 200, 3, 5);
-   evas_vg_node_color_set(tst, 0, 0, 200, 200);
-   evas_vg_shape_stroke_width_set(tst, 2);
-   evas_vg_shape_stroke_color_set(tst, 255, 0, 0, 255);
-
-   Efl_VG *vc = efl_add(EFL_VG_SHAPE_CLASS, root, efl_vg_name_set(efl_added, 
"vc"));
-   evas_vg_shape_append_circle(vc, 100, 100, 23);
-   evas_vg_node_color_set(vc, 0, 200, 0, 255);
-   evas_vg_shape_stroke_width_set(vc, 4);
-   evas_vg_shape_stroke_color_set(vc, 255, 0, 0, 255);
-
-   beginning = efl_add(EFL_VG_CONTAINER_CLASS, NULL, efl_vg_dup(efl_added, 
root));
-   end = efl_add(EFL_VG_CONTAINER_CLASS, NULL, efl_vg_dup(efl_added, root));
-
-   circle = efl_vg_container_child_get(end, "circle");
-   efl_vg_transformation_set(circle, &matrix);
-
-   root_node = evas_object_vg_root_node_get(d.vg);
-   // check if the dupe is working properly or not
-   efl_parent_set(beginning, root_node);
-
-   tmp_vg = root;
-   root = beginning;
-   beginning = tmp_vg;
+  d.vg = evas_object_vg_add(d.evas);
+  evas_object_show(d.vg);
+  evas_object_focus_set(d.vg, 1);
+  _canvas_resize_cb(d.ee);
 }
 
-static Eina_Bool
-_anim(void *data EINA_UNUSED)
+
+
+// 2.Basic shape  Test Case START
+
+static void
+_added_transformation(Efl_VG *shape, Eina_Matrix3 *m)
 {
-   double pos, now;
+   Eina_Matrix3 new_m;
+   const Eina_Matrix3 *old_m;
 
-   now = ecore_loop_time_get();
+   old_m = evas_vg_node_transformation_get(shape);
+   if (old_m)
+     {
+        eina_matrix3_compose(m, old_m, &new_m);
+        evas_vg_node_transformation_set(shape, &new_m);
+     }
+   else
+     {
+        evas_vg_node_transformation_set(shape, m);
+     }
+}
 
-   if (now - start_time > 3)
+static void
+_basic_shape_key_handle(void        *data EINA_UNUSED,
+                      Evas        *evas EINA_UNUSED,
+                      Evas_Object *o EINA_UNUSED,
+                      void        *einfo)
+{
+   Evas_Event_Key_Down *ev = einfo;
+   Efl_VG *shape;
+   Eina_List *l;
+   Eina_Matrix3 m;
+   double stroke_w;
+
+   if (strcmp(ev->key, "h") == 0) /* print help */
+     {
+        puts(basic_shape_menu);
+        return;
+     }
+   if (strcmp(ev->key, "e") == 0)
+     {
+        _on_delete(d.ee);
+        return;
+     }
+
+   if (strcmp(ev->key, "b") == 0)
+     {
+        _main_menu();
+        return;
+     }
+   if (strcmp(ev->key, "Up") == 0)
      {
-        Efl_VG *tmp = beginning;
 
-        beginning = end;
-        end = tmp;
-        start_time = now;
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          stroke_w = evas_vg_shape_stroke_width_get(shape);
+          evas_vg_shape_stroke_width_set(shape, stroke_w + 0.5);
+        }
+        return;
      }
+   if (strcmp(ev->key, "Down") == 0)
+     {
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          stroke_w = evas_vg_shape_stroke_width_get(shape);
+          if (stroke_w <= 0.5) stroke_w = 1;
+          evas_vg_shape_stroke_width_set(shape, stroke_w - 0.5);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "r") == 0)
+     {
+        eina_matrix3_identity(&m);
+        eina_matrix3_rotate(&m, 10.0 * 2 * 3.141 / 360.0);
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          _added_transformation(shape, &m);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "R") == 0)
+     {
+        eina_matrix3_identity(&m);
+        eina_matrix3_rotate(&m, -10.0 * 2 * 3.141 / 360.0);
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          _added_transformation(shape, &m);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "s") == 0)
+     {
+        eina_matrix3_identity(&m);
+        eina_matrix3_scale(&m, 1.1, 1.1);
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          _added_transformation(shape, &m);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "S") == 0)
+     {
+        eina_matrix3_identity(&m);
+        eina_matrix3_scale(&m, .9, .9);
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          _added_transformation(shape, &m);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "t") == 0)
+     {
+        eina_matrix3_identity(&m);
+        eina_matrix3_translate(&m, 10, 10);
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          _added_transformation(shape, &m);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "T") == 0)
+     {
+        eina_matrix3_identity(&m);
+        eina_matrix3_translate(&m, -10, -10);
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          _added_transformation(shape, &m);
+        }
+        return;
+     }
+   if (strcmp(ev->key, "d") == 0)
+     {
+        EINA_LIST_FOREACH(d.shape_list, l, shape)
+        {
+          evas_vg_shape_reset(shape);
+        }
+        return;
+     }
+}
 
-   pos = ecore_animator_pos_map((now - start_time) / 3, 
ECORE_POS_MAP_SINUSOIDAL, 0, 0);
+static void
+_1_basic_shape_test()
+{
+  Efl_VG *container, *shape, *new_shape;
+
+  reset_test();
+  evas_object_event_callback_add(d.vg, EVAS_CALLBACK_KEY_DOWN, 
_basic_shape_key_handle, NULL);
+  puts(basic_shape_menu);
+
+  container = evas_vg_container_add(evas_object_vg_root_node_get(d.vg));
+
+  // Line
+  shape = evas_vg_shape_add(container);
+  evas_vg_shape_append_move_to(shape, 0, 0);
+  evas_vg_shape_append_line_to(shape, 100, 0);
+  evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255);
+  evas_vg_shape_stroke_width_set(shape, 5);
+  evas_vg_node_origin_set(shape, 50, 50);
+  evas_vg_shape_stroke_cap_set(shape, EFL_GFX_CAP_ROUND);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_dup(new_shape, shape);
+  evas_vg_shape_stroke_color_set(new_shape, 0, 100, 0, 100);
+  evas_vg_shape_append_line_to(new_shape, 100, 50);
+  evas_vg_node_origin_set(new_shape, 200, 50);
+  evas_vg_shape_stroke_cap_set(new_shape, EFL_GFX_CAP_SQUARE);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_dup(new_shape, shape);
+  evas_vg_shape_stroke_color_set(new_shape, 0, 0, 255, 255);
+  evas_vg_shape_append_line_to(new_shape, 50, 50);
+  evas_vg_node_origin_set(new_shape, 350, 50);
+  evas_vg_shape_stroke_cap_set(new_shape, EFL_GFX_CAP_ROUND);
+  evas_vg_shape_stroke_join_set(new_shape, EFL_GFX_JOIN_ROUND);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+  // Rect
+  shape = evas_vg_shape_add(container);
+  evas_vg_shape_append_rect(shape, 0, 0, 100 , 100, 10, 10);
+  evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255);
+  evas_vg_shape_stroke_width_set(shape, 5);
+  evas_vg_node_origin_set(shape, 50, 150);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_dup(new_shape, shape);
+  evas_vg_shape_stroke_color_set(new_shape, 0, 0, 0, 0);
+  evas_vg_node_color_set(new_shape, 0, 0, 100, 100);
+  evas_vg_node_origin_set(new_shape, 200, 150);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_dup(new_shape, shape);
+  evas_vg_shape_stroke_color_set(new_shape, 100, 0, 0, 100);
+  evas_vg_node_color_set(new_shape, 0, 100, 100, 100);
+  evas_vg_node_origin_set(new_shape, 350, 150);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+  // Circle
+  shape = evas_vg_shape_add(container);
+  evas_vg_shape_append_circle(shape, 50, 50, 50);
+  evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255);
+  evas_vg_shape_stroke_width_set(shape, 5);
+  evas_vg_node_origin_set(shape, 50, 300);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_dup(new_shape, shape);
+  evas_vg_shape_stroke_color_set(new_shape, 0, 0, 0, 0);
+  evas_vg_node_color_set(new_shape, 0, 0, 255, 255);
+  evas_vg_node_origin_set(new_shape, 200, 300);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_dup(new_shape, shape);
+  evas_vg_shape_stroke_color_set(new_shape, 150, 0, 0, 150);
+  evas_vg_node_color_set(new_shape, 0, 0, 200, 200);
+  evas_vg_node_origin_set(new_shape, 350, 300);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+  // Arc
+  shape = evas_vg_shape_add(container);
+  evas_vg_shape_append_arc(shape, 0, 0, 100, 100, 45, -200);
+  evas_vg_shape_append_line_to(shape, 50, 50);
+  evas_vg_shape_stroke_cap_set(shape, EFL_GFX_CAP_ROUND);
+  evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255);
+  evas_vg_shape_stroke_width_set(shape, 5);
+  evas_vg_node_origin_set(shape, 50, 450);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_append_arc(new_shape, 0, 0, 100, 100, 90, 200);
+  evas_vg_shape_stroke_color_set(new_shape, 0, 0, 0, 0);
+  evas_vg_node_color_set(new_shape, 0, 0, 200, 200);
+  evas_vg_node_origin_set(new_shape, 200, 450);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+  new_shape = evas_vg_shape_add(container);
+  evas_vg_shape_append_arc(new_shape, 0, 0, 100, 100, 90, 200);
+  evas_vg_shape_append_line_to(new_shape, 50, 50);
+  evas_vg_shape_stroke_color_set(new_shape, 0, 0, 0, 0);
+  evas_vg_node_color_set(new_shape, 0, 0, 200, 200);
+  evas_vg_node_origin_set(new_shape, 350, 450);
+  d.shape_list = eina_list_append(d.shape_list, new_shape);
+
+}
 
-   efl_vg_interpolate(root, beginning, end, pos);
+// 2.Basic shape  Test Case END
 
+// 2.Interpolation Test Case START
+
+static void
+_interpolation_key_handle(void  *data EINA_UNUSED,
+                          Evas        *evas EINA_UNUSED,
+                          Evas_Object *o EINA_UNUSED,
+                          void        *einfo)
+{
+   Evas_Event_Key_Down *ev = einfo;
+
+   if (strcmp(ev->key, "h") == 0) /* print help */
+     {
+        puts(basic_shape_menu);
+        return;
+     }
+   if (strcmp(ev->key, "e") == 0) /* print help */
+     {
+        _on_delete(d.ee);
+        return;
+     }
+
+   if (strcmp(ev->key, "b") == 0) /* print help */
+     {
+        _main_menu();
+        return;
+     }
+}
+
+static int anim_index = 0;
+static Eina_Bool
+_interpolation_keyframe(void *data EINA_UNUSED, double pos)
+{
+  int next = (anim_index == 1) ? 0 : 1;
+
+  evas_vg_shape_reset(eina_list_nth(d.shape_list, 2));
+  evas_vg_shape_interpolate(eina_list_nth(d.shape_list, 2),
+                             eina_list_nth(d.shape_list, anim_index),
+                             eina_list_nth(d.shape_list, next),
+                             ecore_animator_pos_map(pos, 
ECORE_POS_MAP_SINUSOIDAL, 0.0, 0.0));
+
+   if (pos == 1.0)
+     {
+        anim_index = (anim_index == 1) ? 0 : 1;
+        animator = ecore_animator_timeline_add(1, _interpolation_keyframe, 
NULL);
+     }
    return EINA_TRUE;
 }
 
 static void
-_keydown(void *data EINA_UNUSED, Evas *evas EINA_UNUSED, Evas_Object *o 
EINA_UNUSED, void *einfo)
+_2_interpolation_test()
+{
+  anim_index = 0;
+
+  Efl_VG *shape;
+
+  reset_test();
+  evas_object_event_callback_add(d.vg, EVAS_CALLBACK_KEY_DOWN, 
_interpolation_key_handle, NULL);
+  animator = ecore_animator_timeline_add(1, _interpolation_keyframe, NULL);
+  puts(interpolation_menu);
+
+  shape = evas_vg_shape_add(NULL);
+  evas_vg_shape_append_svg_path(shape, morph1[0]);
+  evas_vg_shape_stroke_color_set(shape, 255, 0, 0, 255);
+  evas_vg_shape_stroke_width_set(shape, 5);
+  evas_vg_node_origin_set(shape, 100, 100);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+  shape = evas_vg_shape_add(NULL);
+  evas_vg_shape_append_svg_path(shape, morph1[1]);
+  evas_vg_shape_stroke_color_set(shape, 0, 0, 255, 255);
+  evas_vg_shape_stroke_width_set(shape, 10);
+  evas_vg_node_origin_set(shape, 150, 150);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+  shape = evas_vg_shape_add(evas_object_vg_root_node_get(d.vg));
+  evas_vg_node_origin_set(shape, 150, 150);
+  d.shape_list = eina_list_append(d.shape_list, shape);
+
+
+}
+
+// 2.Interpolation Test Case END
+
+// Main Menu START
+
+static void
+_main_menu()
+{
+  Efl_VG *shape;
+  if (animator) ecore_animator_del(animator);
+  animator = NULL;
+  if(d.vg) evas_object_del(d.vg);
+  if(d.bg) evas_object_del(d.bg);
+   d.bg = evas_object_rectangle_add(d.evas);
+   evas_object_color_set(d.bg, 255, 255, 255, 255);
+   evas_object_focus_set(d.bg, 1);
+   evas_object_show(d.bg);
+   evas_object_event_callback_add(d.bg, EVAS_CALLBACK_KEY_DOWN, 
_main_menu_key_handle, NULL);
+
+   // create the initial screen
+   d.vg = evas_object_vg_add(d.evas);
+   evas_object_show(d.vg);
+   shape = evas_vg_shape_add(evas_object_vg_root_node_get(d.vg));
+   evas_vg_shape_append_svg_path(shape, batman);
+   evas_vg_node_color_set(shape, 10, 0, 0, 10);
+   evas_vg_node_origin_set(shape, 0, 100);
+
+   _canvas_resize_cb(d.ee);
+   puts(main_menu);
+}
+
+static void
+_main_menu_key_handle(void        *data EINA_UNUSED,
+                      Evas        *evas EINA_UNUSED,
+                      Evas_Object *o EINA_UNUSED,
+                      void        *einfo)
 {
    Evas_Event_Key_Down *ev = einfo;
 
-   if (strcmp(ev->key, "a") == 0)
+   if (strcmp(ev->key, "h") == 0)
+     {
+        puts(main_menu);
+        return;
+     }
+   if (strcmp(ev->key, "e") == 0)
+     {
+        _on_delete(d.ee);
+        return;
+     }
+
+   if (strcmp(ev->key, "1") == 0)
      {
-        if (!anim)
-          {
-             anim = ecore_animator_add(_anim, NULL);
-             start_time = ecore_loop_time_get();
-          }
-        else
-          {
-             ecore_animator_del(anim);
-             anim = NULL;
-          }
-        /* efl_vg_interpolate(root, beginning, end, 0.5); */
+        _1_basic_shape_test();
+        return;
+     }
+   if (strcmp(ev->key, "2") == 0)
+     {
+        _2_interpolation_test();
+        return;
      }
-   fprintf(stderr, "key: [%s]\n", ev->key);
 }
 
+// Main Menu END
+
 int
 main(void)
 {
@@ -276,16 +525,7 @@ main(void)
 
    d.evas = ecore_evas_get(d.ee);
 
-   d.bg = evas_object_rectangle_add(d.evas);
-   evas_object_color_set(d.bg, 70, 70, 70, 255); /* white bg */
-   evas_object_focus_set(d.bg, 1);
-   evas_object_event_callback_add(d.bg, EVAS_CALLBACK_KEY_DOWN, _keydown, 
NULL);
-   evas_object_show(d.bg);
-
-   _canvas_resize_cb(d.ee);
-
-   vector_set(50, 50, 300 ,300);
-   //vector_set(30, 90, 300 ,300);
+   _main_menu();
 
    ecore_main_loop_begin();
    ecore_evas_shutdown();

-- 


Reply via email to