1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
7 typedef struct _Custom_Effect Custom_Effect;
18 _custom_op(Elm_Transit_Effect *effect, Elm_Transit *transit, double progress)
23 const Eina_List *elist;
25 Custom_Effect *custom_effect = effect;
26 const Eina_List *objs = elm_transit_objects_get(transit);
30 h = custom_effect->from.h + (custom_effect->to.h * progress * 2);
31 w = custom_effect->from.w;
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);
40 EINA_LIST_FOREACH(objs, elist, obj)
41 evas_object_resize(obj, w, h);
44 static Elm_Transit_Effect *
45 _custom_context_new(Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h)
47 Custom_Effect *custom_effect;
49 custom_effect = calloc(1, sizeof(Custom_Effect));
50 if (!custom_effect) return NULL;
52 custom_effect->from.w = from_w;
53 custom_effect->from.h = from_h;
54 custom_effect->to.w = to_w - from_w;
55 custom_effect->to.h = to_h - from_h;
61 _custom_context_free(Elm_Transit_Effect *effect, Elm_Transit *transit __UNUSED__)
63 Custom_Effect *custom_effect = effect;
68 _transit_rotation_translation_color(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
72 trans = elm_transit_add();
73 elm_transit_object_add(trans, obj);
74 elm_transit_auto_reverse_set(trans, EINA_TRUE);
75 elm_transit_repeat_times_set(trans, 2);
77 /* Translation Effect */
78 elm_transit_effect_translation_add(trans, -70.0, -150.0, 70.0, 150.0);
81 elm_transit_effect_color_add(trans, 100, 255, 100, 255, 200, 50, 200, 50);
84 elm_transit_effect_rotation_add(trans, 0.0, 135.0);
86 elm_transit_duration_set(trans, 5.0);
87 elm_transit_go(trans);
91 _transit_wipe(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
95 trans = elm_transit_add();
96 elm_transit_object_add(trans, obj);
97 elm_transit_auto_reverse_set(trans, EINA_TRUE);
99 elm_transit_effect_wipe_add(trans,
100 ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
101 ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
103 elm_transit_duration_set(trans, 5.0);
104 elm_transit_go(trans);
108 _transit_del_cb(void *data, Elm_Transit *transit __UNUSED__)
110 evas_object_freeze_events_set(data, EINA_FALSE);
114 _transit_image_animation(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
116 Eina_List *images = NULL;
119 Evas_Object *ic = data;
121 snprintf(buf, sizeof(buf), "%s/images/icon_19.png", elm_app_data_dir_get());
122 images = eina_list_append(images, eina_stringshare_add(buf));
124 snprintf(buf, sizeof(buf), "%s/images/icon_00.png", elm_app_data_dir_get());
125 images = eina_list_append(images, eina_stringshare_add(buf));
127 snprintf(buf, sizeof(buf), "%s/images/icon_11.png", elm_app_data_dir_get());
128 images = eina_list_append(images, eina_stringshare_add(buf));
130 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
131 images = eina_list_append(images, eina_stringshare_add(buf));
133 trans = elm_transit_add();
134 elm_transit_del_cb_set(trans, _transit_del_cb, obj);
135 elm_transit_object_add(trans, ic);
136 elm_transit_effect_image_animation_add(trans, images);
137 elm_transit_duration_set(trans, 5.0);
138 elm_transit_go(trans);
140 evas_object_freeze_events_set(obj, EINA_TRUE);
144 _transit_resizing(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
148 trans = elm_transit_add();
149 elm_transit_object_add(trans, obj);
151 elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
153 elm_transit_duration_set(trans, 5.0);
154 elm_transit_go(trans);
158 _transit_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
161 Evas_Object *obj2 = data;
163 trans = elm_transit_add();
164 elm_transit_object_add(trans, obj);
165 elm_transit_object_add(trans, obj2);
167 elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
169 elm_transit_duration_set(trans, 5.0);
170 elm_transit_go(trans);
174 _transit_zoom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
178 trans = elm_transit_add();
179 elm_transit_object_add(trans, obj);
181 elm_transit_effect_zoom_add(trans, 1.0, 3.0);
183 elm_transit_duration_set(trans, 5.0);
184 elm_transit_go(trans);
188 _transit_blend(void *data, Evas_Object *obj, void *event_info __UNUSED__)
191 Evas_Object *obj2 = data;
193 trans = elm_transit_add();
194 elm_transit_object_add(trans, obj);
195 elm_transit_object_add(trans, obj2);
197 elm_transit_effect_blend_add(trans);
199 elm_transit_duration_set(trans, 5.0);
200 elm_transit_go(trans);
204 _transit_fade(void *data, Evas_Object *obj, void *event_info __UNUSED__)
207 Evas_Object *obj2 = data;
209 trans = elm_transit_add();
210 elm_transit_object_add(trans, obj);
211 elm_transit_object_add(trans, obj2);
213 elm_transit_effect_fade_add(trans);
215 elm_transit_duration_set(trans, 5.0);
216 elm_transit_go(trans);
220 _transit_resizable_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
223 Evas_Object *obj2 = data;
225 trans = elm_transit_add();
226 elm_transit_object_add(trans, obj);
227 elm_transit_object_add(trans, obj2);
229 elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
231 elm_transit_duration_set(trans, 5.0);
232 elm_transit_go(trans);
235 /* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
237 test_transit(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
239 Evas_Object *win, *bg, *bx, *bt, *ic;
242 win = elm_win_add(NULL, "transit", ELM_WIN_BASIC);
243 elm_win_title_set(win, "Transit");
244 elm_win_autodel_set(win, EINA_TRUE);
246 bg = elm_bg_add(win);
247 elm_win_resize_object_add(win, bg);
248 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
249 evas_object_show(bg);
251 bx = elm_box_add(win);
252 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
253 elm_win_resize_object_add(win, bx);
254 evas_object_size_hint_min_set(bx, 318, 318);
255 evas_object_show(bx);
257 ic = elm_icon_add(win);
258 snprintf(buf, sizeof(buf), "%s/images/icon_11.png", elm_app_data_dir_get());
259 elm_icon_file_set(ic, buf, NULL);
260 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
262 bt = elm_button_add(win);
263 elm_object_text_set(bt, "ImageAnimation Effect");
264 elm_object_part_content_set(bt, "icon", ic);
265 elm_box_pack_end(bx, bt);
266 evas_object_show(bt);
267 evas_object_show(ic);
268 evas_object_smart_callback_add(bt, "clicked", _transit_image_animation, ic);
270 bt = elm_button_add(win);
271 elm_object_text_set(bt, "Color, Rotation and Translation");
272 elm_box_pack_end(bx, bt);
273 evas_object_show(bt);
274 evas_object_smart_callback_add(bt, "clicked",
275 _transit_rotation_translation_color, NULL);
277 bt = elm_button_add(win);
278 elm_object_text_set(bt, "Wipe Effect");
279 elm_box_pack_end(bx, bt);
280 evas_object_show(bt);
281 evas_object_smart_callback_add(bt, "clicked", _transit_wipe, NULL);
283 evas_object_show(win);
286 /* Resizing Effect */
288 test_transit2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
290 Evas_Object *win, *bg, *bt;
292 win = elm_win_add(NULL, "transit2", ELM_WIN_BASIC);
293 elm_win_title_set(win, "Transit 2");
294 elm_win_autodel_set(win, EINA_TRUE);
296 bg = elm_bg_add(win);
297 elm_win_resize_object_add(win, bg);
298 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
299 evas_object_show(bg);
301 bt = elm_button_add(win);
302 elm_object_text_set(bt, "Resizing Effect");
303 evas_object_show(bt);
304 evas_object_move(bt, 50, 100);
305 evas_object_resize(bt, 100, 50);
306 evas_object_smart_callback_add(bt, "clicked", _transit_resizing, NULL);
308 evas_object_resize(win, 400, 400);
309 evas_object_show(win);
314 test_transit3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
316 Evas_Object *win, *bg, *bt, *bt2;
318 win = elm_win_add(NULL, "transit3", ELM_WIN_BASIC);
319 elm_win_title_set(win, "Transit 3");
320 elm_win_autodel_set(win, EINA_TRUE);
322 bg = elm_bg_add(win);
323 elm_win_resize_object_add(win, bg);
324 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
325 evas_object_show(bg);
327 bt = elm_button_add(win);
328 elm_object_text_set(bt, "Front Button - Flip Effect");
329 evas_object_show(bt);
330 evas_object_move(bt, 50, 50);
331 evas_object_resize(bt, 200, 200);
333 bt2 = elm_button_add(win);
334 elm_object_text_set(bt2, "Back Button - Flip Effect");
335 evas_object_move(bt2, 50, 50);
336 evas_object_resize(bt2, 200, 200);
338 evas_object_resize(win, 300, 300);
339 evas_object_show(win);
341 evas_object_smart_callback_add(bt, "clicked", _transit_flip, bt2);
342 evas_object_smart_callback_add(bt2, "clicked", _transit_flip, bt);
347 test_transit4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
349 Evas_Object *win, *bg, *bt;
351 win = elm_win_add(NULL, "transit4", ELM_WIN_BASIC);
352 elm_win_title_set(win, "Transit 4");
353 elm_win_autodel_set(win, EINA_TRUE);
355 bg = elm_bg_add(win);
356 elm_win_resize_object_add(win, bg);
357 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
358 evas_object_show(bg);
360 bt = elm_button_add(win);
361 elm_object_text_set(bt, "Zoom Effect");
362 evas_object_resize(bt, 100, 50);
363 evas_object_move(bt, 100, 125);
364 evas_object_show(bt);
366 evas_object_smart_callback_add(bt, "clicked", _transit_zoom, NULL);
368 evas_object_resize(win, 300, 300);
369 evas_object_show(win);
374 test_transit5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
376 Evas_Object *win, *bg, *bt, *bt2, *ic;
379 win = elm_win_add(NULL, "transit5", ELM_WIN_BASIC);
380 elm_win_title_set(win, "Transit 5");
381 elm_win_autodel_set(win, EINA_TRUE);
383 bg = elm_bg_add(win);
384 elm_win_resize_object_add(win, bg);
385 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
386 evas_object_show(bg);
388 ic = elm_icon_add(win);
389 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
390 elm_icon_file_set(ic, buf, NULL);
391 evas_object_size_hint_max_set(ic, 50, 50);
393 bt = elm_button_add(win);
394 elm_object_part_content_set(bt, "icon", ic);
395 elm_object_text_set(bt, "Before Button - Blend Effect");
396 evas_object_move(bt, 25, 125);
397 evas_object_resize(bt, 250, 50);
398 evas_object_show(bt);
400 ic = elm_icon_add(win);
401 snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", elm_app_data_dir_get());
402 elm_icon_file_set(ic, buf, NULL);
403 evas_object_size_hint_max_set(ic, 50, 50);
405 bt2 = elm_button_add(win);
406 elm_object_part_content_set(bt2, "icon", ic);
407 elm_object_text_set(bt2, "After Button - Blend Effect");
408 evas_object_move(bt2, 25, 125);
409 evas_object_resize(bt2, 250, 50);
411 evas_object_resize(win, 300, 300);
412 evas_object_show(win);
414 evas_object_smart_callback_add(bt, "clicked", _transit_blend, bt2);
415 evas_object_smart_callback_add(bt2, "clicked", _transit_blend, bt);
420 test_transit6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
422 Evas_Object *win, *bg, *bt, *bt2, *ic;
425 win = elm_win_add(NULL, "transit6", ELM_WIN_BASIC);
426 elm_win_title_set(win, "Transit 6");
427 elm_win_autodel_set(win, EINA_TRUE);
429 bg = elm_bg_add(win);
430 elm_win_resize_object_add(win, bg);
431 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
432 evas_object_show(bg);
434 ic = elm_icon_add(win);
435 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
436 elm_icon_file_set(ic, buf, NULL);
437 evas_object_size_hint_max_set(ic, 50, 50);
439 bt = elm_button_add(win);
440 elm_object_part_content_set(bt, "icon", ic);
441 elm_object_text_set(bt, "Before Button - Fade Effect");
442 evas_object_move(bt, 25, 125);
443 evas_object_resize(bt, 250, 50);
444 evas_object_show(bt);
446 ic = elm_icon_add(win);
447 snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", elm_app_data_dir_get());
448 elm_icon_file_set(ic, buf, NULL);
449 evas_object_size_hint_max_set(ic, 50, 50);
451 bt2 = elm_button_add(win);
452 elm_object_part_content_set(bt2, "icon", ic);
453 elm_object_text_set(bt2, "After Button - Fade Effect");
454 evas_object_move(bt2, 25, 125);
455 evas_object_resize(bt2, 250, 50);
457 evas_object_resize(win, 300, 300);
458 evas_object_show(win);
460 evas_object_smart_callback_add(bt, "clicked", _transit_fade, bt2);
461 evas_object_smart_callback_add(bt2, "clicked", _transit_fade, bt);
464 /* Resizable Flip Effect */
466 test_transit7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
468 Evas_Object *win, *bg, *bt, *bt2;
470 win = elm_win_add(NULL, "transit7", ELM_WIN_BASIC);
471 elm_win_title_set(win, "Transit 7");
472 elm_win_autodel_set(win, EINA_TRUE);
474 bg = elm_bg_add(win);
475 elm_win_resize_object_add(win, bg);
476 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
477 evas_object_show(bg);
479 bt = elm_button_add(win);
480 elm_object_text_set(bt, "Front Button - Resizable Flip Effect");
481 evas_object_show(bt);
482 evas_object_move(bt, 50, 100);
483 evas_object_resize(bt, 250, 30);
485 bt2 = elm_button_add(win);
486 elm_object_text_set(bt2, "Back Button - Resizable Flip Effect");
487 evas_object_move(bt2, 50, 100);
488 evas_object_resize(bt2, 300, 200);
490 evas_object_resize(win, 400, 400);
491 evas_object_show(win);
493 evas_object_smart_callback_add(bt, "clicked", _transit_resizable_flip, bt2);
494 evas_object_smart_callback_add(bt2, "clicked", _transit_resizable_flip, bt);
499 test_transit8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
501 Evas_Object *win, *bg, *bt;
503 Elm_Transit_Effect *effect_context;
505 win = elm_win_add(NULL, "transit8", ELM_WIN_BASIC);
506 elm_win_title_set(win, "Transit 8");
507 elm_win_autodel_set(win, EINA_TRUE);
509 bg = elm_bg_add(win);
510 elm_win_resize_object_add(win, bg);
511 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
512 evas_object_show(bg);
514 bt = elm_button_add(win);
515 elm_object_text_set(bt, "Button - Custom Effect");
516 evas_object_show(bt);
517 evas_object_move(bt, 50, 50);
518 evas_object_resize(bt, 150, 150);
521 trans = elm_transit_add();
522 elm_transit_auto_reverse_set(trans, EINA_TRUE);
523 elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
524 effect_context = _custom_context_new(150, 150, 50, 50);
525 elm_transit_object_add(trans, bt);
526 elm_transit_effect_add(trans,
527 _custom_op, effect_context,
528 _custom_context_free);
529 elm_transit_duration_set(trans, 5.0);
530 elm_transit_repeat_times_set(trans, -1);
531 elm_transit_go(trans);
533 evas_object_resize(win, 400, 400);
534 evas_object_show(win);
537 /* Chain Transit Effect */
539 test_transit9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
541 Evas_Object *win, *bg, *bt, *bt2, *bt3, *bt4;
542 Elm_Transit *trans, *trans2, *trans3, *trans4;
544 win = elm_win_add(NULL, "transit9", ELM_WIN_BASIC);
545 elm_win_title_set(win, "Transit 9");
546 elm_win_autodel_set(win, EINA_TRUE);
548 bg = elm_bg_add(win);
549 elm_win_resize_object_add(win, bg);
550 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
551 evas_object_show(bg);
553 bt = elm_button_add(win);
554 elm_object_text_set(bt, "Chain 1");
555 evas_object_resize(bt, 100, 100);
556 evas_object_move(bt, 0, 0);
557 evas_object_show(bt);
559 bt2 = elm_button_add(win);
560 elm_object_text_set(bt2, "Chain 2");
561 evas_object_resize(bt2, 100, 100);
562 evas_object_move(bt2, 300, 0);
563 evas_object_show(bt2);
565 bt3 = elm_button_add(win);
566 elm_object_text_set(bt3, "Chain 3");
567 evas_object_resize(bt3, 100, 100);
568 evas_object_move(bt3, 300, 300);
569 evas_object_show(bt3);
571 bt4 = elm_button_add(win);
572 elm_object_text_set(bt4, "Chain 4");
573 evas_object_resize(bt4, 100, 100);
574 evas_object_move(bt4, 0, 300);
575 evas_object_show(bt4);
577 trans = elm_transit_add();
578 elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
579 elm_transit_effect_translation_add(trans, 0, 0, 300, 0);
580 elm_transit_object_add(trans, bt);
581 elm_transit_duration_set(trans, 1);
582 elm_transit_objects_final_state_keep_set(trans, EINA_TRUE);
583 elm_transit_go(trans);
585 trans2 = elm_transit_add();
586 elm_transit_tween_mode_set(trans2, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
587 elm_transit_effect_translation_add(trans2, 0, 0, 0, 300);
588 elm_transit_object_add(trans2, bt2);
589 elm_transit_duration_set(trans2, 1);
590 elm_transit_objects_final_state_keep_set(trans2, EINA_TRUE);
591 elm_transit_chain_transit_add(trans, trans2);
593 trans3 = elm_transit_add();
594 elm_transit_tween_mode_set(trans3, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
595 elm_transit_effect_translation_add(trans3, 0, 0, -300, 0);
596 elm_transit_object_add(trans3, bt3);
597 elm_transit_duration_set(trans3, 1);
598 elm_transit_objects_final_state_keep_set(trans3, EINA_TRUE);
599 elm_transit_chain_transit_add(trans2, trans3);
601 trans4 = elm_transit_add();
602 elm_transit_tween_mode_set(trans4, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
603 elm_transit_effect_translation_add(trans4, 0, 0, 0, -300);
604 elm_transit_object_add(trans4, bt4);
605 elm_transit_duration_set(trans4, 1);
606 elm_transit_objects_final_state_keep_set(trans4, EINA_TRUE);
607 elm_transit_chain_transit_add(trans3, trans4);
609 evas_object_resize(win, 400, 400);
610 evas_object_show(win);