From: Piotr Kalota
Date: Tue, 4 Aug 2020 10:00:16 +0000 (+0200)
Subject: added example of evas_object_show/hide() for vg shapes
X-Git-Tag: accepted/tizen/unified/20200824.134432~18
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=79fbb95ff507d946303d9a8851b238fa1559ead8;p=platform%2Fupstream%2Fefl.git
added example of evas_object_show/hide() for vg shapes
Change-Id: I78679b7e1d3f7ffe29ab9e8642f131611e15b322
---
diff --git a/src/examples/evas/evas-vg-visibility.c b/src/examples/evas/evas-vg-visibility.c
new file mode 100644
index 0000000..c9f98f0
--- /dev/null
+++ b/src/examples/evas/evas-vg-visibility.c
@@ -0,0 +1,161 @@
+/**
+ * gcc -o evas-vg-visibility evas-vg-visibility.c `pkg-config --libs --cflags ecore ecore-evas`
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#define PACKAGE_EXAMPLES_DIR "."
+#endif
+
+#define WIDTH 600
+#define HEIGHT 600
+
+#include
+#include
+#include
+
+struct content
+{
+ Ecore_Evas *ee;
+ Evas *ev;
+ Evas_Object *bg;
+ Evas_Object *vg;
+ Efl_VG *container;
+ Efl_VG *shapes[3];
+};
+static struct content cnt;
+
+static void
+_print_help()
+{
+ printf("q - exit\n");
+ printf("1-3 - toggle visibility of single shape\n");
+ printf("c - toggle visibility of whole container (all shapes)\n");
+}
+
+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;
+
+ switch (*ei->key)
+ {
+ case 'q':
+ _on_delete(cnt.ee);
+ break;
+ case '1':
+ if (evas_object_visible_get(cnt.shapes[0]))
+ evas_object_hide(cnt.shapes[0]);
+ else evas_object_show(cnt.shapes[0]);
+ break;
+ case '2':
+ if (evas_object_visible_get(cnt.shapes[1]))
+ evas_object_hide(cnt.shapes[1]);
+ else evas_object_show(cnt.shapes[1]);
+ break;
+ case '3':
+ if (evas_object_visible_get(cnt.shapes[2]))
+ evas_object_hide(cnt.shapes[2]);
+ else evas_object_show(cnt.shapes[2]);
+ break;
+ case 'c':
+ if (evas_object_visible_get(cnt.container))
+ evas_object_hide(cnt.container);
+ else evas_object_show(cnt.container);
+ break;
+ default:
+ break;
+ }
+}
+
+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);
+ _print_help();
+}
+
+static void
+_draw_commands(){
+ int sd = 0; //shift down
+ Evas_Vg_Join join_types[] = {EVAS_VG_JOIN_MITER, EVAS_VG_JOIN_ROUND, EVAS_VG_JOIN_BEVEL};
+ for (int i=0; i<3; ++i)
+ {
+ sd = i*150;
+ cnt.shapes[i] = evas_vg_shape_add(cnt.container);
+ evas_vg_shape_append_move_to(cnt.shapes[i], 150, 150 + sd);
+ evas_vg_shape_append_line_to(cnt.shapes[i], 200, 100 + sd);
+ evas_vg_shape_append_line_to(cnt.shapes[i], 250, 150 + sd);
+ evas_vg_shape_append_line_to(cnt.shapes[i], 280, 50 + sd);
+ evas_vg_shape_append_line_to(cnt.shapes[i], 350, 150 + sd);
+ evas_vg_shape_append_line_to(cnt.shapes[i], 400, 100 + sd);
+ evas_vg_shape_append_line_to(cnt.shapes[i], 450, 150 + sd);
+ evas_vg_shape_stroke_join_set(cnt.shapes[i], join_types[i]);
+ evas_vg_shape_stroke_width_set(cnt.shapes[i], 20);
+ evas_vg_shape_stroke_color_set(cnt.shapes[i], 255, 0 ,0 ,255);
+ }
+}
+
+static void
+_init_vg()
+{
+ cnt.vg = evas_object_vg_add(cnt.ev);
+ evas_object_show(cnt.vg);
+ _canvas_resize_cb(cnt.ee);
+ cnt.container = evas_vg_container_add(cnt.vg);
+ _draw_commands();
+ evas_object_vg_root_node_set(cnt.vg, cnt.container);
+}
+
+int
+main(void)
+{
+ int err = _init_win();
+ if (err==EXIT_FAILURE || err==-1) return err;
+
+ _init_vg();
+
+ ecore_main_loop_begin();
+ ecore_evas_shutdown();
+
+ return 0;
+}
diff --git a/src/examples/evas/meson.build b/src/examples/evas/meson.build
index 6e89547..47927d3 100644
--- a/src/examples/evas/meson.build
+++ b/src/examples/evas/meson.build
@@ -34,6 +34,7 @@ examples = [
'evas-vg-interpolation',
'evas-vg-star-path',
'evas-vg-stroke-join',
+ 'evas-vg-visibility',
'evas-vg-batman',
'evas-vg-simple',
'evas-vg-json',