You can mix more than one effect of this type on the same objects, and the transition will apply both.
#include <Elementary.h>
static void
{
}
static void
{
}
static void
{
}
static void
{
}
static struct {
const char *label;
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
_checkbox_transition_add(Evas_Object *box, const char *label, Eina_Bool *checked)
{
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_object_text_set(check, label);
evas_object_show(check);
}
static void
_transit_start(void *data, Evas_Object *o, void *event_info)
{
Eina_List *objs = data, *l;
Evas_Object *obj;
int i;
EINA_LIST_FOREACH(objs, l, obj)
for (i = 0; _transitions[i].label; i++)
{
if (_transitions[i].checked)
_transitions[i].transition_add_cb(trans);
}
}
EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *win, *icon, *box, *hbox, *btn, *rect;
Eina_List *objs = NULL;
char buf[PATH_MAX];
int i;
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(box);
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
elm_object_text_set(btn, "Transformed object!");
evas_object_move(btn, 50, 50);
evas_object_resize(btn, 200, 50);
evas_object_show(btn);
objs = eina_list_append(objs, btn);
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
elm_object_text_set(btn, "Another object!");
evas_object_move(btn, 50, 50);
evas_object_resize(btn, 200, 50);
objs = eina_list_append(objs, btn);
evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, 0.0);
evas_object_show(hbox);
for (i = 0; _transitions[i].label; i++)
_checkbox_transition_add(hbox, _transitions[i].label, &_transitions[i].checked);
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_text_set(btn, "Transit!");
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked", _transit_start, objs);
rect = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(rect, 0, 0, 0, 0);
evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(rect, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(rect);
evas_object_resize(win, 300, 100);
evas_object_show(win);
return 0;
}