Merge "[Password]: New design based changes, a new style removed password mode contro...
[framework/uifw/elementary.git] / src / bin / test_transit.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 typedef struct _Custom_Effect Custom_Effect;
8
9 struct _Custom_Effect
10 {
11    struct _size
12      {
13         Evas_Coord w, h;
14      } from, to;
15 };
16
17 static void
18 _custom_op(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress)
19 {
20    if (!effect) return;
21    Evas_Coord w, h;
22    Evas_Object *obj;
23    const Eina_List *elist;
24
25    Custom_Effect *custom_effect = effect;
26    const Eina_List *objs = elm_transit_objects_get(transit);
27
28    if (progress < 0.5)
29      {
30         h = custom_effect->from.h + (custom_effect->to.h * progress * 2);
31         w = custom_effect->from.w;
32      }
33    else
34      {
35         h = custom_effect->from.h + custom_effect->to.h;
36         w = custom_effect->from.w + \
37             (custom_effect->to.w * (progress - 0.5) * 2);
38      }
39
40    EINA_LIST_FOREACH(objs, elist, obj)
41       evas_object_resize(obj, w, h);
42
43 }
44
45 static Elm_Transit_Effect *
46 _custom_context_new(Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h)
47 {
48    Custom_Effect *custom_effect;
49
50    custom_effect = calloc(1, sizeof(Custom_Effect));
51    if (!custom_effect) return NULL;
52
53    custom_effect->from.w = from_w;
54    custom_effect->from.h = from_h;
55    custom_effect->to.w = to_w - from_w;
56    custom_effect->to.h = to_h - from_h;
57
58    return custom_effect;
59 }
60
61 static void
62 _custom_context_free(Elm_Transit_Effect *effect, Elm_Transit *transit __UNUSED__)
63 {
64    Custom_Effect *custom_effect = effect;
65    free(custom_effect);
66 }
67
68 static void
69 _transit_rotation_translation_color(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
70 {
71    Elm_Transit *trans;
72
73    trans = elm_transit_add();
74    elm_transit_object_add(trans, obj);
75    elm_transit_auto_reverse_set(trans, EINA_TRUE);
76    elm_transit_repeat_times_set(trans, 2);
77
78    /* Translation Effect */
79    elm_transit_effect_translation_add(trans, -70.0, -150.0, 70.0, 150.0);
80
81    /* Color Effect */
82    elm_transit_effect_color_add(trans, 100, 255, 100, 255, 200, 50, 200, 50);
83
84    /* Rotation Effect */
85    elm_transit_effect_rotation_add(trans, 0.0, 135.0);
86
87    elm_transit_duration_set(trans, 5.0);
88    elm_transit_go(trans);
89 }
90
91 static void
92 _transit_wipe(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
93 {
94    Elm_Transit *trans;
95
96    trans = elm_transit_add();
97    elm_transit_object_add(trans, obj);
98    elm_transit_auto_reverse_set(trans, EINA_TRUE);
99
100    elm_transit_effect_wipe_add(trans,
101                                ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
102                                ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
103
104    elm_transit_duration_set(trans, 5.0);
105    elm_transit_go(trans);
106 }
107
108 static void
109 _transit_image_animation(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
110 {
111    Eina_List *images = NULL;
112    char buf[PATH_MAX];
113    Elm_Transit *trans;
114    Evas_Object *ic = data;
115
116    snprintf(buf, sizeof(buf), "%s/images/icon_19.png", PACKAGE_DATA_DIR);
117    images = eina_list_append(images, eina_stringshare_add(buf));
118
119    snprintf(buf, sizeof(buf), "%s/images/icon_00.png", PACKAGE_DATA_DIR);
120    images = eina_list_append(images, eina_stringshare_add(buf));
121
122    snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
123    images = eina_list_append(images, eina_stringshare_add(buf));
124
125    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
126    images = eina_list_append(images, eina_stringshare_add(buf));
127
128    trans = elm_transit_add();
129    elm_transit_object_add(trans, ic);
130
131    elm_transit_effect_image_animation_add(trans, images);
132
133    elm_transit_duration_set(trans, 5.0);
134    elm_transit_go(trans);
135 }
136
137 static void
138 _transit_resizing(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
139 {
140    Elm_Transit *trans;
141
142    trans = elm_transit_add();
143    elm_transit_object_add(trans, obj);
144
145    elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
146
147    elm_transit_duration_set(trans, 5.0);
148    elm_transit_go(trans);
149 }
150
151 static void
152 _transit_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
153 {
154    Elm_Transit *trans;
155    Evas_Object *obj2 = data;
156
157    trans = elm_transit_add();
158    elm_transit_object_add(trans, obj);
159    elm_transit_object_add(trans, obj2);
160
161    elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
162
163    elm_transit_duration_set(trans, 5.0);
164    elm_transit_go(trans);
165 }
166
167 static void
168 _transit_zoom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
169 {
170    Elm_Transit *trans;
171
172    trans = elm_transit_add();
173    elm_transit_object_add(trans, obj);
174
175    elm_transit_effect_zoom_add(trans, 1.0, 3.0);
176
177    elm_transit_duration_set(trans, 5.0);
178    elm_transit_go(trans);
179 }
180
181 static void
182 _transit_blend(void *data, Evas_Object *obj, void *event_info __UNUSED__)
183 {
184    Elm_Transit *trans;
185    Evas_Object *obj2 = data;
186
187    trans = elm_transit_add();
188    elm_transit_object_add(trans, obj);
189    elm_transit_object_add(trans, obj2);
190
191    elm_transit_effect_blend_add(trans);
192
193    elm_transit_duration_set(trans, 5.0);
194    elm_transit_go(trans);
195 }
196
197 static void
198 _transit_fade(void *data, Evas_Object *obj, void *event_info __UNUSED__)
199 {
200    Elm_Transit *trans;
201    Evas_Object *obj2 = data;
202
203    trans = elm_transit_add();
204    elm_transit_object_add(trans, obj);
205    elm_transit_object_add(trans, obj2);
206
207    elm_transit_effect_fade_add(trans);
208
209    elm_transit_duration_set(trans, 5.0);
210    elm_transit_go(trans);
211 }
212
213 static void
214 _transit_resizable_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
215 {
216    Elm_Transit *trans;
217    Evas_Object *obj2 = data;
218
219    trans = elm_transit_add();
220    elm_transit_object_add(trans, obj);
221    elm_transit_object_add(trans, obj2);
222
223    elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
224
225    elm_transit_duration_set(trans, 5.0);
226    elm_transit_go(trans);
227 }
228
229 /* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
230 void
231 test_transit(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
232 {
233    Evas_Object *win, *bg, *bx, *bt, *ic;
234    char buf[PATH_MAX];
235
236    win = elm_win_add(NULL, "transit", ELM_WIN_BASIC);
237    elm_win_title_set(win, "Transit");
238    elm_win_autodel_set(win, EINA_TRUE);
239
240    bg = elm_bg_add(win);
241    elm_win_resize_object_add(win, bg);
242    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
243    evas_object_show(bg);
244
245    bx = elm_box_add(win);
246    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
247    elm_win_resize_object_add(win, bx);
248    evas_object_size_hint_min_set(bx, 318, 318);
249    evas_object_show(bx);
250
251    ic = elm_icon_add(win);
252    snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
253    elm_icon_file_set(ic, buf, NULL);
254    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
255
256    bt = elm_button_add(win);
257    elm_button_label_set(bt, "ImageAnimation Effect");
258    elm_button_icon_set(bt, ic);
259    elm_box_pack_end(bx, bt);
260    evas_object_show(bt);
261    evas_object_show(ic);
262    evas_object_smart_callback_add(bt, "clicked", _transit_image_animation, ic);
263
264    bt = elm_button_add(win);
265    elm_button_label_set(bt, "Color, Rotation and Translation");
266    elm_box_pack_end(bx, bt);
267    evas_object_show(bt);
268    evas_object_smart_callback_add(bt, "clicked",
269                                   _transit_rotation_translation_color, NULL);
270
271    bt = elm_button_add(win);
272    elm_button_label_set(bt, "Wipe Effect");
273    elm_box_pack_end(bx, bt);
274    evas_object_show(bt);
275    evas_object_smart_callback_add(bt, "clicked", _transit_wipe, NULL);
276
277    evas_object_show(win);
278 }
279
280 /* Resizing Effect */
281 void
282 test_transit2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
283 {
284    Evas_Object *win, *bg, *bt;
285
286    win = elm_win_add(NULL, "transit2", ELM_WIN_BASIC);
287    elm_win_title_set(win, "Transit 2");
288    elm_win_autodel_set(win, EINA_TRUE);
289    evas_object_resize(win, 400, 400);
290
291    bg = elm_bg_add(win);
292    elm_win_resize_object_add(win, bg);
293    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
294    evas_object_show(bg);
295
296    bt = elm_button_add(win);
297    elm_button_label_set(bt, "Resizing Effect");
298    evas_object_show(bt);
299    evas_object_move(bt, 50, 100);
300    evas_object_resize(bt, 100, 50);
301    evas_object_smart_callback_add(bt, "clicked", _transit_resizing, NULL);
302
303    evas_object_show(win);
304 }
305
306 /* Flip Effect */
307 void
308 test_transit3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
309 {
310    Evas_Object *win, *bg, *bt, *bt2;
311
312    win = elm_win_add(NULL, "transit3", ELM_WIN_BASIC);
313    elm_win_title_set(win, "Transit 3");
314    elm_win_autodel_set(win, EINA_TRUE);
315    evas_object_resize(win, 300, 300);
316
317    bg = elm_bg_add(win);
318    elm_win_resize_object_add(win, bg);
319    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
320    evas_object_show(bg);
321
322    bt = elm_button_add(win);
323    elm_button_label_set(bt, "Front Button - Flip Effect");
324    evas_object_show(bt);
325    evas_object_move(bt, 50, 50);
326    evas_object_resize(bt, 200, 200);
327
328    bt2 = elm_button_add(win);
329    elm_button_label_set(bt2, "Back Button - Flip Effect");
330    evas_object_move(bt2, 50, 50);
331    evas_object_resize(bt2, 200, 200);
332
333    evas_object_show(win);
334
335    evas_object_smart_callback_add(bt, "clicked", _transit_flip, bt2);
336    evas_object_smart_callback_add(bt2, "clicked", _transit_flip, bt);
337 }
338
339 /* Zoom Effect */
340 void
341 test_transit4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
342 {
343    Evas_Object *win, *bg, *bt;
344
345    win = elm_win_add(NULL, "transit4", ELM_WIN_BASIC);
346    elm_win_title_set(win, "Transit 4");
347    elm_win_autodel_set(win, EINA_TRUE);
348    evas_object_resize(win, 300, 300);
349
350    bg = elm_bg_add(win);
351    elm_win_resize_object_add(win, bg);
352    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
353    evas_object_show(bg);
354
355    bt = elm_button_add(win);
356    elm_button_label_set(bt, "Zoom Effect");
357    evas_object_resize(bt, 100, 50);
358    evas_object_move(bt, 100, 125);
359    evas_object_show(bt);
360
361    evas_object_smart_callback_add(bt, "clicked", _transit_zoom, NULL);
362
363    evas_object_show(win);
364 }
365
366 /* Blend Effect */
367 void
368 test_transit5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
369 {
370    Evas_Object *win, *bg, *bt, *bt2, *ic;
371
372    win = elm_win_add(NULL, "transit5", ELM_WIN_BASIC);
373    elm_win_title_set(win, "Transit 5");
374    elm_win_autodel_set(win, EINA_TRUE);
375    evas_object_resize(win, 300, 300);
376
377    bg = elm_bg_add(win);
378    elm_win_resize_object_add(win, bg);
379    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
380    evas_object_show(bg);
381
382    ic = elm_icon_add(win);
383    elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_01.jpg", NULL);
384    evas_object_size_hint_max_set(ic, 50, 50);
385
386    bt = elm_button_add(win);
387    elm_button_icon_set(bt, ic);
388    elm_button_label_set(bt, "Before Button - Blend Effect");
389    evas_object_move(bt, 25, 125);
390    evas_object_resize(bt, 250, 50);
391    evas_object_show(bt);
392
393    ic = elm_icon_add(win);
394    elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_02.jpg", NULL);
395    evas_object_size_hint_max_set(ic, 50, 50);
396
397    bt2 = elm_button_add(win);
398    elm_button_icon_set(bt2, ic);
399    elm_button_label_set(bt2, "After Button - Blend Effect");
400    evas_object_move(bt2, 25, 125);
401    evas_object_resize(bt2, 250, 50);
402
403    evas_object_show(win);
404
405    evas_object_smart_callback_add(bt, "clicked", _transit_blend, bt2);
406    evas_object_smart_callback_add(bt2, "clicked", _transit_blend, bt);
407 }
408
409 /* Fade Effect */
410 void
411 test_transit6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
412 {
413    Evas_Object *win, *bg, *bt, *bt2, *ic;
414
415    win = elm_win_add(NULL, "transit6", ELM_WIN_BASIC);
416    elm_win_title_set(win, "Transit 6");
417    elm_win_autodel_set(win, EINA_TRUE);
418    evas_object_resize(win, 300, 300);
419
420    bg = elm_bg_add(win);
421    elm_win_resize_object_add(win, bg);
422    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
423    evas_object_show(bg);
424
425    ic = elm_icon_add(win);
426    elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_01.jpg", NULL);
427    evas_object_size_hint_max_set(ic, 50, 50);
428
429    bt = elm_button_add(win);
430    elm_button_icon_set(bt, ic);
431    elm_button_label_set(bt, "Before Button - Fade Effect");
432    evas_object_move(bt, 25, 125);
433    evas_object_resize(bt, 250, 50);
434    evas_object_show(bt);
435
436    ic = elm_icon_add(win);
437    elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_02.jpg", NULL);
438    evas_object_size_hint_max_set(ic, 50, 50);
439
440    bt2 = elm_button_add(win);
441    elm_button_icon_set(bt2, ic);
442    elm_button_label_set(bt2, "After Button - Fade Effect");
443    evas_object_move(bt2, 25, 125);
444    evas_object_resize(bt2, 250, 50);
445
446    evas_object_show(win);
447
448    evas_object_smart_callback_add(bt, "clicked", _transit_fade, bt2);
449    evas_object_smart_callback_add(bt2, "clicked", _transit_fade, bt);
450 }
451
452 /* Resizable Flip Effect */
453 void
454 test_transit7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
455 {
456    Evas_Object *win, *bg, *bt, *bt2;
457
458    win = elm_win_add(NULL, "transit7", ELM_WIN_BASIC);
459    elm_win_title_set(win, "Transit 7");
460    elm_win_autodel_set(win, EINA_TRUE);
461    evas_object_resize(win, 400, 400);
462
463    bg = elm_bg_add(win);
464    elm_win_resize_object_add(win, bg);
465    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
466    evas_object_show(bg);
467
468    bt = elm_button_add(win);
469    elm_button_label_set(bt, "Front Button - Resizable Flip Effect");
470    evas_object_show(bt);
471    evas_object_move(bt, 50, 100);
472    evas_object_resize(bt, 250, 30);
473
474    bt2 = elm_button_add(win);
475    elm_button_label_set(bt2, "Back Button - Resizable Flip Effect");
476    evas_object_move(bt2, 50, 100);
477    evas_object_resize(bt2, 300, 200);
478
479    evas_object_show(win);
480
481    evas_object_smart_callback_add(bt, "clicked", _transit_resizable_flip, bt2);
482    evas_object_smart_callback_add(bt2, "clicked", _transit_resizable_flip, bt);
483 }
484
485 /* Custom Effect */
486 void
487 test_transit8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
488 {
489    Evas_Object *win, *bg, *bt;
490    Elm_Transit *trans;
491    Elm_Transit_Effect *effect_context;
492
493    win = elm_win_add(NULL, "transit8", ELM_WIN_BASIC);
494    elm_win_title_set(win, "Transit 8");
495    elm_win_autodel_set(win, EINA_TRUE);
496    evas_object_resize(win, 400, 400);
497    evas_object_show(win);
498
499    bg = elm_bg_add(win);
500    elm_win_resize_object_add(win, bg);
501    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
502    evas_object_show(bg);
503
504    bt = elm_button_add(win);
505    elm_button_label_set(bt, "Button - Custom Effect");
506    evas_object_show(bt);
507    evas_object_move(bt, 50, 50);
508    evas_object_resize(bt, 150, 150);
509
510    /* Adding Transit */
511    trans = elm_transit_add();
512    elm_transit_auto_reverse_set(trans, EINA_TRUE);
513    elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
514    effect_context = _custom_context_new(150, 150, 50, 50);
515    elm_transit_object_add(trans, bt);
516    elm_transit_effect_add(trans,
517                           _custom_op, effect_context,
518                           _custom_context_free);
519    elm_transit_duration_set(trans, 5.0);
520    elm_transit_repeat_times_set(trans, -1);
521    elm_transit_go(trans);
522 }
523
524 /* Chain Transit Effect */
525 void
526 test_transit9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
527 {
528    Evas_Object *win, *bg, *bt, *bt2, *bt3, *bt4;
529    Elm_Transit *trans, *trans2, *trans3, *trans4;
530
531    win = elm_win_add(NULL, "transit9", ELM_WIN_BASIC);
532    elm_win_title_set(win, "Transit 9");
533    elm_win_autodel_set(win, EINA_TRUE);
534    evas_object_resize(win, 400, 400);
535    evas_object_show(win);
536
537    bg = elm_bg_add(win);
538    elm_win_resize_object_add(win, bg);
539    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
540    evas_object_show(bg);
541
542    bt = elm_button_add(win);
543    elm_button_label_set(bt, "Chain 1");
544    evas_object_resize(bt, 100, 100);
545    evas_object_move(bt, 0, 0);
546    evas_object_show(bt);
547
548    bt2 = elm_button_add(win);
549    elm_button_label_set(bt2, "Chain 2");
550    evas_object_resize(bt2, 100, 100);
551    evas_object_move(bt2, 300, 0);
552    evas_object_show(bt2);
553
554    bt3 = elm_button_add(win);
555    elm_button_label_set(bt3, "Chain 3");
556    evas_object_resize(bt3, 100, 100);
557    evas_object_move(bt3, 300, 300);
558    evas_object_show(bt3);
559
560    bt4 = elm_button_add(win);
561    elm_button_label_set(bt4, "Chain 4");
562    evas_object_resize(bt4, 100, 100);
563    evas_object_move(bt4, 0, 300);
564    evas_object_show(bt4);
565
566    trans = elm_transit_add();
567    elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
568    elm_transit_effect_translation_add(trans, 0, 0, 300, 0);
569    elm_transit_object_add(trans, bt);
570    elm_transit_duration_set(trans, 1);
571    elm_transit_objects_final_state_keep_set(trans, EINA_TRUE);
572    elm_transit_go(trans);
573
574    trans2 = elm_transit_add();
575    elm_transit_tween_mode_set(trans2, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
576    elm_transit_effect_translation_add(trans2, 0, 0, 0, 300);
577    elm_transit_object_add(trans2, bt2);
578    elm_transit_duration_set(trans2, 1);
579    elm_transit_objects_final_state_keep_set(trans2, EINA_TRUE);
580    elm_transit_chain_transit_add(trans, trans2);
581
582    trans3 = elm_transit_add();
583    elm_transit_tween_mode_set(trans3, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
584    elm_transit_effect_translation_add(trans3, 0, 0, -300, 0);
585    elm_transit_object_add(trans3, bt3);
586    elm_transit_duration_set(trans3, 1);
587    elm_transit_objects_final_state_keep_set(trans3, EINA_TRUE);
588    elm_transit_chain_transit_add(trans2, trans3);
589
590    trans4 = elm_transit_add();
591    elm_transit_tween_mode_set(trans4, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
592    elm_transit_effect_translation_add(trans4, 0, 0, 0, -300);
593    elm_transit_object_add(trans4, bt4);
594    elm_transit_duration_set(trans4, 1);
595    elm_transit_objects_final_state_keep_set(trans4, EINA_TRUE);
596    elm_transit_chain_transit_add(trans3, trans4);
597 }
598
599 #endif