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',