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);
45 >>>>>>> remotes/origin/upstream
48 static Elm_Transit_Effect *
49 _custom_context_new(Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h)
51 Custom_Effect *custom_effect;
53 custom_effect = calloc(1, sizeof(Custom_Effect));
54 if (!custom_effect) return NULL;
56 custom_effect->from.w = from_w;
57 custom_effect->from.h = from_h;
58 custom_effect->to.w = to_w - from_w;
59 custom_effect->to.h = to_h - from_h;
65 _custom_context_free(Elm_Transit_Effect *effect, Elm_Transit *transit __UNUSED__)
67 Custom_Effect *custom_effect = effect;
72 _transit_rotation_translation_color(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
76 trans = elm_transit_add();
77 elm_transit_object_add(trans, obj);
78 elm_transit_auto_reverse_set(trans, EINA_TRUE);
79 elm_transit_repeat_times_set(trans, 2);
81 /* Translation Effect */
82 elm_transit_effect_translation_add(trans, -70.0, -150.0, 70.0, 150.0);
85 elm_transit_effect_color_add(trans, 100, 255, 100, 255, 200, 50, 200, 50);
88 elm_transit_effect_rotation_add(trans, 0.0, 135.0);
90 elm_transit_duration_set(trans, 5.0);
91 elm_transit_go(trans);
95 _transit_wipe(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
99 trans = elm_transit_add();
100 elm_transit_object_add(trans, obj);
101 elm_transit_auto_reverse_set(trans, EINA_TRUE);
103 elm_transit_effect_wipe_add(trans,
104 ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
105 ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
107 elm_transit_duration_set(trans, 5.0);
108 elm_transit_go(trans);
112 _transit_del_cb(void *data, Elm_Transit *transit __UNUSED__)
114 evas_object_freeze_events_set(data, EINA_FALSE);
118 _transit_image_animation(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
120 Eina_List *images = NULL;
123 Evas_Object *ic = data;
125 snprintf(buf, sizeof(buf), "%s/images/icon_19.png", elm_app_data_dir_get());
126 images = eina_list_append(images, eina_stringshare_add(buf));
128 snprintf(buf, sizeof(buf), "%s/images/icon_00.png", elm_app_data_dir_get());
129 images = eina_list_append(images, eina_stringshare_add(buf));
131 snprintf(buf, sizeof(buf), "%s/images/icon_11.png", elm_app_data_dir_get());
132 images = eina_list_append(images, eina_stringshare_add(buf));
134 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
135 images = eina_list_append(images, eina_stringshare_add(buf));
137 trans = elm_transit_add();
138 elm_transit_del_cb_set(trans, _transit_del_cb, obj);
139 elm_transit_object_add(trans, ic);
140 elm_transit_effect_image_animation_add(trans, images);
141 elm_transit_duration_set(trans, 5.0);
142 elm_transit_go(trans);
144 evas_object_freeze_events_set(obj, EINA_TRUE);
148 _transit_resizing(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
152 trans = elm_transit_add();
153 elm_transit_object_add(trans, obj);
155 elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
157 elm_transit_duration_set(trans, 5.0);
158 elm_transit_go(trans);
162 _transit_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
165 Evas_Object *obj2 = data;
167 trans = elm_transit_add();
168 elm_transit_object_add(trans, obj);
169 elm_transit_object_add(trans, obj2);
171 elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
173 elm_transit_duration_set(trans, 5.0);
174 elm_transit_go(trans);
178 _transit_zoom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
182 trans = elm_transit_add();
183 elm_transit_object_add(trans, obj);
185 elm_transit_effect_zoom_add(trans, 1.0, 3.0);
187 elm_transit_duration_set(trans, 5.0);
188 elm_transit_go(trans);
192 _transit_blend(void *data, Evas_Object *obj, void *event_info __UNUSED__)
195 Evas_Object *obj2 = data;
197 trans = elm_transit_add();
198 elm_transit_object_add(trans, obj);
199 elm_transit_object_add(trans, obj2);
201 elm_transit_effect_blend_add(trans);
203 elm_transit_duration_set(trans, 5.0);
204 elm_transit_go(trans);
208 _transit_fade(void *data, Evas_Object *obj, void *event_info __UNUSED__)
211 Evas_Object *obj2 = data;
213 trans = elm_transit_add();
214 elm_transit_object_add(trans, obj);
215 elm_transit_object_add(trans, obj2);
217 elm_transit_effect_fade_add(trans);
219 elm_transit_duration_set(trans, 5.0);
220 elm_transit_go(trans);
224 _transit_resizable_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
227 Evas_Object *obj2 = data;
229 trans = elm_transit_add();
230 elm_transit_object_add(trans, obj);
231 elm_transit_object_add(trans, obj2);
233 elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
235 elm_transit_duration_set(trans, 5.0);
236 elm_transit_go(trans);
239 /* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
241 test_transit(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
243 Evas_Object *win, *bg, *bx, *bt, *ic;
246 win = elm_win_add(NULL, "transit", ELM_WIN_BASIC);
247 elm_win_title_set(win, "Transit");
248 elm_win_autodel_set(win, EINA_TRUE);
250 bg = elm_bg_add(win);
251 elm_win_resize_object_add(win, bg);
252 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
253 evas_object_show(bg);
255 bx = elm_box_add(win);
256 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
257 elm_win_resize_object_add(win, bx);
258 evas_object_size_hint_min_set(bx, 318, 318);
259 evas_object_show(bx);
261 ic = elm_icon_add(win);
262 snprintf(buf, sizeof(buf), "%s/images/icon_11.png", elm_app_data_dir_get());
263 elm_icon_file_set(ic, buf, NULL);
264 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
266 bt = elm_button_add(win);
267 elm_object_text_set(bt, "ImageAnimation Effect");
268 elm_object_part_content_set(bt, "icon", ic);
269 elm_box_pack_end(bx, bt);
270 evas_object_show(bt);
271 evas_object_show(ic);
272 evas_object_smart_callback_add(bt, "clicked", _transit_image_animation, ic);
274 bt = elm_button_add(win);
275 elm_object_text_set(bt, "Color, Rotation and Translation");
276 elm_box_pack_end(bx, bt);
277 evas_object_show(bt);
278 evas_object_smart_callback_add(bt, "clicked",
279 _transit_rotation_translation_color, NULL);
281 bt = elm_button_add(win);
282 elm_object_text_set(bt, "Wipe Effect");
283 elm_box_pack_end(bx, bt);
284 evas_object_show(bt);
285 evas_object_smart_callback_add(bt, "clicked", _transit_wipe, NULL);
287 evas_object_show(win);
290 /* Resizing Effect */
292 test_transit2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
294 Evas_Object *win, *bg, *bt;
296 win = elm_win_add(NULL, "transit2", ELM_WIN_BASIC);
297 elm_win_title_set(win, "Transit 2");
298 elm_win_autodel_set(win, EINA_TRUE);
300 bg = elm_bg_add(win);
301 elm_win_resize_object_add(win, bg);
302 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
303 evas_object_show(bg);
305 bt = elm_button_add(win);
306 elm_object_text_set(bt, "Resizing Effect");
307 evas_object_show(bt);
308 evas_object_move(bt, 50, 100);
309 evas_object_resize(bt, 100, 50);
310 evas_object_smart_callback_add(bt, "clicked", _transit_resizing, NULL);
312 evas_object_resize(win, 400, 400);
313 evas_object_show(win);
318 test_transit3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
320 Evas_Object *win, *bg, *bt, *bt2;
322 win = elm_win_add(NULL, "transit3", ELM_WIN_BASIC);
323 elm_win_title_set(win, "Transit 3");
324 elm_win_autodel_set(win, EINA_TRUE);
326 bg = elm_bg_add(win);
327 elm_win_resize_object_add(win, bg);
328 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
329 evas_object_show(bg);
331 bt = elm_button_add(win);
332 elm_object_text_set(bt, "Front Button - Flip Effect");
333 evas_object_show(bt);
334 evas_object_move(bt, 50, 50);
335 evas_object_resize(bt, 200, 200);
337 bt2 = elm_button_add(win);
338 elm_object_text_set(bt2, "Back Button - Flip Effect");
339 evas_object_move(bt2, 50, 50);
340 evas_object_resize(bt2, 200, 200);
342 evas_object_resize(win, 300, 300);
343 evas_object_show(win);
345 evas_object_smart_callback_add(bt, "clicked", _transit_flip, bt2);
346 evas_object_smart_callback_add(bt2, "clicked", _transit_flip, bt);
351 test_transit4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
353 Evas_Object *win, *bg, *bt;
355 win = elm_win_add(NULL, "transit4", ELM_WIN_BASIC);
356 elm_win_title_set(win, "Transit 4");
357 elm_win_autodel_set(win, EINA_TRUE);
359 bg = elm_bg_add(win);
360 elm_win_resize_object_add(win, bg);
361 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
362 evas_object_show(bg);
364 bt = elm_button_add(win);
365 elm_object_text_set(bt, "Zoom Effect");
366 evas_object_resize(bt, 100, 50);
367 evas_object_move(bt, 100, 125);
368 evas_object_show(bt);
370 evas_object_smart_callback_add(bt, "clicked", _transit_zoom, NULL);
372 evas_object_resize(win, 300, 300);
373 evas_object_show(win);
378 test_transit5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
380 Evas_Object *win, *bg, *bt, *bt2, *ic;
383 win = elm_win_add(NULL, "transit5", ELM_WIN_BASIC);
384 elm_win_title_set(win, "Transit 5");
385 elm_win_autodel_set(win, EINA_TRUE);
387 bg = elm_bg_add(win);
388 elm_win_resize_object_add(win, bg);
389 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
390 evas_object_show(bg);
392 ic = elm_icon_add(win);
393 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
394 elm_icon_file_set(ic, buf, NULL);
395 evas_object_size_hint_max_set(ic, 50, 50);
397 bt = elm_button_add(win);
398 elm_object_part_content_set(bt, "icon", ic);
399 elm_object_text_set(bt, "Before Button - Blend Effect");
400 evas_object_move(bt, 25, 125);
401 evas_object_resize(bt, 250, 50);
402 evas_object_show(bt);
404 ic = elm_icon_add(win);
405 snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", elm_app_data_dir_get());
406 elm_icon_file_set(ic, buf, NULL);
407 evas_object_size_hint_max_set(ic, 50, 50);
409 bt2 = elm_button_add(win);
410 elm_object_part_content_set(bt2, "icon", ic);
411 elm_object_text_set(bt2, "After Button - Blend Effect");
412 evas_object_move(bt2, 25, 125);
413 evas_object_resize(bt2, 250, 50);
415 evas_object_resize(win, 300, 300);
416 evas_object_show(win);
418 evas_object_smart_callback_add(bt, "clicked", _transit_blend, bt2);
419 evas_object_smart_callback_add(bt2, "clicked", _transit_blend, bt);
424 test_transit6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
426 Evas_Object *win, *bg, *bt, *bt2, *ic;
429 win = elm_win_add(NULL, "transit6", ELM_WIN_BASIC);
430 elm_win_title_set(win, "Transit 6");
431 elm_win_autodel_set(win, EINA_TRUE);
433 bg = elm_bg_add(win);
434 elm_win_resize_object_add(win, bg);
435 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
436 evas_object_show(bg);
438 ic = elm_icon_add(win);
439 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
440 elm_icon_file_set(ic, buf, NULL);
441 evas_object_size_hint_max_set(ic, 50, 50);
443 bt = elm_button_add(win);
444 elm_object_part_content_set(bt, "icon", ic);
445 elm_object_text_set(bt, "Before Button - Fade Effect");
446 evas_object_move(bt, 25, 125);
447 evas_object_resize(bt, 250, 50);
448 evas_object_show(bt);
450 ic = elm_icon_add(win);
451 snprintf(buf, sizeof(buf), "%s/images/rock_02.jpg", elm_app_data_dir_get());
452 elm_icon_file_set(ic, buf, NULL);
453 evas_object_size_hint_max_set(ic, 50, 50);
455 bt2 = elm_button_add(win);
456 elm_object_part_content_set(bt2, "icon", ic);
457 elm_object_text_set(bt2, "After Button - Fade Effect");
458 evas_object_move(bt2, 25, 125);
459 evas_object_resize(bt2, 250, 50);
461 evas_object_resize(win, 300, 300);
462 evas_object_show(win);
464 evas_object_smart_callback_add(bt, "clicked", _transit_fade, bt2);
465 evas_object_smart_callback_add(bt2, "clicked", _transit_fade, bt);
468 /* Resizable Flip Effect */
470 test_transit7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
472 Evas_Object *win, *bg, *bt, *bt2;
474 win = elm_win_add(NULL, "transit7", ELM_WIN_BASIC);
475 elm_win_title_set(win, "Transit 7");
476 elm_win_autodel_set(win, EINA_TRUE);
478 bg = elm_bg_add(win);
479 elm_win_resize_object_add(win, bg);
480 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
481 evas_object_show(bg);
483 bt = elm_button_add(win);
484 elm_object_text_set(bt, "Front Button - Resizable Flip Effect");
485 evas_object_show(bt);
486 evas_object_move(bt, 50, 100);
487 evas_object_resize(bt, 250, 30);
489 bt2 = elm_button_add(win);
490 elm_object_text_set(bt2, "Back Button - Resizable Flip Effect");
491 evas_object_move(bt2, 50, 100);
492 evas_object_resize(bt2, 300, 200);
494 evas_object_resize(win, 400, 400);
495 evas_object_show(win);
497 evas_object_smart_callback_add(bt, "clicked", _transit_resizable_flip, bt2);
498 evas_object_smart_callback_add(bt2, "clicked", _transit_resizable_flip, bt);
503 test_transit8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
505 Evas_Object *win, *bg, *bt;
507 Elm_Transit_Effect *effect_context;
509 win = elm_win_add(NULL, "transit8", ELM_WIN_BASIC);
510 elm_win_title_set(win, "Transit 8");
511 elm_win_autodel_set(win, EINA_TRUE);
513 bg = elm_bg_add(win);
514 elm_win_resize_object_add(win, bg);
515 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
516 evas_object_show(bg);
518 bt = elm_button_add(win);
519 elm_object_text_set(bt, "Button - Custom Effect");
520 evas_object_show(bt);
521 evas_object_move(bt, 50, 50);
522 evas_object_resize(bt, 150, 150);
525 trans = elm_transit_add();
526 elm_transit_auto_reverse_set(trans, EINA_TRUE);
527 elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
528 effect_context = _custom_context_new(150, 150, 50, 50);
529 elm_transit_object_add(trans, bt);
530 elm_transit_effect_add(trans,
531 _custom_op, effect_context,
532 _custom_context_free);
533 elm_transit_duration_set(trans, 5.0);
534 elm_transit_repeat_times_set(trans, -1);
535 elm_transit_go(trans);
537 evas_object_resize(win, 400, 400);
538 evas_object_show(win);
541 /* Chain Transit Effect */
543 test_transit9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
545 Evas_Object *win, *bg, *bt, *bt2, *bt3, *bt4;
546 Elm_Transit *trans, *trans2, *trans3, *trans4;
548 win = elm_win_add(NULL, "transit9", ELM_WIN_BASIC);
549 elm_win_title_set(win, "Transit 9");
550 elm_win_autodel_set(win, EINA_TRUE);
552 bg = elm_bg_add(win);
553 elm_win_resize_object_add(win, bg);
554 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
555 evas_object_show(bg);
557 bt = elm_button_add(win);
558 elm_object_text_set(bt, "Chain 1");
559 evas_object_resize(bt, 100, 100);
560 evas_object_move(bt, 0, 0);
561 evas_object_show(bt);
563 bt2 = elm_button_add(win);
564 elm_object_text_set(bt2, "Chain 2");
565 evas_object_resize(bt2, 100, 100);
566 evas_object_move(bt2, 300, 0);
567 evas_object_show(bt2);
569 bt3 = elm_button_add(win);
570 elm_object_text_set(bt3, "Chain 3");
571 evas_object_resize(bt3, 100, 100);
572 evas_object_move(bt3, 300, 300);
573 evas_object_show(bt3);
575 bt4 = elm_button_add(win);
576 elm_object_text_set(bt4, "Chain 4");
577 evas_object_resize(bt4, 100, 100);
578 evas_object_move(bt4, 0, 300);
579 evas_object_show(bt4);
581 trans = elm_transit_add();
582 elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
583 elm_transit_effect_translation_add(trans, 0, 0, 300, 0);
584 elm_transit_object_add(trans, bt);
585 elm_transit_duration_set(trans, 1);
586 elm_transit_objects_final_state_keep_set(trans, EINA_TRUE);
587 elm_transit_go(trans);
589 trans2 = elm_transit_add();
590 elm_transit_tween_mode_set(trans2, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
591 elm_transit_effect_translation_add(trans2, 0, 0, 0, 300);
592 elm_transit_object_add(trans2, bt2);
593 elm_transit_duration_set(trans2, 1);
594 elm_transit_objects_final_state_keep_set(trans2, EINA_TRUE);
595 elm_transit_chain_transit_add(trans, trans2);
597 trans3 = elm_transit_add();
598 elm_transit_tween_mode_set(trans3, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
599 elm_transit_effect_translation_add(trans3, 0, 0, -300, 0);
600 elm_transit_object_add(trans3, bt3);
601 elm_transit_duration_set(trans3, 1);
602 elm_transit_objects_final_state_keep_set(trans3, EINA_TRUE);
603 elm_transit_chain_transit_add(trans2, trans3);
605 trans4 = elm_transit_add();
606 elm_transit_tween_mode_set(trans4, ELM_TRANSIT_TWEEN_MODE_ACCELERATE);
607 elm_transit_effect_translation_add(trans4, 0, 0, 0, -300);
608 elm_transit_object_add(trans4, bt4);
609 elm_transit_duration_set(trans4, 1);
610 elm_transit_objects_final_state_keep_set(trans4, EINA_TRUE);
611 elm_transit_chain_transit_add(trans3, trans4);
613 evas_object_resize(win, 400, 400);
614 evas_object_show(win);
620 >>>>>>> remotes/origin/upstream