containing ui setup steps in the profiling again.
[platform/upstream/expedite.git] / src / bin / poly_blend.c
1 #undef FNAME
2 #undef NAME
3 #undef ICON
4
5 /* metadata */
6 #define FNAME poly_blend_start
7 #define NAME "Polygon Blend"
8 #define ICON "rect.png"
9
10 #ifndef PROTO
11 # ifndef UI
12 #  include "main.h"
13
14 /* standard var */
15 static int done = 0;
16 /* private data */
17 static Evas_Object *o_images[OBNUM];
18
19 static void
20 poly(Evas_Object *o, int type, Evas_Coord x, Evas_Coord y)
21 {
22    efl_canvas_polygon_points_clear(o);
23    switch (type % 4)
24      {
25       case 0: /* triangle */
26          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 50, y + 0));
27          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 100, y + 100));
28          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 0, y + 100));
29          break;
30       case 1: /* square */
31          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 0, y + 0));
32          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 100, y + 0));
33          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 100, y + 100));
34          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 0, y + 100));
35          break;
36       case 2: /* hex */
37          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 50, y + 0));
38          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 100, y + 30));
39          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 100, y + 70));
40          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 50, y + 100));
41          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 0, y + 70));
42          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 0, y + 30));
43          break;
44       case 3: /* star */
45          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 50, y + 0));
46          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 60, y + 40));
47          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 90, y + 30));
48          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 70, y + 60));
49          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 90, y + 100));
50          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 50, y + 70));
51          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 10, y + 100));
52          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 30, y + 60));
53          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 10, y + 30));
54          efl_canvas_polygon_point_add(o, EINA_POSITION2D(x + 40, y + 40));
55          break;
56       default:
57          break;
58      }
59 }
60
61 /* setup */
62 static void _setup(void)
63 {
64    int i;
65    Evas_Object *o;
66    srnd();
67    for (i = 0; i < OBNUM; i++)
68      {
69         int r, g, b, a;
70
71         o = efl_add(EFL_CANVAS_POLYGON_CLASS, evas);
72         o_images[i] = o;
73         a = (rnd()&0xff) / 2;
74         r = ((rnd()&0xff) * a) / 255;
75         g = ((rnd()&0xff) * a) / 255;
76         b = ((rnd()&0xff) * a) / 255;
77         efl_gfx_color_set(o, r, g, b, a);
78         efl_gfx_entity_visible_set(o, EINA_TRUE);
79         poly(o, i, 0, 0);
80      }
81    done = 0;
82 }
83
84 /* cleanup */
85 static void _cleanup(void)
86 {
87    int i;
88    for (i = 0; i < OBNUM; i++) efl_del(o_images[i]);
89 }
90
91 /* loop - do things */
92 static void _loop(double t, int f)
93 {
94    int i;
95    Evas_Coord x, y, w, h;
96    Evas_Object *o;
97
98    for (i = 0; i < OBNUM; i++)
99      {
100         o = o_images[i];
101         if (o)
102         exp_size_get(o, &w, &h);
103         x = (win_w / 2) - (w / 2);
104         x += sin((double)(f + (i * 13)) / (36.7 * SLOW)) * (win_w / 4);
105         y = (win_h / 2) - (h / 2);
106         y += cos((double)(f + (i * 28)) / (43.8 * SLOW)) * (win_h / 4);
107         if (o)
108         efl_gfx_entity_position_set(o, EINA_POSITION2D(x, y));
109      }
110    FPS_STD(NAME);
111 }
112
113 /* prepend special key handlers if interactive (before STD) */
114 static void _key(const char *key)
115 {
116    KEY_STD;
117 }
118
119
120
121
122
123
124
125
126
127
128
129
130 /* template stuff - ignore */
131 # endif
132 #endif
133
134 #ifdef UI
135 _ui_menu_item_add(ICON, NAME, FNAME);
136 #endif
137
138 #ifdef PROTO
139 void FNAME(void);
140 #endif
141
142 #ifndef PROTO
143 # ifndef UI
144 void FNAME(void)
145 {
146    ui_func_set(_key, _loop, _setup);
147 }
148 # endif
149 #endif
150 #undef FNAME
151 #undef NAME
152 #undef ICON