diff options
Diffstat (limited to 'libraries/elementary/src/bin/test_gesture_layer2.c')
-rw-r--r-- | libraries/elementary/src/bin/test_gesture_layer2.c | 778 |
1 files changed, 778 insertions, 0 deletions
diff --git a/libraries/elementary/src/bin/test_gesture_layer2.c b/libraries/elementary/src/bin/test_gesture_layer2.c new file mode 100644 index 0000000..487c84e --- /dev/null +++ b/libraries/elementary/src/bin/test_gesture_layer2.c | |||
@@ -0,0 +1,778 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include "elementary_config.h" | ||
3 | #endif | ||
4 | #include <Elementary.h> | ||
5 | #ifndef ELM_LIB_QUICKLAUNCH | ||
6 | |||
7 | #define TAP_NAME "tap" | ||
8 | #define DOUBLE_TAP_NAME "double_tap" | ||
9 | #define TRIPLE_TAP_NAME "triple_tap" | ||
10 | #define LONG_TAP_NAME "long_tap" | ||
11 | #define FLICK_NAME "flick" | ||
12 | #define LINE_NAME "line" | ||
13 | #define MOMENTUM_NAME "momentum" | ||
14 | #define ROTATE_NAME "rotate" | ||
15 | #define ZOOM_NAME "zoom" | ||
16 | |||
17 | #define N_GESTURE_TYPE 9 | ||
18 | #define MAX_DOUBLE_TAP 5 | ||
19 | #define MAX_FLICK 5 | ||
20 | #define MAX_LINE 5 | ||
21 | #define MAX_LONG_TAP 5 | ||
22 | #define MAX_MOMENTUM 5 | ||
23 | #define MAX_ROTATE 1 | ||
24 | #define MAX_TAP 5 | ||
25 | #define MAX_TRIPLE_TAP 5 | ||
26 | #define MAX_ZOOM 1 | ||
27 | |||
28 | #define TB_PADDING_X 4 | ||
29 | #define TB_PADDING_Y 12 | ||
30 | |||
31 | #define BX_PADDING_X 0 | ||
32 | #define BX_PADDING_Y 2 | ||
33 | |||
34 | /* Define initial RGBA values for icons */ | ||
35 | #define INI_R 60 | ||
36 | #define INI_G 66 | ||
37 | #define INI_B 64 | ||
38 | #define INI_A 128 | ||
39 | #define COLOR_STEP 4 | ||
40 | |||
41 | #define START_COLOR 220, 220, 200, 255 | ||
42 | #define MOVE_COLOR 255, 255, 0, 255 | ||
43 | #define ABORT_COLOR 255, 0, 0, 255 | ||
44 | #define END_COLOR 0, 255, 0, 255 | ||
45 | |||
46 | struct _icon_properties | ||
47 | { | ||
48 | Evas_Object *icon; | ||
49 | int r; /* current r */ | ||
50 | int g; | ||
51 | int b; | ||
52 | int a; | ||
53 | |||
54 | const char *name; | ||
55 | }; | ||
56 | typedef struct _icon_properties icon_properties; | ||
57 | |||
58 | struct _infra_data | ||
59 | { /* Some data that is passed aroung between callbacks (replacing globals) */ | ||
60 | icon_properties *icons; | ||
61 | Ecore_Timer *colortimer; | ||
62 | char buf[1024]; | ||
63 | }; | ||
64 | typedef struct _infra_data infra_data; | ||
65 | |||
66 | void | ||
67 | _infra_data_free(infra_data *infra) | ||
68 | { | ||
69 | if (infra) | ||
70 | { | ||
71 | if (infra->colortimer) | ||
72 | ecore_timer_del(infra->colortimer); | ||
73 | |||
74 | if (infra->icons) | ||
75 | free(infra->icons); | ||
76 | |||
77 | free (infra); | ||
78 | } | ||
79 | } | ||
80 | |||
81 | infra_data * | ||
82 | _infra_data_alloc(void) | ||
83 | { | ||
84 | infra_data *infra = malloc(sizeof(infra_data)); | ||
85 | infra->icons = calloc(N_GESTURE_TYPE, sizeof(icon_properties )); | ||
86 | infra->colortimer = NULL; | ||
87 | |||
88 | return infra; | ||
89 | } | ||
90 | |||
91 | static void | ||
92 | my_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) | ||
93 | { /* called when my_win_main is requested to be deleted */ | ||
94 | _infra_data_free(data); | ||
95 | } | ||
96 | |||
97 | icon_properties * | ||
98 | _icon_properties_find(icon_properties *icons, char *name) | ||
99 | { | ||
100 | int n; | ||
101 | |||
102 | for (n = 0; n < N_GESTURE_TYPE; n++) | ||
103 | if (!strcmp(icons[n].name, name)) | ||
104 | return &icons[n]; | ||
105 | |||
106 | return NULL; | ||
107 | } | ||
108 | |||
109 | void | ||
110 | _icon_color_set(icon_properties *i, int r, int g, int b, int a) | ||
111 | { | ||
112 | i->r = r; | ||
113 | i->g = g; | ||
114 | i->b = b; | ||
115 | i->a = a; | ||
116 | evas_object_color_set(i->icon, i->r, i->g, i->b, i->a); | ||
117 | } | ||
118 | |||
119 | |||
120 | static Eina_Bool | ||
121 | _icon_color_set_cb(void *data) | ||
122 | { | ||
123 | #define INC_COLOR(C, NC) \ | ||
124 | do { \ | ||
125 | if (abs(i->C - NC) < COLOR_STEP) \ | ||
126 | i->C = NC; \ | ||
127 | else \ | ||
128 | i->C += ((i->C < NC) ? COLOR_STEP : (-COLOR_STEP)); \ | ||
129 | } while (0) | ||
130 | |||
131 | int n; | ||
132 | icon_properties *icons = data; | ||
133 | icon_properties *i; | ||
134 | |||
135 | for (n = 0; n < N_GESTURE_TYPE; n++) | ||
136 | { | ||
137 | i = &icons[n]; | ||
138 | |||
139 | INC_COLOR(r,INI_R); | ||
140 | INC_COLOR(g,INI_G); | ||
141 | INC_COLOR(b,INI_B); | ||
142 | INC_COLOR(a,INI_A); | ||
143 | |||
144 | /* Change Icon color */ | ||
145 | evas_object_color_set(i->icon, i->r, i->g, i->b, i->a); | ||
146 | } | ||
147 | |||
148 | return ECORE_CALLBACK_RENEW; | ||
149 | } | ||
150 | |||
151 | |||
152 | void | ||
153 | _color_and_icon_set(infra_data *infra, char *name, int n, int max, | ||
154 | int r, int g, int b, int a) | ||
155 | { | ||
156 | icon_properties *i; | ||
157 | int nn = n; | ||
158 | i = _icon_properties_find(infra->icons, name); | ||
159 | if (i) | ||
160 | { | ||
161 | if (n < 1) | ||
162 | nn = 1; | ||
163 | |||
164 | if (n > max) | ||
165 | nn = max; | ||
166 | |||
167 | snprintf(infra->buf, sizeof(infra->buf), | ||
168 | "%s/images/g_layer/%s_%d.png", elm_app_data_dir_get(), i->name, nn); | ||
169 | elm_icon_file_set(i->icon, infra->buf, NULL); | ||
170 | _icon_color_set(i, r, g, b, a); | ||
171 | } | ||
172 | } | ||
173 | |||
174 | /* START - Callbacks for gestures */ | ||
175 | static Evas_Event_Flags | ||
176 | n_finger_tap_start(void *data , void *event_info) | ||
177 | { | ||
178 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
179 | _color_and_icon_set(data, TAP_NAME, p->n, MAX_TAP, START_COLOR); | ||
180 | printf("N tap started <%p> x,y=<%d,%d> count=<%d>\n", | ||
181 | event_info, p->x, p->y, p->n); | ||
182 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
183 | } | ||
184 | |||
185 | static Evas_Event_Flags | ||
186 | n_finger_tap_end(void *data , void *event_info) | ||
187 | { | ||
188 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
189 | |||
190 | printf("N tap ended <%p> x,y=<%d,%d> count=<%d>\n", | ||
191 | event_info, p->x, p->y, p->n); | ||
192 | _color_and_icon_set(data, TAP_NAME, p->n, MAX_TAP, END_COLOR); | ||
193 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
194 | } | ||
195 | |||
196 | static Evas_Event_Flags | ||
197 | n_finger_tap_abort(void *data , void *event_info) | ||
198 | { | ||
199 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
200 | printf("N tap abort\n"); | ||
201 | _color_and_icon_set(data, TAP_NAME, p->n, MAX_TAP, ABORT_COLOR); | ||
202 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
203 | } | ||
204 | |||
205 | static Evas_Event_Flags | ||
206 | n_long_tap_start(void *data , void *event_info) | ||
207 | { | ||
208 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
209 | |||
210 | printf("N long tap started <%p> x,y=<%d,%d> count=<%d>\n", | ||
211 | event_info, p->x, p->y, p->n); | ||
212 | _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, START_COLOR); | ||
213 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
214 | } | ||
215 | |||
216 | static Evas_Event_Flags | ||
217 | n_long_tap_move(void *data , void *event_info) | ||
218 | { | ||
219 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
220 | _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, MOVE_COLOR); | ||
221 | |||
222 | printf("N long tap moved <%p> x,y=<%d,%d> count=<%d>\n", | ||
223 | event_info, p->x, p->y, p->n); | ||
224 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
225 | } | ||
226 | |||
227 | static Evas_Event_Flags | ||
228 | n_long_tap_end(void *data , void *event_info) | ||
229 | { | ||
230 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
231 | |||
232 | printf("N long tap ended <%p> x,y=<%d,%d> count=<%d>\n", | ||
233 | event_info, p->x, p->y, p->n); | ||
234 | _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, END_COLOR); | ||
235 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
236 | } | ||
237 | |||
238 | static Evas_Event_Flags | ||
239 | n_long_tap_abort(void *data , void *event_info) | ||
240 | { | ||
241 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
242 | _color_and_icon_set(data, LONG_TAP_NAME, p->n, MAX_LONG_TAP, ABORT_COLOR); | ||
243 | printf("N long tap abort\n"); | ||
244 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
245 | } | ||
246 | |||
247 | static Evas_Event_Flags | ||
248 | dbl_click_start(void *data , void *event_info) | ||
249 | { | ||
250 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
251 | |||
252 | _color_and_icon_set(data,DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, START_COLOR); | ||
253 | printf("Double click started <%p> x,y=<%d,%d> count=<%d>\n", | ||
254 | event_info, p->x, p->y, p->n); | ||
255 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
256 | } | ||
257 | |||
258 | static Evas_Event_Flags | ||
259 | dbl_click_end(void *data , void *event_info) | ||
260 | { | ||
261 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
262 | _color_and_icon_set(data, DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, END_COLOR); | ||
263 | |||
264 | printf("Double click ended <%p> x,y=<%d,%d> count=<%d>\n", | ||
265 | event_info, p->x, p->y, p->n); | ||
266 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
267 | } | ||
268 | |||
269 | static Evas_Event_Flags | ||
270 | dbl_click_abort(void *data , void *event_info) | ||
271 | { | ||
272 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
273 | _color_and_icon_set(data,DOUBLE_TAP_NAME, p->n, MAX_DOUBLE_TAP, ABORT_COLOR); | ||
274 | |||
275 | printf("Double click abort\n"); | ||
276 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
277 | } | ||
278 | |||
279 | static Evas_Event_Flags | ||
280 | triple_click_start(void *data , void *event_info) | ||
281 | { | ||
282 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
283 | _color_and_icon_set(data,TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, START_COLOR); | ||
284 | |||
285 | printf("Triple click started <%p> x,y=<%d,%d> count=<%d>\n", | ||
286 | event_info, p->x, p->y, p->n); | ||
287 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
288 | } | ||
289 | |||
290 | static Evas_Event_Flags | ||
291 | triple_click_end(void *data , void *event_info) | ||
292 | { | ||
293 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
294 | |||
295 | _color_and_icon_set(data, TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, END_COLOR); | ||
296 | printf("Triple click ended <%p> x,y=<%d,%d> count=<%d>\n", | ||
297 | event_info, p->x, p->y, p->n); | ||
298 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
299 | } | ||
300 | |||
301 | static Evas_Event_Flags | ||
302 | triple_click_abort(void *data , void *event_info) | ||
303 | { | ||
304 | Elm_Gesture_Taps_Info *p = (Elm_Gesture_Taps_Info *) event_info; | ||
305 | _color_and_icon_set(data,TRIPLE_TAP_NAME, p->n, MAX_TRIPLE_TAP, ABORT_COLOR); | ||
306 | |||
307 | printf("Triple click abort\n"); | ||
308 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
309 | } | ||
310 | |||
311 | |||
312 | static Evas_Event_Flags | ||
313 | momentum_start(void *data , void *event_info) | ||
314 | { | ||
315 | Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; | ||
316 | _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, START_COLOR); | ||
317 | |||
318 | printf("momentum started x1,y1=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", | ||
319 | p->x1, p->y1, p->tx, p->ty, p->n); | ||
320 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
321 | } | ||
322 | |||
323 | static Evas_Event_Flags | ||
324 | momentum_end(void *data , void *event_info) | ||
325 | { | ||
326 | Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; | ||
327 | _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, END_COLOR); | ||
328 | printf("momentum ended x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> mx=<%d> my=<%d> n=<%u>\n",p->x1, p->y1, p->x2, p->y2, p->tx, p->ty, p->mx, p->my, p->n); | ||
329 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
330 | } | ||
331 | |||
332 | static Evas_Event_Flags | ||
333 | momentum_abort(void *data , void *event_info) | ||
334 | { | ||
335 | Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; | ||
336 | printf("momentum abort\n"); | ||
337 | _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, ABORT_COLOR); | ||
338 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
339 | } | ||
340 | |||
341 | static Evas_Event_Flags | ||
342 | momentum_move(void *data , void *event_info) | ||
343 | { | ||
344 | Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; | ||
345 | _color_and_icon_set(data, MOMENTUM_NAME, p->n, MAX_MOMENTUM, MOVE_COLOR); | ||
346 | printf("momentum move x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> mx=<%d> my=<%d> n=<%u>\n", p->x1, p->y1, p->x2, p->y2, p->tx, p->ty, p->mx, p->my, p->n); | ||
347 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
348 | } | ||
349 | |||
350 | static Evas_Event_Flags | ||
351 | line_start(void *data , void *event_info) | ||
352 | { | ||
353 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
354 | _color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, START_COLOR); | ||
355 | |||
356 | printf("line started x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.n); | ||
357 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
358 | } | ||
359 | |||
360 | static Evas_Event_Flags | ||
361 | line_move(void *data , void *event_info) | ||
362 | { | ||
363 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
364 | _color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, MOVE_COLOR); | ||
365 | printf("line move x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.n); | ||
366 | |||
367 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
368 | } | ||
369 | |||
370 | static Evas_Event_Flags | ||
371 | line_end(void *data , void *event_info) | ||
372 | { | ||
373 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
374 | _color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, END_COLOR); | ||
375 | printf("line end x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.n); | ||
376 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
377 | } | ||
378 | |||
379 | static Evas_Event_Flags | ||
380 | line_abort(void *data , void *event_info) | ||
381 | { | ||
382 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
383 | _color_and_icon_set(data, LINE_NAME, p->momentum.n, MAX_LINE, ABORT_COLOR); | ||
384 | printf("line abort\n"); | ||
385 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
386 | } | ||
387 | |||
388 | static Evas_Event_Flags | ||
389 | flick_start(void *data , void *event_info) | ||
390 | { | ||
391 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
392 | _color_and_icon_set(data, FLICK_NAME, p->momentum.n, MAX_FLICK, START_COLOR); | ||
393 | |||
394 | printf("flick started x1,y1=<%d,%d> tx,ty=<%u,%u> n=<%u>\n", | ||
395 | p->momentum.x1, p->momentum.y1, p->momentum.tx, | ||
396 | p->momentum.ty, p->momentum.n); | ||
397 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
398 | } | ||
399 | |||
400 | static Evas_Event_Flags | ||
401 | flick_end(void *data , void *event_info) | ||
402 | { | ||
403 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
404 | _color_and_icon_set(data, FLICK_NAME, p->momentum.n, MAX_FLICK, END_COLOR); | ||
405 | |||
406 | printf("flick ended x1,y1=<%d,%d> x2,y2=<%d,%d> tx,ty=<%u,%u> mx=<%d> my=<%d> n=<%u>\n",p->momentum.x1, p->momentum.y1, p->momentum.x2, p->momentum.y2, p->momentum.tx, p->momentum.ty, p->momentum.mx, p->momentum.my, p->momentum.n); | ||
407 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
408 | } | ||
409 | |||
410 | static Evas_Event_Flags | ||
411 | flick_abort(void *data , void *event_info) | ||
412 | { | ||
413 | Elm_Gesture_Line_Info *p = (Elm_Gesture_Line_Info *) event_info; | ||
414 | _color_and_icon_set(data, FLICK_NAME, p->momentum.n, MAX_FLICK, ABORT_COLOR); | ||
415 | printf("flick abort\n"); | ||
416 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
417 | } | ||
418 | |||
419 | static Evas_Event_Flags | ||
420 | zoom_start(void *data , void *event_info) | ||
421 | { | ||
422 | Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info; | ||
423 | _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, START_COLOR); | ||
424 | printf("zoom started <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n", | ||
425 | p->x, p->y, p->zoom, p->radius, p->momentum); | ||
426 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
427 | } | ||
428 | |||
429 | static Evas_Event_Flags | ||
430 | zoom_move(void *data , void *event_info) | ||
431 | { | ||
432 | Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info; | ||
433 | _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, MOVE_COLOR); | ||
434 | printf("zoom move <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n", | ||
435 | p->x, p->y, p->zoom, p->radius, p->momentum); | ||
436 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
437 | } | ||
438 | |||
439 | static Evas_Event_Flags | ||
440 | zoom_end(void *data , void *event_info) | ||
441 | { | ||
442 | Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info; | ||
443 | _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, END_COLOR); | ||
444 | printf("zoom end <%d,%d> zoom=<%f> radius=<%d> momentum=<%f>\n", | ||
445 | p->x, p->y, p->zoom, p->radius, p->momentum); | ||
446 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
447 | } | ||
448 | |||
449 | static Evas_Event_Flags | ||
450 | zoom_abort(void *data , void *event_info __UNUSED__) | ||
451 | { | ||
452 | printf("zoom abort\n"); | ||
453 | _color_and_icon_set(data, ZOOM_NAME, MAX_ZOOM, MAX_ZOOM, ABORT_COLOR); | ||
454 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
455 | } | ||
456 | |||
457 | static Evas_Event_Flags | ||
458 | rotate_start(void *data , void *event_info) | ||
459 | { | ||
460 | Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info; | ||
461 | _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, START_COLOR); | ||
462 | printf("rotate started <%d,%d> base=<%f> angle=<%f> radius=<%d> momentum=<%f>\n", p->x, p->y, p->base_angle, p->angle, p->radius, p->momentum); | ||
463 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
464 | } | ||
465 | |||
466 | static Evas_Event_Flags | ||
467 | rotate_move(void *data , void *event_info) | ||
468 | { | ||
469 | Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info; | ||
470 | _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, MOVE_COLOR); | ||
471 | printf("rotate move <%d,%d> base=<%f> angle=<%f> radius=<%d> momentum=<%f>\n", p->x, p->y, p->base_angle, p->angle, p->radius, p->momentum); | ||
472 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
473 | } | ||
474 | |||
475 | static Evas_Event_Flags | ||
476 | rotate_end(void *data , void *event_info) | ||
477 | { | ||
478 | Elm_Gesture_Rotate_Info *p = (Elm_Gesture_Rotate_Info *) event_info; | ||
479 | _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, END_COLOR); | ||
480 | printf("rotate end <%d,%d> base=<%f> angle=<%f> radius=<%d> momentum=<%f>\n", p->x, p->y, p->base_angle, p->angle, p->radius, p->momentum); | ||
481 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
482 | } | ||
483 | |||
484 | static Evas_Event_Flags | ||
485 | rotate_abort(void *data , void *event_info __UNUSED__) | ||
486 | { | ||
487 | _color_and_icon_set(data, ROTATE_NAME, MAX_ROTATE, MAX_ROTATE, ABORT_COLOR); | ||
488 | printf("rotate abort\n"); | ||
489 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
490 | } | ||
491 | /* END - Callbacks for gestures */ | ||
492 | |||
493 | Evas_Object *create_gesture_box(Evas_Object *win, icon_properties *icons, | ||
494 | int idx, const char *name, const char *lb_txt) | ||
495 | { /* Creates a box with icon and label, later placed in a table */ | ||
496 | Evas_Object *lb, *bx = elm_box_add(win); | ||
497 | char buf[1024]; | ||
498 | |||
499 | elm_box_padding_set(bx, BX_PADDING_X, BX_PADDING_Y); | ||
500 | icons[idx].icon = elm_icon_add(win); | ||
501 | icons[idx].name = name; | ||
502 | snprintf(buf, sizeof(buf), "%s/images/g_layer/%s_1.png", | ||
503 | elm_app_data_dir_get(), icons[idx].name); | ||
504 | elm_icon_file_set(icons[idx].icon, buf, NULL); | ||
505 | elm_icon_resizable_set(icons[idx].icon, 0, 0); | ||
506 | evas_object_size_hint_align_set(icons[idx].icon, 0.5, 0.5); | ||
507 | _icon_color_set(&icons[idx], INI_R, INI_G, INI_B, INI_A); | ||
508 | elm_box_pack_end(bx, icons[idx].icon); | ||
509 | evas_object_show(icons[idx].icon); | ||
510 | |||
511 | lb = elm_label_add(win); | ||
512 | elm_object_text_set(lb, lb_txt); | ||
513 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
514 | evas_object_size_hint_align_set(lb, 0.5, 0.5); | ||
515 | elm_box_pack_end(bx, lb); | ||
516 | evas_object_show(lb); | ||
517 | evas_object_show(bx); | ||
518 | |||
519 | return bx; | ||
520 | } | ||
521 | |||
522 | void | ||
523 | test_gesture_layer2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, | ||
524 | void *event_info __UNUSED__) | ||
525 | { | ||
526 | Evas_Object *win, *tb, *lb, *bx; | ||
527 | Evas_Object *r; /* Gesture layer transparent object */ | ||
528 | Evas_Object *g; /* The Gesture Layer object */ | ||
529 | |||
530 | infra_data *infra = _infra_data_alloc(); | ||
531 | |||
532 | win = elm_win_util_standard_add("table", "Table"); | ||
533 | elm_win_autodel_set(win, EINA_TRUE); | ||
534 | evas_object_smart_callback_add(win, "delete,request", my_win_del, infra); | ||
535 | |||
536 | /* START - Building icons table */ | ||
537 | bx = elm_box_add(win); | ||
538 | tb = elm_table_add(win); | ||
539 | elm_box_pack_end(bx, tb); | ||
540 | elm_win_resize_object_add(win, bx); | ||
541 | evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); | ||
542 | evas_object_size_hint_align_set(tb, 0.5, 0.5); | ||
543 | evas_object_show(tb); | ||
544 | evas_object_show(bx); | ||
545 | |||
546 | /* Box of Tap icon and label */ | ||
547 | bx = create_gesture_box(win, infra->icons, 0, TAP_NAME, "Tap"); | ||
548 | elm_table_pack(tb, bx, 0, 0, 1, 1); | ||
549 | |||
550 | /* Box of Double Tap icon and label */ | ||
551 | bx = create_gesture_box(win, infra->icons, 1, DOUBLE_TAP_NAME, "Double Tap"); | ||
552 | elm_table_pack(tb, bx, 1, 0, 1, 1); | ||
553 | |||
554 | /* Box of Triple Tap icon and label */ | ||
555 | bx = create_gesture_box(win, infra->icons, 2, TRIPLE_TAP_NAME, "Triple Tap"); | ||
556 | elm_table_pack(tb, bx, 2, 0, 1, 1); | ||
557 | |||
558 | /* Box of Long Tap icon and label */ | ||
559 | bx = create_gesture_box(win, infra->icons, 3, LONG_TAP_NAME, "Long Tap"); | ||
560 | elm_table_pack(tb, bx, 3, 0, 1, 1); | ||
561 | |||
562 | /* Box of Momentum icon and label */ | ||
563 | bx = create_gesture_box(win, infra->icons, 4, MOMENTUM_NAME, "Momentum"); | ||
564 | elm_table_pack(tb, bx, 0, 2, 1, 1); | ||
565 | |||
566 | /* Box of Line icon and label */ | ||
567 | bx = create_gesture_box(win, infra->icons, 5, LINE_NAME, "Line"); | ||
568 | elm_table_pack(tb, bx, 1, 2, 1, 1); | ||
569 | |||
570 | /* Box of Flick icon and label */ | ||
571 | bx = create_gesture_box(win, infra->icons, 6, FLICK_NAME, "Flick"); | ||
572 | elm_table_pack(tb, bx, 2, 2, 1, 1); | ||
573 | |||
574 | /* Box of Zoom icon and label */ | ||
575 | bx = create_gesture_box(win, infra->icons, 7, ZOOM_NAME, "Zoom"); | ||
576 | elm_table_pack(tb, bx, 0, 3, 1, 1); | ||
577 | |||
578 | /* Box of Rotate icon and label */ | ||
579 | bx = create_gesture_box(win, infra->icons, 8, ROTATE_NAME, "Rotate"); | ||
580 | elm_table_pack(tb, bx, 1, 3, 1, 1); | ||
581 | |||
582 | |||
583 | /* Legend of gestures - states */ | ||
584 | lb = elm_label_add(win); | ||
585 | elm_object_text_set(lb, "<b>Gesture States</b>"); | ||
586 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
587 | evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
588 | elm_table_pack(tb, lb, 0, 6, 4, 2); | ||
589 | evas_object_show(lb); | ||
590 | |||
591 | r = evas_object_rectangle_add(evas_object_evas_get(win)); | ||
592 | evas_object_resize(r, 64, 64); | ||
593 | evas_object_color_set(r, INI_R, INI_G, INI_B, INI_A); | ||
594 | evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0); | ||
595 | evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
596 | elm_table_pack(tb, r, 0, 7, 1, 1); | ||
597 | evas_object_show(r); | ||
598 | |||
599 | lb = elm_label_add(win); | ||
600 | elm_object_text_set(lb, "Not Started"); | ||
601 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
602 | evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
603 | elm_table_pack(tb, lb, 1, 7, 3, 1); | ||
604 | evas_object_show(lb); | ||
605 | |||
606 | r = evas_object_rectangle_add(evas_object_evas_get(win)); | ||
607 | evas_object_resize(r, 64, 64); | ||
608 | evas_object_color_set(r, START_COLOR); | ||
609 | evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0); | ||
610 | evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
611 | elm_table_pack(tb, r, 0, 8, 1, 1); | ||
612 | evas_object_show(r); | ||
613 | |||
614 | lb = elm_label_add(win); | ||
615 | elm_object_text_set(lb, "Gesture START"); | ||
616 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
617 | evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
618 | elm_table_pack(tb, lb, 1, 8, 3, 1); | ||
619 | evas_object_show(lb); | ||
620 | |||
621 | r = evas_object_rectangle_add(evas_object_evas_get(win)); | ||
622 | evas_object_resize(r, 64, 64); | ||
623 | evas_object_color_set(r, MOVE_COLOR); | ||
624 | evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0); | ||
625 | evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
626 | elm_table_pack(tb, r, 0, 9, 1, 1); | ||
627 | evas_object_show(r); | ||
628 | |||
629 | lb = elm_label_add(win); | ||
630 | elm_object_text_set(lb, "Gesture MOVE"); | ||
631 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
632 | evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
633 | elm_table_pack(tb, lb, 1, 9, 3, 1); | ||
634 | evas_object_show(lb); | ||
635 | |||
636 | r = evas_object_rectangle_add(evas_object_evas_get(win)); | ||
637 | evas_object_resize(r, 64, 64); | ||
638 | evas_object_color_set(r, END_COLOR); | ||
639 | evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0); | ||
640 | evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
641 | elm_table_pack(tb, r, 0, 10, 1, 1); | ||
642 | evas_object_show(r); | ||
643 | |||
644 | lb = elm_label_add(win); | ||
645 | elm_object_text_set(lb, "Gesture END"); | ||
646 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
647 | evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
648 | elm_table_pack(tb, lb, 1, 10, 3, 1); | ||
649 | evas_object_show(lb); | ||
650 | |||
651 | r = evas_object_rectangle_add(evas_object_evas_get(win)); | ||
652 | evas_object_resize(r, 64, 64); | ||
653 | evas_object_color_set(r, ABORT_COLOR); | ||
654 | evas_object_size_hint_weight_set(r, EVAS_HINT_EXPAND, 0.0); | ||
655 | evas_object_size_hint_align_set(r, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
656 | elm_table_pack(tb, r, 0, 11, 1, 1); | ||
657 | evas_object_show(r); | ||
658 | |||
659 | lb = elm_label_add(win); | ||
660 | elm_object_text_set(lb, "Gesture ABORT"); | ||
661 | evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); | ||
662 | evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL); | ||
663 | elm_table_pack(tb, lb, 1, 11, 3, 1); | ||
664 | |||
665 | |||
666 | elm_table_padding_set(tb, TB_PADDING_X, TB_PADDING_Y); | ||
667 | evas_object_show(lb); | ||
668 | /* END - Building icons table */ | ||
669 | |||
670 | /* Gesture layer transparent object */ | ||
671 | r = evas_object_rectangle_add(evas_object_evas_get(win)); | ||
672 | evas_object_color_set(r, 0, 0, 0, 0); | ||
673 | elm_win_resize_object_add(win, r); | ||
674 | g = elm_gesture_layer_add(r); | ||
675 | elm_gesture_layer_attach(g, r); | ||
676 | evas_object_show(r); | ||
677 | |||
678 | /* START - Setting gestures callbacks */ | ||
679 | #if 1 | ||
680 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS, | ||
681 | ELM_GESTURE_STATE_START, triple_click_start, infra); | ||
682 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS, | ||
683 | ELM_GESTURE_STATE_END, triple_click_end, infra); | ||
684 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TRIPLE_TAPS, | ||
685 | ELM_GESTURE_STATE_ABORT, triple_click_abort, infra); | ||
686 | #endif | ||
687 | |||
688 | #if 1 | ||
689 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS, | ||
690 | ELM_GESTURE_STATE_START, dbl_click_start, infra); | ||
691 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS, | ||
692 | ELM_GESTURE_STATE_END, dbl_click_end, infra); | ||
693 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_DOUBLE_TAPS, | ||
694 | ELM_GESTURE_STATE_ABORT, dbl_click_abort, infra); | ||
695 | #endif | ||
696 | |||
697 | #if 1 | ||
698 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS, | ||
699 | ELM_GESTURE_STATE_START, n_finger_tap_start, infra); | ||
700 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS, | ||
701 | ELM_GESTURE_STATE_END, n_finger_tap_end, infra); | ||
702 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_TAPS, | ||
703 | ELM_GESTURE_STATE_ABORT, n_finger_tap_abort, infra); | ||
704 | #endif | ||
705 | |||
706 | #if 1 | ||
707 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS, | ||
708 | ELM_GESTURE_STATE_START, n_long_tap_start, infra); | ||
709 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS, | ||
710 | ELM_GESTURE_STATE_MOVE, n_long_tap_move, infra); | ||
711 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS, | ||
712 | ELM_GESTURE_STATE_END, n_long_tap_end, infra); | ||
713 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LONG_TAPS, | ||
714 | ELM_GESTURE_STATE_ABORT, n_long_tap_abort, infra); | ||
715 | #endif | ||
716 | |||
717 | #if 1 | ||
718 | elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM, | ||
719 | ELM_GESTURE_STATE_START, momentum_start, infra); | ||
720 | elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM, | ||
721 | ELM_GESTURE_STATE_END, momentum_end, infra); | ||
722 | elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM, | ||
723 | ELM_GESTURE_STATE_ABORT, momentum_abort, infra); | ||
724 | elm_gesture_layer_cb_set(g, ELM_GESTURE_MOMENTUM, | ||
725 | ELM_GESTURE_STATE_MOVE, momentum_move, infra); | ||
726 | #endif | ||
727 | |||
728 | #if 1 | ||
729 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES, | ||
730 | ELM_GESTURE_STATE_START, line_start, infra); | ||
731 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES, | ||
732 | ELM_GESTURE_STATE_MOVE, line_move, infra); | ||
733 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES, | ||
734 | ELM_GESTURE_STATE_END, line_end, infra); | ||
735 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_LINES, | ||
736 | ELM_GESTURE_STATE_ABORT, line_abort, infra); | ||
737 | #endif | ||
738 | |||
739 | #if 1 | ||
740 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS, | ||
741 | ELM_GESTURE_STATE_START, flick_start, infra); | ||
742 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS, | ||
743 | ELM_GESTURE_STATE_END, flick_end, infra); | ||
744 | elm_gesture_layer_cb_set(g, ELM_GESTURE_N_FLICKS, | ||
745 | ELM_GESTURE_STATE_ABORT, flick_abort, infra); | ||
746 | #endif | ||
747 | |||
748 | #if 1 | ||
749 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM, | ||
750 | ELM_GESTURE_STATE_START, zoom_start, infra); | ||
751 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM, | ||
752 | ELM_GESTURE_STATE_END, zoom_end, infra); | ||
753 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM, | ||
754 | ELM_GESTURE_STATE_ABORT, zoom_abort, infra); | ||
755 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ZOOM, | ||
756 | ELM_GESTURE_STATE_MOVE, zoom_move, infra); | ||
757 | /* elm_gesture_layer_zoom_step_set(g, 0.2); */ | ||
758 | #endif | ||
759 | |||
760 | #if 1 | ||
761 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE, | ||
762 | ELM_GESTURE_STATE_START, rotate_start, infra); | ||
763 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE, | ||
764 | ELM_GESTURE_STATE_END, rotate_end, infra); | ||
765 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE, | ||
766 | ELM_GESTURE_STATE_ABORT, rotate_abort, infra); | ||
767 | elm_gesture_layer_cb_set(g, ELM_GESTURE_ROTATE, | ||
768 | ELM_GESTURE_STATE_MOVE, rotate_move, infra); | ||
769 | /* elm_gesture_layer_rotate_step_set(g, 5.2); */ | ||
770 | #endif | ||
771 | /* END - Setting gestures callbacks */ | ||
772 | |||
773 | /* Update color state 20 times a second */ | ||
774 | infra->colortimer = ecore_timer_add(0.05, _icon_color_set_cb, infra->icons); | ||
775 | |||
776 | evas_object_show(win); | ||
777 | } | ||
778 | #endif | ||