diff --git a/legacy/elementary/src/examples/Makefile.am b/legacy/elementary/src/examples/Makefile.am index f4e85e941c..53896fdd95 100644 --- a/legacy/elementary/src/examples/Makefile.am +++ b/legacy/elementary/src/examples/Makefile.am @@ -22,6 +22,10 @@ SRCS = \ actionslider_example_01.c \ anchorblock_example_01.c \ animator_example_01.c \ + transit_example_01.c \ + transit_example_02.c \ + transit_example_03.c \ + transit_example_04.c \ bg_example_01.c \ bg_example_02.c \ bg_example_03.c @@ -38,6 +42,10 @@ pkglib_PROGRAMS += \ actionslider_example_01 \ anchorblock_example_01 \ animator_example_01 \ + transit_example_01 \ + transit_example_02 \ + transit_example_03 \ + transit_example_04 \ bg_example_01 \ bg_example_02 \ bg_example_03 diff --git a/legacy/elementary/src/examples/transit_example_01.c b/legacy/elementary/src/examples/transit_example_01.c new file mode 100644 index 0000000000..9bf89808c6 --- /dev/null +++ b/legacy/elementary/src/examples/transit_example_01.c @@ -0,0 +1,57 @@ +//Compile with: +//gcc -g -DPACKAGE_DATA_DIR="\"\"" `pkg-config --cflags --libs elementary` transit_example_01.c -o transit_example_01 +// where directory is the a path where images/plant_01.jpg can be found. + +#include +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#else +# define __UNUSED__ +#endif + +static void +on_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + /* quit the mainloop (elm_run) */ + elm_exit(); +} + +int +elm_main(int argc __UNUSED__, char **argv __UNUSED__) +{ + Evas_Object *win, *bg, *bt; + Elm_Transit *trans; + + win = elm_win_add(NULL, "transit-basic", ELM_WIN_BASIC); + elm_win_title_set(win, "Transit - Basic"); + evas_object_smart_callback_add(win, "delete,request", on_done, NULL); + elm_win_autodel_set(win, EINA_TRUE); + evas_object_resize(win, 400, 400); + + bg = elm_bg_add(win); + elm_win_resize_object_add(win, bg); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(bg); + + bt = elm_button_add(win); + elm_button_label_set(bt, "Resizing Effect"); + evas_object_show(bt); + evas_object_move(bt, 50, 100); + evas_object_resize(bt, 100, 50); + + evas_object_show(win); + + trans = elm_transit_add(); + elm_transit_object_add(trans, bt); + + elm_transit_effect_resizing_add(trans, 100, 50, 300, 150); + + elm_transit_duration_set(trans, 5.0); + elm_transit_go(trans); + + elm_run(); + + return 0; +} + +ELM_MAIN() diff --git a/legacy/elementary/src/examples/transit_example_02.c b/legacy/elementary/src/examples/transit_example_02.c new file mode 100644 index 0000000000..d060fd12ad --- /dev/null +++ b/legacy/elementary/src/examples/transit_example_02.c @@ -0,0 +1,97 @@ +//Compile with: +//gcc -g -DPACKAGE_DATA_DIR="\"\"" `pkg-config --cflags --libs elementary` transit_example_02.c -o transit_example_02 +// where directory is the a path where images/plant_01.jpg can be found. + +#include +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#else +# define __UNUSED__ +#endif + +static void +on_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + /* quit the mainloop (elm_run) */ + elm_exit(); +} + +int +elm_main(int argc __UNUSED__, char **argv __UNUSED__) +{ + Evas_Object *win, *bg, *bt, *bt2, *bt3, *bt4; + Elm_Transit *trans, *trans2, *trans3, *trans4; + + win = elm_win_add(NULL, "transit9", ELM_WIN_BASIC); + elm_win_title_set(win, "Transit 9"); + elm_win_autodel_set(win, EINA_TRUE); + evas_object_resize(win, 400, 400); + evas_object_show(win); + + bg = elm_bg_add(win); + elm_win_resize_object_add(win, bg); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(bg); + + bt = elm_button_add(win); + elm_button_label_set(bt, "Chain 1"); + evas_object_resize(bt, 100, 100); + evas_object_move(bt, 0, 0); + evas_object_show(bt); + + bt2 = elm_button_add(win); + elm_button_label_set(bt2, "Chain 2"); + evas_object_resize(bt2, 100, 100); + evas_object_move(bt2, 300, 0); + evas_object_show(bt2); + + bt3 = elm_button_add(win); + elm_button_label_set(bt3, "Chain 3"); + evas_object_resize(bt3, 100, 100); + evas_object_move(bt3, 300, 300); + evas_object_show(bt3); + + bt4 = elm_button_add(win); + elm_button_label_set(bt4, "Chain 4"); + evas_object_resize(bt4, 100, 100); + evas_object_move(bt4, 0, 300); + evas_object_show(bt4); + + trans = elm_transit_add(); + elm_transit_tween_mode_set(trans, ELM_TRANSIT_TWEEN_MODE_ACCELERATE); + elm_transit_effect_translation_add(trans, 0, 0, 300, 0); + elm_transit_object_add(trans, bt); + elm_transit_duration_set(trans, 1); + elm_transit_objects_final_state_keep_set(trans, EINA_TRUE); + elm_transit_go(trans); + + trans2 = elm_transit_add(); + elm_transit_tween_mode_set(trans2, ELM_TRANSIT_TWEEN_MODE_ACCELERATE); + elm_transit_effect_translation_add(trans2, 0, 0, 0, 300); + elm_transit_object_add(trans2, bt2); + elm_transit_duration_set(trans2, 1); + elm_transit_objects_final_state_keep_set(trans2, EINA_TRUE); + elm_transit_chain_transit_add(trans, trans2); + + trans3 = elm_transit_add(); + elm_transit_tween_mode_set(trans3, ELM_TRANSIT_TWEEN_MODE_ACCELERATE); + elm_transit_effect_translation_add(trans3, 0, 0, -300, 0); + elm_transit_object_add(trans3, bt3); + elm_transit_duration_set(trans3, 1); + elm_transit_objects_final_state_keep_set(trans3, EINA_TRUE); + elm_transit_chain_transit_add(trans2, trans3); + + trans4 = elm_transit_add(); + elm_transit_tween_mode_set(trans4, ELM_TRANSIT_TWEEN_MODE_ACCELERATE); + elm_transit_effect_translation_add(trans4, 0, 0, 0, -300); + elm_transit_object_add(trans4, bt4); + elm_transit_duration_set(trans4, 1); + elm_transit_objects_final_state_keep_set(trans4, EINA_TRUE); + elm_transit_chain_transit_add(trans3, trans4); + + elm_run(); + + return 0; +} + +ELM_MAIN() diff --git a/legacy/elementary/src/examples/transit_example_03.c b/legacy/elementary/src/examples/transit_example_03.c new file mode 100644 index 0000000000..d22fb18de5 --- /dev/null +++ b/legacy/elementary/src/examples/transit_example_03.c @@ -0,0 +1,336 @@ +//Compile with: +//gcc -g -DPACKAGE_DATA_DIR="\"\"" `pkg-config --cflags --libs elementary` transit_example_03.c -o transit_example_03 +// where directory is the a path where images/plant_01.jpg can be found. + +#include +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#else +# define __UNUSED__ +#endif + +/* structure to hold context for many callbacks */ +struct Context { + Eina_Bool events_enabled; + Eina_Bool auto_reverse; + Eina_Bool final_state_keep; + int repeat_times; + Elm_Transit_Tween_Mode tween_mode; + Evas_Object *obj; +}; + +static void +_transit_translation(Elm_Transit *trans) +{ + /* considering the original position (x0, y0), moves the object from + * (x0 - 20, y0 - 50) to (x0 + 70, y0 + 150) */ + elm_transit_effect_translation_add(trans, -20, -50, 70, 150); +} + +static void +_transit_color(Elm_Transit *trans) +{ + /* changes the object color from 100, 255, 100, 255 to + * 200, 50, 200, 50 */ + elm_transit_effect_color_add(trans, 100, 255, 100, 255, 200, 50, 200, 50); +} + +static void +_transit_rotation(Elm_Transit *trans) +{ + /* rotates the object from its original angle to 135 degrees to the right */ + elm_transit_effect_rotation_add(trans, 0.0, 135.0); +} + +static void +_transit_wipe(Elm_Transit *trans) +{ + /* hide the object clipping it from the left to the right */ + elm_transit_effect_wipe_add(trans, + ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE, + ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT); +} + +static void +_transit_zoom(Elm_Transit *trans) +{ + /* zoom the object from its original size to 2x */ + elm_transit_effect_zoom_add(trans, 1.0, 2.0); +} + +static void +_transit_resizing(Elm_Transit *trans) +{ + /* resize the object from 250x100 to 400x160 */ + elm_transit_effect_resizing_add(trans, 250, 100, 400, 160); +} + + +/* helper structure that will hold the transit checkboxes string, callbacks + * and checked statuses */ +static struct { + const char *label; + void (*transition_add_cb)(Elm_Transit *); + Eina_Bool checked; +} _transitions[] = { + { "Translation", _transit_translation, EINA_FALSE }, + { "Color", _transit_color, EINA_FALSE }, + { "Rotation", _transit_rotation, EINA_FALSE }, + { "Wipe", _transit_wipe, EINA_FALSE }, + { "Zoom", _transit_zoom, EINA_FALSE }, + { "Resizing", _transit_resizing, EINA_FALSE }, + { NULL, NULL, EINA_FALSE } +}; + +static void +on_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + /* quit the mainloop (elm_run) */ + elm_exit(); +} + +/* add a checkbox to the box with the given label, and uses the checked + * pointer as state_pointer to this checkbox */ +static void +_checkbox_transition_add(Evas_Object *box, const char *label, Eina_Bool *checked) +{ + Evas_Object *check = elm_check_add(elm_object_parent_widget_get(box)); + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(check, 0.0, 0.0); + elm_check_label_set(check, label); + elm_check_state_pointer_set(check, checked); + elm_box_pack_end(box, check); + evas_object_show(check); +} + +static void +_transit_start(void *data, Evas_Object *o, void *event_info __UNUSED__) +{ + Elm_Transit *trans = NULL; + int i; + struct Context *ctxt = data; + Evas_Object *obj = ctxt->obj; // the object on which the transition will be + // applied + + // FIXME: Should check if there's another transit going before starting a new + // one + + /* initialization: create the transition and add the object to it */ + trans = elm_transit_add(); + elm_transit_object_add(trans, obj); + + /* from our helper structure and array, check if the specified transition is + * checked and use its callback to add this transition to trans */ + for (i = 0; _transitions[i].label; i++) + { + if (_transitions[i].checked) + _transitions[i].transition_add_cb(trans); + } + + /* get the various options for this transition from the context structure */ + elm_transit_event_enabled_set(trans, ctxt->events_enabled); + elm_transit_auto_reverse_set(trans, ctxt->auto_reverse); + elm_transit_objects_final_state_keep_set(trans, ctxt->final_state_keep); + elm_transit_tween_mode_set(trans, ctxt->tween_mode); + elm_transit_repeat_times_set(trans, ctxt->repeat_times); + + /* set the transition time to 2 seconds and start it */ + elm_transit_duration_set(trans, 2.0); + elm_transit_go(trans); +} + +/* callback useful just to know whether we can receive events from the + * object or not */ +static void +_object_clicked(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info __UNUSED__) +{ + printf("object clicked!\n"); +} + +/* update our context with the given value for repeat count */ +static void +_cb_repeat_changed(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + int *repeat_cnt = data; + + *repeat_cnt = elm_spinner_value_get(obj); +} + +/* update our context with the given tween mode for the transition */ +static void +_cb_tween_changed(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + Elm_Transit_Tween_Mode *mode = data; + double val = 0.0; + + val = elm_spinner_value_get(obj); + if (val == 1.0) + *mode = ELM_TRANSIT_TWEEN_MODE_LINEAR; + else if (val == 2.0) + *mode = ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL; + else if (val == 3.0) + *mode = ELM_TRANSIT_TWEEN_MODE_DECELERATE; + else if (val == 4.0) + *mode = ELM_TRANSIT_TWEEN_MODE_ACCELERATE; +} + +int +elm_main(int argc __UNUSED__, char **argv __UNUSED__) +{ + Evas_Object *win, *bg, *obj, *icon, *box, *vbox, *vbox2, *hbox, *btn, *fr; + Evas_Object *cbox, *dummy, *spinner; + Elm_Transit *trans; + char buf[PATH_MAX]; + int i; + struct Context context; + + /* initialize our context */ + context.events_enabled = EINA_FALSE; + context.auto_reverse = EINA_FALSE; + context.final_state_keep = EINA_FALSE; + context.repeat_times = 0; + context.tween_mode = ELM_TRANSIT_TWEEN_MODE_LINEAR; + + /* add a window */ + win = elm_win_add(NULL, "transit", ELM_WIN_BASIC); + elm_win_title_set(win, "Transit Example"); + evas_object_smart_callback_add(win, "delete,request", on_done, NULL); + elm_win_autodel_set(win, 1); + + /* add a scalable white background to this window */ + bg = elm_bg_add(win); + elm_bg_color_set(bg, 255, 255, 255); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_min_set(bg, 640, 640); + evas_object_size_hint_max_set(bg, 640, 640); + elm_win_resize_object_add(win, bg); + evas_object_show(bg); + + /* add a vertical box that will hold everything */ + box = elm_box_add(win); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_win_resize_object_add(win, box); + evas_object_show(box); + + /* a dummy background to create some space for the animation */ + dummy = elm_bg_add(win); + evas_object_size_hint_weight_set(dummy, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(box, dummy); + evas_object_show(dummy); + + /* add an object that we are going to play with */ + /* this object isn't packed inside the box because we don't want it to have + * its size, position, aspect or anything else controled by the container */ + obj = elm_button_add(win); + elm_button_label_set(obj, "Transformed object!"); + icon = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/icon_07.png", PACKAGE_DATA_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_button_icon_set(obj, icon); + evas_object_move(obj, 160, 60); + evas_object_resize(obj, 250, 100); + evas_object_show(obj); + context.obj = obj; + + /* a callback to know if clicks are being received */ + evas_object_smart_callback_add(obj, "clicked", _object_clicked, NULL); + + /* button to start our transition */ + btn = elm_button_add(win); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_button_label_set(btn, "Transit!"); + elm_box_pack_end(box, btn); + evas_object_show(btn); + evas_object_smart_callback_add(btn, "clicked", _transit_start, &context); + + /* horizontal box to help visual organization */ + hbox = elm_box_add(win); + elm_box_horizontal_set(hbox, EINA_TRUE); + evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, 0.0); + elm_box_pack_end(box, hbox); + evas_object_show(hbox); + + /* horizontal box that will hold the many transition checkboxes */ + vbox = elm_box_add(win); + evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, 0.0); + + /* create the respective checkboxes based on our helper structure and + * array */ + for (i = 0; _transitions[i].label; i++) + _checkbox_transition_add(vbox, _transitions[i].label, + &_transitions[i].checked); + + elm_box_pack_end(hbox, vbox); + evas_object_show(vbox); + + /* vertical box that will hold the many transition option checkboxes */ + vbox2 = elm_box_add(win); + evas_object_size_hint_weight_set(vbox2, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_align_set(vbox2, EVAS_HINT_FILL, 0.0); + elm_box_pack_end(hbox, vbox2); + evas_object_show(vbox2); + + /* the rest of this code adds widgets to control some of the behavior of + * the transitions */ + cbox = elm_check_add(win); + evas_object_size_hint_weight_set(cbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(cbox, 0.0, 0.0); + elm_check_label_set(cbox, "Events enabled"); + elm_check_state_pointer_set(cbox, &context.events_enabled); + elm_box_pack_end(vbox2, cbox); + evas_object_show(cbox); + + cbox = elm_check_add(win); + evas_object_size_hint_weight_set(cbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(cbox, 0.0, 0.0); + elm_check_label_set(cbox, "Auto reverse"); + elm_check_state_pointer_set(cbox, &context.auto_reverse); + elm_box_pack_end(vbox2, cbox); + evas_object_show(cbox); + + cbox = elm_check_add(win); + evas_object_size_hint_weight_set(cbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(cbox, 0.0, 0.0); + elm_check_label_set(cbox, "Keep final state"); + elm_check_state_pointer_set(cbox, &context.final_state_keep); + elm_box_pack_end(vbox2, cbox); + evas_object_show(cbox); + + spinner = elm_spinner_add(win); + elm_object_style_set(spinner, "vertical"); + elm_spinner_min_max_set(spinner, 0, 4); + elm_spinner_label_format_set(spinner, "%.0f"); + elm_spinner_editable_set(spinner, EINA_FALSE); + evas_object_size_hint_weight_set(spinner, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(spinner, 0.0, EVAS_HINT_FILL); + evas_object_smart_callback_add(spinner, "changed", _cb_repeat_changed, &context.repeat_times); + elm_box_pack_end(vbox2, spinner); + evas_object_show(spinner); + + spinner = elm_spinner_add(win); + elm_object_style_set(spinner, "vertical"); + elm_spinner_min_max_set(spinner, 1, 4); + elm_spinner_label_format_set(spinner, "%.0f"); + elm_spinner_editable_set(spinner, EINA_FALSE); + elm_spinner_special_value_add(spinner, 1, "linear"); + elm_spinner_special_value_add(spinner, 2, "sinusoidal"); + elm_spinner_special_value_add(spinner, 3, "decelerate"); + elm_spinner_special_value_add(spinner, 4, "accelerate"); + evas_object_size_hint_weight_set(spinner, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(spinner, 0.0, EVAS_HINT_FILL); + evas_object_size_hint_min_set(spinner, 200, 30); + evas_object_smart_callback_add(spinner, "changed", _cb_tween_changed, &context.tween_mode); + elm_box_pack_end(vbox2, spinner); + evas_object_show(spinner); + + evas_object_show(win); + + elm_run(); + + return 0; +} + +ELM_MAIN() diff --git a/legacy/elementary/src/examples/transit_example_04.c b/legacy/elementary/src/examples/transit_example_04.c new file mode 100644 index 0000000000..6867bb639a --- /dev/null +++ b/legacy/elementary/src/examples/transit_example_04.c @@ -0,0 +1,181 @@ +//Compile with: +//gcc -g -DPACKAGE_DATA_DIR="\"\"" `pkg-config --cflags --libs elementary` transit_example_04.c -o transit_example_04 +// where directory is the a path where images/plant_01.jpg can be found. + + +#include +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#else +# define __UNUSED__ +#endif + +static void +_transit_flip(Elm_Transit *trans) +{ + elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE); +} + +static void +_transit_blend(Elm_Transit *trans) +{ + elm_transit_effect_blend_add(trans); +} + +static void +_transit_fade(Elm_Transit *trans) +{ + elm_transit_effect_fade_add(trans); +} + +static void +_transit_resizable_flip(Elm_Transit *trans) +{ + elm_transit_effect_resizable_flip_add( + trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE); +} + +static struct { + const char *label; + void (*transition_add_cb)(Elm_Transit *); + Eina_Bool checked; +} _transitions[] = { + { "Flip", _transit_flip, EINA_FALSE }, + { "Blend", _transit_blend, EINA_FALSE }, + { "Fade", _transit_fade, EINA_FALSE }, + { "Resizable Flip", _transit_resizable_flip, EINA_FALSE }, + { NULL, NULL, EINA_FALSE } +}; + +static void +on_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + /* quit the mainloop (elm_run) */ + elm_exit(); +} + +static void +_checkbox_transition_add(Evas_Object *box, const char *label, Eina_Bool *checked) +{ + Evas_Object *check = elm_check_add(elm_object_parent_widget_get(box)); + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(check, 0.0, 0.0); + elm_check_label_set(check, label); + elm_check_state_pointer_set(check, checked); + elm_box_pack_end(box, check); + evas_object_show(check); +} + +static void +_transit_start(void *data, Evas_Object *o, void *event_info) +{ + Elm_Transit *trans = NULL; + Eina_List *objs = data, *l; + Evas_Object *obj; + int i; + + trans = elm_transit_add(); + EINA_LIST_FOREACH(objs, l, obj) + elm_transit_object_add(trans, obj); + + // FIXME: Should check if there's another transit going before starting a new + // one + + for (i = 0; _transitions[i].label; i++) + { + if (_transitions[i].checked) + _transitions[i].transition_add_cb(trans); + } + + elm_transit_duration_set(trans, 2.0); + elm_transit_go(trans); +} + +int +elm_main(int argc __UNUSED__, char **argv __UNUSED__) +{ + Evas_Object *win, *bg, *obj, *icon, *box, *vbox, *btn, *fr, *dummy; + Elm_Transit *trans; + Eina_List *objs = NULL; + char buf[PATH_MAX]; + int i; + + /* add a window */ + win = elm_win_add(NULL, "transit", ELM_WIN_BASIC); + elm_win_title_set(win, "Transit Example"); + evas_object_smart_callback_add(win, "delete,request", on_done, NULL); + elm_win_autodel_set(win, 1); + + /* add a scalable white background to this window */ + bg = elm_bg_add(win); + elm_bg_color_set(bg, 255, 255, 255); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_min_set(bg, 640, 640); + evas_object_size_hint_max_set(bg, 640, 640); + elm_win_resize_object_add(win, bg); + evas_object_show(bg); + + box = elm_box_add(win); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_win_resize_object_add(win, box); + evas_object_show(box); + + dummy = elm_bg_add(win); + evas_object_size_hint_weight_set(dummy, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(box, dummy); + evas_object_show(dummy); + + /* add an object that we are going to play with */ + obj = elm_button_add(win); + elm_button_label_set(obj, "Transformed object!"); + icon = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/icon_07.png", PACKAGE_DATA_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_button_icon_set(obj, icon); + evas_object_move(obj, 160, 60); + evas_object_resize(obj, 250, 100); + evas_object_show(obj); + + objs = eina_list_append(objs, obj); + + /* add another object that we are going to play with */ + obj = elm_button_add(win); + elm_button_label_set(obj, "Another object!"); + icon = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/icon_08.png", PACKAGE_DATA_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_button_icon_set(obj, icon); + evas_object_move(obj, 160, 60); + evas_object_resize(obj, 250, 100); + + objs = eina_list_append(objs, obj); + + btn = elm_button_add(win); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_button_label_set(btn, "Transit!"); + elm_box_pack_end(box, btn); + evas_object_show(btn); + + evas_object_smart_callback_add(btn, "clicked", _transit_start, objs); + + vbox = elm_box_add(win); + evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, 0.0); + + for (i = 0; _transitions[i].label; i++) + _checkbox_transition_add(vbox, _transitions[i].label, &_transitions[i].checked); + + elm_box_pack_end(box, vbox); + evas_object_show(vbox); + + evas_object_show(win); + + elm_run(); + + eina_list_free(objs); + + return 0; +} + +ELM_MAIN()