diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 3b0d96d..ee928af 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -45,6 +45,8 @@ image_blend_border.c \ image_blend_solid_middle_border.c \ image_blend_solid_border.c \ image_blend_border_recolor.c \ +image_map_rotate.c \ +image_map_solid_rotate.c \ image_quality_scale.c \ image_data_argb.c \ image_data_argb_alpha.c \ diff --git a/src/bin/image_map_rotate.c b/src/bin/image_map_rotate.c new file mode 100644 index 0000000..d1d4e8f --- /dev/null +++ b/src/bin/image_map_rotate.c @@ -0,0 +1,121 @@ +#undef FNAME +#undef NAME +#undef ICON + +/* metadata */ +#define FNAME image_map_rotate_start +#define NAME "Image Map Rotate" +#define ICON "mushroom.png" + +#ifndef PROTO +# ifndef UI +# include "main.h" + +/* standard var */ +static int done = 0; + +/* private data */ +static Evas_Object *o_images[OBNUM]; + +/* setup */ +static void _setup(void) +{ + int i; + Evas_Object *o; + for (i = 0; i < (OBNUM / 2); i++) + { + o = evas_object_image_add(evas); + o_images[i] = o; + evas_object_image_file_set(o, build_path("logo.png"), NULL); + evas_object_image_fill_set(o, 0, 0, 120, 160); + evas_object_resize(o, 120, 160); + evas_object_show(o); + } + done = 0; +} + +/* cleanup */ +static void _cleanup(void) +{ + int i; + for (i = 0; i < (OBNUM / 2); i++) evas_object_del(o_images[i]); +} + +/* loop - do things */ +static void _loop(double t, int f) +{ + int i; + Evas_Map_Point *p; + Evas_Coord x, y, w, h; + p = evas_map_new(4); + for (i = 0; i < (OBNUM / 2); i++) + { + w = 120; + h = 160; + x = (win_w / 2) - (w / 2); + x += sin((double)(f + (i * 13)) / (36.7 * SLOW)) * (w / 2); + y = (win_h / 2) - (h / 2); + y += cos((double)(f + (i * 28)) / (43.8 * SLOW)) * (h / 2); + + evas_map_point_coord_set (p, 0, x, y, 0); + evas_map_point_image_uv_set(p, 0, 0, 0); + + evas_map_point_coord_set (p, 1, x + w, y, 0); + evas_map_point_image_uv_set(p, 1, w, 0); + + evas_map_point_coord_set (p, 2, x + w, y + h, 0); + evas_map_point_image_uv_set(p, 2, w, h); + + evas_map_point_coord_set (p, 3, x, y + h, 0); + evas_map_point_image_uv_set(p, 3, 0, h); + + evas_map_util_rotate(p, f, x + (w / 2), y + (h / 2)); + + evas_object_map_enable_set(o_images[i], 1); + evas_object_map_set(o_images[i], p); + } + evas_map_free(p); + 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/image_map_solid_rotate.c b/src/bin/image_map_solid_rotate.c new file mode 100644 index 0000000..6588cae --- /dev/null +++ b/src/bin/image_map_solid_rotate.c @@ -0,0 +1,121 @@ +#undef FNAME +#undef NAME +#undef ICON + +/* metadata */ +#define FNAME image_map_solid_rotate_start +#define NAME "Image Map Solid Rotate" +#define ICON "mushroom.png" + +#ifndef PROTO +# ifndef UI +# include "main.h" + +/* standard var */ +static int done = 0; + +/* private data */ +static Evas_Object *o_images[OBNUM]; + +/* setup */ +static void _setup(void) +{ + int i; + Evas_Object *o; + for (i = 0; i < (OBNUM / 2); i++) + { + o = evas_object_image_add(evas); + o_images[i] = o; + evas_object_image_file_set(o, build_path("image.png"), NULL); + evas_object_image_fill_set(o, 0, 0, 120, 160); + evas_object_resize(o, 120, 160); + evas_object_show(o); + } + done = 0; +} + +/* cleanup */ +static void _cleanup(void) +{ + int i; + for (i = 0; i < (OBNUM / 2); i++) evas_object_del(o_images[i]); +} + +/* loop - do things */ +static void _loop(double t, int f) +{ + int i; + Evas_Map_Point *p; + Evas_Coord x, y, w, h; + p = evas_map_new(4); + for (i = 0; i < (OBNUM / 2); i++) + { + w = 120; + h = 160; + x = (win_w / 2) - (w / 2); + x += sin((double)(f + (i * 13)) / (36.7 * SLOW)) * (w / 2); + y = (win_h / 2) - (h / 2); + y += cos((double)(f + (i * 28)) / (43.8 * SLOW)) * (h / 2); + + evas_map_point_coord_set (p, 0, x, y, 0); + evas_map_point_image_uv_set(p, 0, 0, 0); + + evas_map_point_coord_set (p, 1, x + w, y, 0); + evas_map_point_image_uv_set(p, 1, w, 0); + + evas_map_point_coord_set (p, 2, x + w, y + h, 0); + evas_map_point_image_uv_set(p, 2, w, h); + + evas_map_point_coord_set (p, 3, x, y + h, 0); + evas_map_point_image_uv_set(p, 3, 0, h); + + evas_map_util_rotate(p, f, x + (w / 2), y + (h / 2)); + + evas_object_map_enable_set(o_images[i], 1); + evas_object_map_set(o_images[i], p); + } + evas_map_free(p); + 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 cd47110..434d948 100644 --- a/src/bin/tests.h +++ b/src/bin/tests.h @@ -21,6 +21,8 @@ #include "image_blend_solid_middle_border.c" #include "image_blend_solid_border.c" #include "image_blend_border_recolor.c" +#include "image_map_rotate.c" +#include "image_map_solid_rotate.c" #include "image_quality_scale.c" #include "image_data_argb.c" #include "image_data_argb_alpha.c"