It allows you to apply more than one effect at once, and also allows to set properties like event_enabled, auto_reverse, repeat_times and tween_mode.
#include <Elementary.h>
struct Context
{
Eina_Bool events_enabled;
Eina_Bool auto_reverse;
Eina_Bool final_state_keep;
int repeat_times;
Evas_Object *obj;
};
static void
{
}
static void
{
}
static void
{
}
static void
{
}
static void
{
}
static void
{
}
static struct {
const char *label;
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
_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)
{
int i;
struct Context *ctxt = data;
Evas_Object *obj = ctxt->obj;
for (i = 0; _transitions[i].label; i++)
{
if (_transitions[i].checked)
_transitions[i].transition_add_cb(trans);
}
}
static void
_object_clicked(void *data, Evas_Object *o, void *event_info)
{
printf("object clicked!\n");
}
static void
_cb_repeat_changed(void *data, Evas_Object *obj, void *event)
{
int *repeat_cnt = data;
}
static void
_cb_tween_changed(void *data, Evas_Object *obj, void *event)
{
double val = 0.0;
if (val == 1.0)
else if (val == 2.0)
else if (val == 3.0)
else if (val == 4.0)
}
EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *win, *obj, *icon, *box, *vbox, *vbox2, *hbox, *btn;
Evas_Object *cbox, *dummy, *spinner;
char buf[PATH_MAX];
int i;
struct Context context;
context.events_enabled = EINA_FALSE;
context.auto_reverse = EINA_FALSE;
context.final_state_keep = EINA_FALSE;
context.repeat_times = 0;
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(box);
evas_object_size_hint_weight_set(dummy, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(dummy);
elm_object_text_set(obj, "Transformed object!");
evas_object_move(obj, 160, 60);
evas_object_resize(obj, 250, 100);
evas_object_show(obj);
context.obj = obj;
evas_object_smart_callback_add(obj, "clicked", _object_clicked, NULL);
evas_object_size_hint_weight_set(box, 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, &context);
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);
evas_object_show(hbox);
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);
evas_object_show(vbox);
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);
evas_object_show(vbox2);
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_object_text_set(cbox, "Events enabled");
evas_object_show(cbox);
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_object_text_set(cbox, "Auto reverse");
evas_object_show(cbox);
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_object_text_set(cbox, "Keep final state");
evas_object_show(cbox);
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);
evas_object_show(spinner);
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_tween_changed, &context.tween_mode);
evas_object_show(spinner);
evas_object_show(win);
return 0;
}