added example for evas_vg_shape_equal_commands() 97/240697/5
authorp.kalota <p.kalota@samsung.com>
Mon, 27 Jul 2020 08:23:14 +0000 (10:23 +0200)
committerHermet Park <chuneon.park@samsung.com>
Fri, 14 Aug 2020 02:57:49 +0000 (02:57 +0000)
Change-Id: Iab27b8044eb5c87e531c6181023535949a3ee1b5

src/examples/evas/evas-vg-cmd-equal.c [new file with mode: 0644]
src/examples/evas/meson.build

diff --git a/src/examples/evas/evas-vg-cmd-equal.c b/src/examples/evas/evas-vg-cmd-equal.c
new file mode 100644 (file)
index 0000000..88bdfb9
--- /dev/null
@@ -0,0 +1,152 @@
+/**
+ * gcc -o evas-vg-cmd-equal evas-vg-cmd-equal.c `pkg-config --libs --cflags ecore ecore-evas`
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#define PACKAGE_EXAMPLES_DIR "."
+#endif
+
+#define WIDTH  400
+#define HEIGHT 400
+
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+
+#define NUM_OF_SHAPES 6
+
+struct content
+{
+   Ecore_Evas  *ee;
+   Evas        *ev;
+   Evas_Object *bg;
+   Evas_Object *vg;
+   Efl_VG      *shapes[NUM_OF_SHAPES];
+};
+static struct  content cnt;
+
+
+static void
+_on_delete(Ecore_Evas *ee EINA_UNUSED)
+{
+   ecore_main_loop_quit();
+}
+
+static void
+_canvas_resize_cb(Ecore_Evas *ee)
+{
+   int w, h;
+
+   ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
+   evas_object_resize(cnt.bg, w, h);
+   evas_object_resize(cnt.vg, w, h);
+}
+
+static void
+_on_keydown(void        *data  EINA_UNUSED,
+            Evas        *evas  EINA_UNUSED,
+            Evas_Object *o,
+            void        *einfo)
+{
+   Evas_Event_Key_Down *ei = einfo;
+
+   if (!strcmp(ei->key, "q"))
+      _on_delete(cnt.ee);
+}
+
+static int
+_init_win()
+{
+   if (!ecore_evas_init())
+      return EXIT_FAILURE;
+
+   cnt.ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+   if (!cnt.ee)
+     {
+        ecore_evas_shutdown();
+        return -1;
+     }
+
+   ecore_evas_callback_delete_request_set(cnt.ee, _on_delete);
+   ecore_evas_callback_resize_set(cnt.ee, _canvas_resize_cb);
+   ecore_evas_show(cnt.ee);
+
+   cnt.ev = ecore_evas_get(cnt.ee);
+   cnt.bg = evas_object_rectangle_add(cnt.ev);
+   evas_object_color_set(cnt.bg, 0, 0, 0, 255);
+   evas_object_focus_set(cnt.bg, EINA_TRUE);
+   evas_object_show(cnt.bg);
+
+   evas_object_event_callback_add(cnt.bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, NULL);
+}
+
+static void
+_draw_commands(Efl_VG *container)
+{
+   /*          Shape 1         Shape 2         */
+   for (int i=0; i<2; ++i)
+     {
+        cnt.shapes[i] = evas_vg_shape_add(container);
+        evas_vg_shape_append_move_to(cnt.shapes[i], 150, 100);
+        evas_vg_shape_append_line_to(cnt.shapes[i], 253, 143);
+        evas_vg_shape_append_line_to(cnt.shapes[i], 374, 160);
+        evas_vg_shape_append_close(cnt.shapes[i]);
+     }
+   /*          Shape 3                         */
+   cnt.shapes[2] = evas_vg_shape_add(container);
+   evas_vg_shape_append_move_to(cnt.shapes[2], 100, 100);
+   evas_vg_shape_append_line_to(cnt.shapes[2], 200, 244);
+   evas_vg_shape_stroke_join_set(cnt.shapes[2], EVAS_VG_JOIN_BEVEL);
+   evas_vg_shape_append_close(cnt.shapes[2]);
+   /*         Shape 4           Shape 5        */
+   for (int i=3; i<NUM_OF_SHAPES-1; ++i)
+     {
+        cnt.shapes[i] = evas_vg_shape_add(container);
+        evas_vg_shape_append_circle(cnt.shapes[i], 50, 50, 20);
+     }
+   /*          Shape 6  not initialized           */
+}
+
+static void
+_shapes_compare()
+{
+   Eina_Bool equal = EINA_FALSE;
+   const char *shape_name[] = {"Shape1", "Shape2", "Shape3", "Shape4", "Shape5", "Shape6"};
+   for (int i=0; i<NUM_OF_SHAPES-1; ++i)
+     {
+        for (int j=i+1; j<NUM_OF_SHAPES; ++j)
+          {
+             equal = evas_vg_shape_equal_commands(cnt.shapes[i], cnt.shapes[j]);
+             printf("%s == %s: %s\n", shape_name[i], shape_name[j], equal ? "True" : "False");
+          }
+        printf("\n");
+     }
+}
+
+static void
+_init_vg()
+{
+   Efl_VG *container;
+   cnt.vg = evas_object_vg_add(cnt.ev);
+   evas_object_show(cnt.vg);
+   _canvas_resize_cb(cnt.ee);
+   container = evas_vg_container_add(cnt.vg);
+   _draw_commands(container);
+   evas_object_vg_root_node_set(cnt.vg, container);
+}
+
+int
+main(void)
+{
+   int err = _init_win();
+   if (err==EXIT_FAILURE || err==-1)
+      return err;
+
+   _init_vg();
+   _shapes_compare();
+
+   ecore_main_loop_begin();
+   ecore_evas_shutdown();
+   return 0;
+}
index 2704d55..ac6110d 100644 (file)
@@ -29,6 +29,7 @@ examples = [
   'evas-textblock-obstacles',
   'evas-text',
   'evas-transparent',
+  'evas-vg-cmd-equal',
   'evas-vg-batman',
   'evas-vg-simple',
   'evas-vg-json',