diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index d37babc..754b8ab 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -128,7 +128,8 @@ image_mask_13.c \ vg_basic_rect.c \ vg_basic_circle.c \ vg_basic_gradient.c \ -vg_scaled.c +vg_scaled.c \ +snapshot_widgets_file_icons.c # \ # image_mask_14.c \ # image_mask_15.c diff --git a/src/bin/snapshot_widgets_file_icons.c b/src/bin/snapshot_widgets_file_icons.c new file mode 100644 index 0000000..c78b9d4 --- /dev/null +++ b/src/bin/snapshot_widgets_file_icons.c @@ -0,0 +1,211 @@ +#define EFL_GFX_FILTER_BETA + +#undef FNAME +#undef NAME +#undef ICON + +/* metadata */ +#define FNAME snapshot_widgets_file_icons_start +#define NAME "Snapshot Widgets File Icons" +#define ICON "widgets.png" + +#ifndef PROTO +# ifndef UI +# include "main.h" + +/* standard var */ +static int done = 0; +/* private data */ +#define NUM 512 +#define ICON_SIZE 64 +static Evas_Object *o_images[NUM]; +static Evas_Object *o_texts[NUM]; +static Evas_Object *o_snap; + +static const char *icons[] = +{ + "bug.png", + "bulb.png", + "camera.png", + "colorbox.png", + + "e.png", + "error.png", + "flower.png", + "house.png", + + "mushroom.png", + "pulse.png", + "typewriter.png", + "warning.png", + + "watch.png" +}; + +/* setup */ +static void _setup(void) +{ + Evas_Object *o; + Evas_Coord x, y; + int i; + + x = y = 0; + for (i = 0; i < NUM; i++) + { + Evas_Coord tw, th, cent; + + o = eo_add(EVAS_IMAGE_CLASS, evas); + o_images[i] = o; + eo_do(o, + efl_file_set(build_path(icons[i % 13]), NULL), + efl_gfx_fill_set(0, 0, ICON_SIZE, ICON_SIZE), + efl_gfx_size_set(ICON_SIZE, ICON_SIZE), + efl_gfx_position_set(x + 8, y), + efl_gfx_visible_set(EINA_TRUE)); + + o = eo_add(EVAS_TEXT_CLASS, evas); + o_texts[i] = o; + eo_do(o, + efl_text_properties_font_set("Vera-Bold", 10), + efl_text_set(icons[i % 13]), + evas_obj_text_style_set(EVAS_TEXT_STYLE_FAR_SOFT_SHADOW), + efl_gfx_color_set(255, 255, 255, 255), + evas_obj_text_shadow_color_set(0, 0, 0, 24), + efl_gfx_visible_set(EINA_TRUE), + efl_gfx_size_get(&tw, &th)); + cent = ICON_SIZE + 16 - tw / 2; + eo_do(o, efl_gfx_position_set(x + cent, y + ICON_SIZE + 4)); + x += ICON_SIZE + 16; + if (x > win_w) + { + x = 0; + y += ICON_SIZE + 16; + } + } + + const char *filter = + "a = buffer { 'rgba' }" + "blend {}" + "blur { 5, dst = a }" + "blend { src = a, color = '#ff08' }" + ; + + o = eo_add(EVAS_IMAGE_CLASS, evas); + o_snap = o; + eo_do(o, + efl_gfx_visible_set(EINA_TRUE), + efl_gfx_position_set(50, 50), + efl_gfx_size_set(200, 200), + efl_gfx_fill_set(0, 0, 200, 200), + evas_obj_image_snapshot_set(EINA_TRUE), + efl_gfx_filter_program_set(filter, "test")); + + done = 0; +} + +/* cleanup */ +static void _cleanup(void) +{ + int i; + for (i = 0; i < NUM; i++) + { + eo_del(o_images[i]); + eo_del(o_texts[i]); + } + eo_del(o_snap); +} + +/* loop - do things */ +static int dx = 2; +static int dy = 2; + +static void _loop(double t, int f) +{ + int i; + Evas_Coord x, y, tw, th, cent; + x = 0; + y = 0 - f; + for (i = 0; i < NUM; i++) + { + eo_do(o_images[i], efl_gfx_position_set(x + 8, y)); + eo_do(o_texts[i], efl_gfx_size_get(&tw, &th)); + cent = (ICON_SIZE + 16 - tw) / 2; + eo_do(o_texts[i], efl_gfx_position_set(x + cent, y + ICON_SIZE + 4)); + x += ICON_SIZE + 16; + if (x > win_w) + { + x = 0; + y += ICON_SIZE + 16; + } + } + + if (1) + { + evas_object_geometry_get(o_snap, &x, &y, NULL, NULL); + if (dx > 0) + { + if (x + dx >= win_w) dx = -dx; + } + else + { + if (x + dx <= 0) dx = -dx; + } + x = x + dx; + + if (dy > 0) + { + if (y + dy >= win_h) dy = -dy; + } + else + { + if (y + dy <= 0) dy = -dy; + } + x = x + dx; + + evas_object_move(o_snap, x, y); + } + + FPS_STD(NAME); +} + +/* prepend special key handlers if interactive (before STD) */ +static void _key(char *key) +{ + KEY_STD; +} + + + + + + + + + + + + +/* template stuff - ignore */ +# endif +#endif + +#ifdef UI +_ui_menu_item_add(ICON, NAME, FNAME); +#endif + +#ifdef PROTO +void FNAME(void); +#endif + +#ifndef PROTO +# ifndef UI +void FNAME(void) +{ + ui_func_set(_key, _loop); + _setup(); +} +# endif +#endif +#undef FNAME +#undef NAME +#undef ICON diff --git a/src/bin/tests.h b/src/bin/tests.h index 0724ee3..b03d0f0 100644 --- a/src/bin/tests.h +++ b/src/bin/tests.h @@ -110,6 +110,7 @@ #include "vg_basic_circle.c" #include "vg_basic_gradient.c" #include "vg_scaled.c" +#include "snapshot_widgets_file_icons.c" #if 0 // test disabled - evas having code disabled #include "image_mask_14.c" #include "image_mask_15.c"