1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
7 typedef struct _Custom_Effect Custom_Effect;
18 _custom_op(void *data, Elm_Transit *transit, double progress)
23 const Eina_List *elist;
25 Custom_Effect *custom_effect = data;
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);
46 _custom_context_new(Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h)
48 Custom_Effect *custom_effect;
50 custom_effect = calloc(1, sizeof(Custom_Effect));
51 if (!custom_effect) return NULL;
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;
62 _custom_context_free(void *data, Elm_Transit *transit __UNUSED__)
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_image_animation(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
110 Eina_List *images = NULL;
113 Evas_Object *ic = data;
115 snprintf(buf, sizeof(buf), "%s/images/icon_19.png", PACKAGE_DATA_DIR);
116 images = eina_list_append(images, eina_stringshare_add(buf));
118 snprintf(buf, sizeof(buf), "%s/images/icon_00.png", PACKAGE_DATA_DIR);
119 images = eina_list_append(images, eina_stringshare_add(buf));
121 snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
122 images = eina_list_append(images, eina_stringshare_add(buf));
124 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
125 images = eina_list_append(images, eina_stringshare_add(buf));
127 trans = elm_transit_add();
128 elm_transit_object_add(trans, ic);
130 elm_transit_effect_image_animation_add(trans, images);
132 elm_transit_duration_set(trans, 5.0);
133 elm_transit_go(trans);
137 _transit_resizing(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
141 trans = elm_transit_add();
142 elm_transit_object_add(trans, obj);
144 elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
146 elm_transit_duration_set(trans, 5.0);
147 elm_transit_go(trans);
151 _transit_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
154 Evas_Object *obj2 = data;
156 trans = elm_transit_add();
157 elm_transit_object_add(trans, obj);
158 elm_transit_object_add(trans, obj2);
160 elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
162 elm_transit_duration_set(trans, 5.0);
163 elm_transit_go(trans);
167 _transit_zoom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
171 trans = elm_transit_add();
172 elm_transit_object_add(trans, obj);
174 elm_transit_effect_zoom_add(trans, 1.0, 3.0);
176 elm_transit_duration_set(trans, 5.0);
177 elm_transit_go(trans);
181 _transit_blend(void *data, Evas_Object *obj, void *event_info __UNUSED__)
184 Evas_Object *obj2 = data;
186 trans = elm_transit_add();
187 elm_transit_object_add(trans, obj);
188 elm_transit_object_add(trans, obj2);
190 elm_transit_effect_blend_add(trans);
192 elm_transit_duration_set(trans, 5.0);
193 elm_transit_go(trans);
197 _transit_fade(void *data, Evas_Object *obj, void *event_info __UNUSED__)
200 Evas_Object *obj2 = data;
202 trans = elm_transit_add();
203 elm_transit_object_add(trans, obj);
204 elm_transit_object_add(trans, obj2);
206 elm_transit_effect_fade_add(trans);
208 elm_transit_duration_set(trans, 5.0);
209 elm_transit_go(trans);
213 _transit_resizable_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
216 Evas_Object *obj2 = data;
218 trans = elm_transit_add();
219 elm_transit_object_add(trans, obj);
220 elm_transit_object_add(trans, obj2);
222 elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
224 elm_transit_duration_set(trans, 5.0);
225 elm_transit_go(trans);
228 /* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
230 test_transit(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
232 Evas_Object *win, *bg, *bx, *bt, *ic;
235 win = elm_win_add(NULL, "transit", ELM_WIN_BASIC);
236 elm_win_title_set(win, "Transit");
237 elm_win_autodel_set(win, EINA_TRUE);
239 bg = elm_bg_add(win);
240 elm_win_resize_object_add(win, bg);
241 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
242 evas_object_show(bg);
244 bx = elm_box_add(win);
245 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
246 elm_win_resize_object_add(win, bx);
247 evas_object_size_hint_min_set(bx, 318, 318);
248 evas_object_show(bx);
250 ic = elm_icon_add(win);
251 snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
252 elm_icon_file_set(ic, buf, NULL);
253 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
255 bt = elm_button_add(win);
256 elm_button_label_set(bt, "ImageAnimation Effect");
257 elm_button_icon_set(bt, ic);
258 elm_box_pack_end(bx, bt);
259 evas_object_show(bt);
260 evas_object_show(ic);
261 evas_object_smart_callback_add(bt, "clicked", _transit_image_animation, ic);
263 bt = elm_button_add(win);
264 elm_button_label_set(bt, "Color, Rotation and Translation");
265 elm_box_pack_end(bx, bt);
266 evas_object_show(bt);
267 evas_object_smart_callback_add(bt, "clicked",
268 _transit_rotation_translation_color, NULL);
270 bt = elm_button_add(win);
271 elm_button_label_set(bt, "Wipe Effect");
272 elm_box_pack_end(bx, bt);
273 evas_object_show(bt);
274 evas_object_smart_callback_add(bt, "clicked", _transit_wipe, NULL);
276 evas_object_show(win);
279 /* Resizing Effect */
281 test_transit2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
283 Evas_Object *win, *bg, *bt;
285 win = elm_win_add(NULL, "transit2", ELM_WIN_BASIC);
286 elm_win_title_set(win, "Transit 2");
287 elm_win_autodel_set(win, EINA_TRUE);
288 evas_object_resize(win, 400, 400);
290 bg = elm_bg_add(win);
291 elm_win_resize_object_add(win, bg);
292 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
293 evas_object_show(bg);
295 bt = elm_button_add(win);
296 elm_button_label_set(bt, "Resizing Effect");
297 evas_object_show(bt);
298 evas_object_move(bt, 50, 100);
299 evas_object_resize(bt, 100, 50);
300 evas_object_smart_callback_add(bt, "clicked", _transit_resizing, NULL);
302 evas_object_show(win);
307 test_transit3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
309 Evas_Object *win, *bg, *bt, *bt2;
311 win = elm_win_add(NULL, "transit3", ELM_WIN_BASIC);
312 elm_win_title_set(win, "Transit 3");
313 elm_win_autodel_set(win, EINA_TRUE);
314 evas_object_resize(win, 300, 300);
316 bg = elm_bg_add(win);
317 elm_win_resize_object_add(win, bg);
318 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
319 evas_object_show(bg);
321 bt = elm_button_add(win);
322 elm_button_label_set(bt, "Front Button - Flip Effect");
323 evas_object_show(bt);
324 evas_object_move(bt, 50, 50);
325 evas_object_resize(bt, 200, 200);
327 bt2 = elm_button_add(win);
328 elm_button_label_set(bt2, "Back Button - Flip Effect");
329 evas_object_move(bt2, 50, 50);
330 evas_object_resize(bt2, 200, 200);
332 evas_object_show(win);
334 evas_object_smart_callback_add(bt, "clicked", _transit_flip, bt2);
335 evas_object_smart_callback_add(bt2, "clicked", _transit_flip, bt);
340 test_transit4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
342 Evas_Object *win, *bg, *bt;
344 win = elm_win_add(NULL, "transit4", ELM_WIN_BASIC);
345 elm_win_title_set(win, "Transit 4");
346 elm_win_autodel_set(win, EINA_TRUE);
347 evas_object_resize(win, 300, 300);
349 bg = elm_bg_add(win);
350 elm_win_resize_object_add(win, bg);
351 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
352 evas_object_show(bg);
354 bt = elm_button_add(win);
355 elm_button_label_set(bt, "Zoom Effect");
356 evas_object_resize(bt, 100, 50);
357 evas_object_move(bt, 100, 125);
358 evas_object_show(bt);
360 evas_object_smart_callback_add(bt, "clicked", _transit_zoom, NULL);
362 evas_object_show(win);
367 test_transit5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
369 Evas_Object *win, *bg, *bt, *bt2, *ic;
371 win = elm_win_add(NULL, "transit5", ELM_WIN_BASIC);
372 elm_win_title_set(win, "Transit 5");
373 elm_win_autodel_set(win, EINA_TRUE);
374 evas_object_resize(win, 300, 300);
376 bg = elm_bg_add(win);
377 elm_win_resize_object_add(win, bg);
378 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
379 evas_object_show(bg);
381 ic = elm_icon_add(win);
382 elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_01.jpg", NULL);
383 evas_object_size_hint_max_set(ic, 50, 50);
385 bt = elm_button_add(win);
386 elm_button_icon_set(bt, ic);
387 elm_button_label_set(bt, "Before Button - Blend Effect");
388 evas_object_move(bt, 25, 125);
389 evas_object_resize(bt, 250, 50);
390 evas_object_show(bt);
392 ic = elm_icon_add(win);
393 elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_02.jpg", NULL);
394 evas_object_size_hint_max_set(ic, 50, 50);
396 bt2 = elm_button_add(win);
397 elm_button_icon_set(bt2, ic);
398 elm_button_label_set(bt2, "After Button - Blend Effect");
399 evas_object_move(bt2, 25, 125);
400 evas_object_resize(bt2, 250, 50);
402 evas_object_show(win);
404 evas_object_smart_callback_add(bt, "clicked", _transit_blend, bt2);
405 evas_object_smart_callback_add(bt2, "clicked", _transit_blend, bt);
410 test_transit6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
412 Evas_Object *win, *bg, *bt, *bt2, *ic;
414 win = elm_win_add(NULL, "transit6", ELM_WIN_BASIC);
415 elm_win_title_set(win, "Transit 6");
416 elm_win_autodel_set(win, EINA_TRUE);
417 evas_object_resize(win, 300, 300);
419 bg = elm_bg_add(win);
420 elm_win_resize_object_add(win, bg);
421 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
422 evas_object_show(bg);
424 ic = elm_icon_add(win);
425 elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_01.jpg", NULL);
426 evas_object_size_hint_max_set(ic, 50, 50);
428 bt = elm_button_add(win);
429 elm_button_icon_set(bt, ic);
430 elm_button_label_set(bt, "Before Button - Fade Effect");
431 evas_object_move(bt, 25, 125);
432 evas_object_resize(bt, 250, 50);
433 evas_object_show(bt);
435 ic = elm_icon_add(win);
436 elm_icon_file_set(ic, PACKAGE_DATA_DIR"/images/rock_02.jpg", NULL);
437 evas_object_size_hint_max_set(ic, 50, 50);
439 bt2 = elm_button_add(win);
440 elm_button_icon_set(bt2, ic);
441 elm_button_label_set(bt2, "After Button - Fade Effect");
442 evas_object_move(bt2, 25, 125);
443 evas_object_resize(bt2, 250, 50);
445 evas_object_show(win);
447 evas_object_smart_callback_add(bt, "clicked", _transit_fade, bt2);
448 evas_object_smart_callback_add(bt2, "clicked", _transit_fade, bt);
451 /* Resizable Flip Effect */
453 test_transit7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
455 Evas_Object *win, *bg, *bt, *bt2;
457 win = elm_win_add(NULL, "transit7", ELM_WIN_BASIC);
458 elm_win_title_set(win, "Transit 7");
459 elm_win_autodel_set(win, EINA_TRUE);
460 evas_object_resize(win, 400, 400);
462 bg = elm_bg_add(win);
463 elm_win_resize_object_add(win, bg);
464 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
465 evas_object_show(bg);
467 bt = elm_button_add(win);
468 elm_button_label_set(bt, "Front Button - Resizable Flip Effect");
469 evas_object_show(bt);
470 evas_object_move(bt, 50, 100);
471 evas_object_resize(bt, 250, 30);
473 bt2 = elm_button_add(win);
474 elm_button_label_set(bt2, "Back Button - Resizable Flip Effect");
475 evas_object_move(bt2, 50, 100);
476 evas_object_resize(bt2, 300, 200);
478 evas_object_show(win);
480 evas_object_smart_callback_add(bt, "clicked", _transit_resizable_flip, bt2);
481 evas_object_smart_callback_add(bt2, "clicked", _transit_resizable_flip, bt);
486 test_transit8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
488 Evas_Object *win, *bg, *bt;
490 void *effect_context;
492 win = elm_win_add(NULL, "transit8", ELM_WIN_BASIC);
493 elm_win_title_set(win, "Transit 8");
494 elm_win_autodel_set(win, EINA_TRUE);
495 evas_object_resize(win, 400, 400);
497 bg = elm_bg_add(win);
498 elm_win_resize_object_add(win, bg);
499 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
500 evas_object_show(bg);
502 bt = elm_button_add(win);
503 elm_button_label_set(bt, "Button - Custom Effect");
504 evas_object_show(bt);
505 evas_object_move(bt, 50, 100);
506 evas_object_resize(bt, 250, 150);
508 evas_object_show(win);
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 //Negative value makes transition repeate for infinite times.
515 elm_transit_repeat_times_set(trans, -1);
516 effect_context = _custom_context_new(100, 100, 250, 250);
517 elm_transit_object_add(trans, bt);
518 elm_transit_effect_add(trans,
519 _custom_op, effect_context,
520 _custom_context_free);
521 elm_transit_duration_set(trans, 5.0);
522 elm_transit_go(trans);