elementary: move away from normal player to the new animation mixin

the mixin can handle the same things as the player. Additionally, the
usage of the mixin simplifies the animation usage alot.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10636
This commit is contained in:
Marcel Hollerbach 2019-11-10 19:10:02 +01:00
parent fa93893548
commit 0792d042e5
10 changed files with 263 additions and 366 deletions

View File

@ -7,31 +7,38 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *show_anim;
Efl_Canvas_Animation *hide_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Eina_Bool is_btn_visible;
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
Eo *anim = event->info;
static void
_anim_ended_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been ended!\n");
if (anim)
{
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -42,18 +49,17 @@ _btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
if (ad->is_btn_visible)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->show_anim);
efl_canvas_object_animation_start(ad->button, ad->show_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 1.0 to 0.0");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->hide_anim);
efl_canvas_object_animation_start(ad->button, ad->hide_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 0.0 to 1.0");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -81,6 +87,7 @@ test_efl_anim_alpha(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
evas_object_resize(btn, 200, 200);
evas_object_move(btn, 100, 50);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Show Animation
Efl_Canvas_Animation *show_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, win);
@ -97,16 +104,8 @@ test_efl_anim_alpha(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
//Initialize App Data
ad->show_anim = show_anim;
ad->hide_anim = hide_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->is_btn_visible = EINA_TRUE;
ad->button = btn;
//Button to start animation
Evas_Object *btn2 = elm_button_add(win);

View File

@ -7,32 +7,38 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *parallel_show_anim;
Efl_Canvas_Animation *parallel_hide_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Eina_Bool is_btn_visible;
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
static void
_anim_ended_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been ended!\n");
Eo *anim = event->info;
if (anim)
{
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -43,18 +49,16 @@ _btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
if (ad->is_btn_visible)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->parallel_show_anim);
efl_canvas_object_animation_start(ad->button, ad->parallel_show_anim, 1.0, 0.0);
efl_text_set(obj, "Start Parallel Group Animation to hide button");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->parallel_hide_anim);
efl_canvas_object_animation_start(ad->button, ad->parallel_hide_anim, 1.0, 0.0);
efl_text_set(obj, "Start Parallel Group Animation to show button");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -82,7 +86,7 @@ test_efl_anim_group_parallel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Show Animation
Efl_Canvas_Animation *show_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, win);
@ -133,15 +137,7 @@ test_efl_anim_group_parallel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
//Initialize App Data
ad->parallel_show_anim = parallel_show_anim;
ad->parallel_hide_anim = parallel_hide_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->is_btn_visible = EINA_TRUE;

View File

@ -7,31 +7,38 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *sequential_show_anim;
Efl_Canvas_Animation *sequential_hide_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Eina_Bool is_btn_visible;
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
Eo *anim = event->info;
static void
_anim_ended_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been ended!\n");
if (anim)
{
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -42,18 +49,15 @@ _btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
if (ad->is_btn_visible)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->sequential_show_anim);
efl_canvas_object_animation_start(ad->button, ad->sequential_show_anim, 1.0, 0.0);
efl_text_set(obj, "Start Sequential Group Animation to hide button");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->sequential_hide_anim);
efl_canvas_object_animation_start(ad->button, ad->sequential_hide_anim, 1.0, 0.0);
efl_text_set(obj, "Start Sequential Group Animation to show button");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -81,6 +85,7 @@ test_efl_anim_group_sequential(void *data EINA_UNUSED, Evas_Object *obj EINA_UNU
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
/* Animations to hide button */
@ -138,15 +143,7 @@ test_efl_anim_group_sequential(void *data EINA_UNUSED, Evas_Object *obj EINA_UNU
//Initialize App Data
ad->sequential_show_anim = sequential_show_anim;
ad->sequential_hide_anim = sequential_hide_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->is_btn_visible = EINA_TRUE;

View File

@ -13,7 +13,7 @@
typedef struct _App_Data
{
Efl_Canvas_Animation *anim[INTERP_NUM];
Efl_Canvas_Animation_Player *anim_obj[INTERP_NUM];
Efl_Ui_Button *btns[INTERP_NUM];
Evas_Object *btn[INTERP_NUM];
Evas_Object *start_all_btn;
@ -68,46 +68,49 @@ _interpolator_create(int index, Evas_Object *win)
}
static void
_anim_started_cb(void *data, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
Eo *anim = event->info;
App_Data *ad = data;
printf("Animation has been started!\n");
ad->running_anim_cnt++;
}
static void
_anim_ended_cb(void *data, const Efl_Event *event)
{
App_Data *ad = data;
int i;
printf("Animation has been ended!\n");
ad->running_anim_cnt--;
for (i = 0; i < INTERP_NUM; i++)
if (anim)
{
if (ad->anim_obj[i] == event->object)
{
elm_object_disabled_set(ad->btn[i], EINA_FALSE);
break;
}
printf("Animation has been started!\n");
ad->running_anim_cnt++;
}
else
{
int i;
if (ad->running_anim_cnt == 0)
elm_object_disabled_set(ad->start_all_btn, EINA_FALSE);
printf("Animation has been ended!\n");
ad->running_anim_cnt--;
for (i = 0; i < INTERP_NUM; i++)
{
if (ad->btns[i] == event->object)
{
elm_object_disabled_set(ad->btn[i], EINA_FALSE);
break;
}
}
if (ad->running_anim_cnt == 0)
elm_object_disabled_set(ad->start_all_btn, EINA_FALSE);
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_anim_start(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -116,7 +119,7 @@ _anim_start(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
int index = (uintptr_t)evas_object_data_get(obj, "index");
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj[index], EINA_TRUE);
efl_canvas_object_animation_start(ad->btns[index], ad->anim[index], 1.0, 0.0);
elm_object_disabled_set(obj, EINA_TRUE);
elm_object_disabled_set(ad->start_all_btn, EINA_TRUE);
@ -131,7 +134,7 @@ _anim_start_all(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
for (i = 0; i < INTERP_NUM; i++)
{
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj[i], EINA_TRUE);
efl_canvas_object_animation_start(ad->btns[i], ad->anim[i], 1.0, 0.0);
elm_object_disabled_set(ad->btn[i], EINA_TRUE);
}
@ -147,9 +150,7 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUS
for (i = 0; i < INTERP_NUM; i++)
{
//Unregister callback called when window deletes
efl_event_callback_del(ad->anim_obj[i],
EFL_ANIMATION_PLAYER_EVENT_ENDED,
_anim_ended_cb, ad);
efl_event_callback_array_del(ad->btns[i], animation_stats_cb(), ad);
}
free(ad);
@ -211,23 +212,8 @@ test_efl_anim_interpolator(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
ad->anim[i] = anim;
//Create Animation Object from Animation
Efl_Canvas_Animation_Player *anim_obj =
efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_animation_set(efl_added, anim),
efl_animation_player_target_set(efl_added, btn));
ad->anim_obj[i] = anim_obj;
//Register callback called when animation starts
efl_event_callback_add(anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED,
_anim_started_cb, ad);
//Register callback called when animation ends
efl_event_callback_add(anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED,
_anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING,
_anim_running_cb, NULL);
ad->btns[i] = btn;
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
}
ad->running_anim_cnt = 0;

View File

@ -7,7 +7,7 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *show_anim;
Efl_Canvas_Animation *hide_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Evas_Object *pause_btn;
@ -16,60 +16,54 @@ typedef struct _App_Data
} App_Data;
static void
_anim_started_cb(void *data, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
Eo *anim = event->info;
App_Data *ad = data;
printf("Animation has been started!\n");
elm_object_disabled_set(ad->pause_btn, EINA_FALSE);
}
static void
_anim_ended_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
App_Data *ad = data;
printf("Animation has been ended!\n");
elm_object_disabled_set(ad->pause_btn, EINA_TRUE);
if (anim)
{
printf("Animation has been started!\n");
elm_object_disabled_set(ad->pause_btn, EINA_FALSE);
}
else
{
printf("Animation has been ended!\n");
elm_object_disabled_set(ad->pause_btn, EINA_TRUE);
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
App_Data *ad = data;
if (ad->anim_obj)
{
ad->is_anim_paused = EINA_FALSE;
elm_object_text_set(ad->pause_btn, "Pause Animation");
}
ad->is_btn_visible = !(ad->is_btn_visible);
if (ad->is_btn_visible)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->show_anim);
efl_canvas_object_animation_start(ad->button, ad->show_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 1.0 to 0.0");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->hide_anim);
efl_canvas_object_animation_start(ad->button, ad->hide_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 0.0 to 1.0");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -82,13 +76,13 @@ _pause_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED
if (ad->is_anim_paused)
{
//Pause animation
efl_player_paused_set(ad->anim_obj, EINA_TRUE);
efl_canvas_object_animation_pause_set(ad->button, EINA_TRUE);
elm_object_text_set(obj, "Resume Animation");
}
else
{
//Resume animation
efl_player_paused_set(ad->anim_obj, EINA_FALSE);
efl_canvas_object_animation_pause_set(ad->button, EINA_FALSE);
elm_object_text_set(obj, "Pause Animation");
}
}
@ -118,6 +112,7 @@ test_efl_anim_pause(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
evas_object_resize(btn, 200, 200);
evas_object_move(btn, 100, 50);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Show Animation
Efl_Canvas_Animation *show_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, win);
@ -152,25 +147,14 @@ test_efl_anim_pause(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
//Pause button becomes enabled only if the animation is started
elm_object_disabled_set(pause_btn, EINA_TRUE);
//Initialize App Data
ad->show_anim = show_anim;
ad->hide_anim = hide_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, ad);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->pause_btn = pause_btn;
ad->is_btn_visible = EINA_TRUE;
ad->is_anim_paused = EINA_FALSE;
evas_object_resize(win, 400, 450);
evas_object_show(win);
}

View File

@ -7,7 +7,7 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *show_anim;
Efl_Canvas_Animation *hide_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Evas_Object *start_btn;
Evas_Object *repeat_count_spin;
@ -27,46 +27,50 @@ _anim_repeat_mode_get(Evas_Object *spinner)
return EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE;
}
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
static void
_anim_ended_cb(void *data, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
Eo *anim = event->info;
App_Data *ad = data;
printf("Animation has been ended!\n");
Efl_Canvas_Animation_Repeat_Mode repeat_mode = _anim_repeat_mode_get(ad->repeat_mode_spin);
if (repeat_mode == EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE)
if (anim)
{
int repeat_count = elm_spinner_value_get(ad->repeat_count_spin);
if (repeat_count % 2 == 1)
{
ad->is_btn_visible = !(ad->is_btn_visible);
if (ad->is_btn_visible)
elm_object_text_set(ad->start_btn, "Start Alpha Animation from 1.0 to 0.0");
else
elm_object_text_set(ad->start_btn, "Start Alpha Animation from 0.0 to 1.0");
}
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
Efl_Canvas_Animation_Repeat_Mode repeat_mode = _anim_repeat_mode_get(ad->repeat_mode_spin);
if (repeat_mode == EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE)
{
int repeat_count = elm_spinner_value_get(ad->repeat_count_spin);
if (repeat_count % 2 == 1)
{
ad->is_btn_visible = !(ad->is_btn_visible);
if (ad->is_btn_visible)
elm_object_text_set(ad->start_btn, "Start Alpha Animation from 1.0 to 0.0");
else
elm_object_text_set(ad->start_btn, "Start Alpha Animation from 0.0 to 1.0");
}
}
elm_object_disabled_set(ad->repeat_count_spin, EINA_FALSE);
elm_object_disabled_set(ad->repeat_mode_spin, EINA_FALSE);
}
elm_object_disabled_set(ad->repeat_count_spin, EINA_FALSE);
elm_object_disabled_set(ad->repeat_mode_spin, EINA_FALSE);
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -89,7 +93,7 @@ _start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED
efl_animation_repeat_mode_set(ad->show_anim, repeat_mode);
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->show_anim);
efl_canvas_object_animation_start(ad->button, ad->show_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 1.0 to 0.0");
}
else
@ -101,12 +105,9 @@ _start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED
efl_animation_repeat_mode_set(ad->hide_anim, repeat_mode);
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->hide_anim);
efl_canvas_object_animation_start(ad->button, ad->hide_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 0.0 to 1.0");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -133,6 +134,7 @@ test_efl_anim_repeat(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
evas_object_resize(btn, 200, 200);
evas_object_move(btn, 100, 50);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Show Animation
Efl_Canvas_Animation *show_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, win);
@ -178,24 +180,14 @@ test_efl_anim_repeat(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
evas_object_move(repeat_mode_spin, 100, 400);
evas_object_show(repeat_mode_spin);
//Initialize App Data
ad->show_anim = show_anim;
ad->hide_anim = hide_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->start_btn = start_btn;
ad->repeat_count_spin = repeat_count_spin;
ad->repeat_mode_spin = repeat_mode_spin;
ad->is_btn_visible = EINA_TRUE;
ad->button = btn;
evas_object_resize(win, 400, 500);
evas_object_show(win);

View File

@ -7,31 +7,38 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *cw_45_degrees_anim;
Efl_Canvas_Animation *ccw_45_degrees_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Eina_Bool is_btn_rotated;
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
Eo *anim = event->info;
static void
_anim_ended_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been ended!\n");
if (anim)
{
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -42,18 +49,15 @@ _btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
if (ad->is_btn_rotated)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->cw_45_degrees_anim);
efl_canvas_object_animation_start(ad->button, ad->cw_45_degrees_anim, 1.0, 0.0);
efl_text_set(obj, "Start Rotate Animation from 45 to 0 degrees");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->ccw_45_degrees_anim);
efl_canvas_object_animation_start(ad->button, ad->ccw_45_degrees_anim, 1.0, 0.0);
efl_text_set(obj, "Start Rotate Animation from 0 to 45 degrees");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -81,6 +85,7 @@ test_efl_anim_rotate(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Rotate from 0 to 45 degrees Animation
Efl_Canvas_Animation *cw_45_degrees_anim = efl_add(EFL_CANVAS_ANIMATION_ROTATE_CLASS, win);
@ -97,16 +102,7 @@ test_efl_anim_rotate(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
//Initialize App Data
ad->cw_45_degrees_anim = cw_45_degrees_anim;
ad->ccw_45_degrees_anim = ccw_45_degrees_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->is_btn_rotated = EINA_FALSE;
//Button to start animation
@ -140,6 +136,7 @@ test_efl_anim_rotate_relative(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Pivot to be center of the rotation
Evas_Object *pivot = elm_button_add(win);
@ -164,18 +161,8 @@ test_efl_anim_rotate_relative(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS
//Initialize App Data
ad->cw_45_degrees_anim = cw_45_degrees_anim;
ad->ccw_45_degrees_anim = ccw_45_degrees_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->is_btn_rotated = EINA_FALSE;
ad->button = btn;
//Button to start animation
Evas_Object *btn2 = elm_button_add(win);
@ -208,6 +195,7 @@ test_efl_anim_rotate_absolute(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Absolute coordinate (0, 0) to be center of the rotation
Evas_Object *abs_center = elm_button_add(win);
@ -232,17 +220,8 @@ test_efl_anim_rotate_absolute(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS
//Initialize App Data
ad->cw_45_degrees_anim = cw_45_degrees_anim;
ad->ccw_45_degrees_anim = ccw_45_degrees_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->is_btn_rotated = EINA_FALSE;
ad->button = btn;
//Button to start animation
Evas_Object *btn2 = elm_button_add(win);

View File

@ -7,31 +7,38 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *scale_double_anim;
Efl_Canvas_Animation *scale_half_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Eina_Bool is_btn_scaled;
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
Eo *anim = event->info;
static void
_anim_ended_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been ended!\n");
if (anim)
{
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -42,18 +49,15 @@ _btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
if (ad->is_btn_scaled)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->scale_double_anim);
efl_canvas_object_animation_start(ad->button, ad->scale_double_anim, 1.0, 0.0);
efl_text_set(obj, "Start Scale Animation to zoom out");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->scale_half_anim);
efl_canvas_object_animation_start(ad->button, ad->scale_half_anim, 1.0, 0.0);
efl_text_set(obj, "Start Scale Animation to zoom in");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -81,6 +85,7 @@ test_efl_anim_scale(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Scale Animation to zoom in
Efl_Canvas_Animation *scale_double_anim = efl_add(EFL_CANVAS_ANIMATION_SCALE_CLASS, win);
@ -97,19 +102,8 @@ test_efl_anim_scale(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *
//Initialize App Data
ad->scale_double_anim = scale_double_anim;
ad->scale_half_anim = scale_half_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->is_btn_scaled = EINA_FALSE;
ad->button = btn;
//Button to start animation
Evas_Object *btn2 = elm_button_add(win);
@ -142,6 +136,7 @@ test_efl_anim_scale_relative(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Pivot to be center of the scaling
Evas_Object *pivot = elm_button_add(win);
@ -166,15 +161,7 @@ test_efl_anim_scale_relative(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
//Initialize App Data
ad->scale_double_anim = scale_double_anim;
ad->scale_half_anim = scale_half_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->is_btn_scaled = EINA_FALSE;
//Button to start animation
@ -208,6 +195,7 @@ test_efl_anim_scale_absolute(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Absolute coordinate (0, 0) to be center of the scaling
Evas_Object *abs_center = elm_button_add(win);
@ -232,15 +220,7 @@ test_efl_anim_scale_absolute(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
//Initialize App Data
ad->scale_double_anim = scale_double_anim;
ad->scale_half_anim = scale_half_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->is_btn_scaled = EINA_FALSE;
//Button to start animation

View File

@ -7,7 +7,7 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *show_anim;
Efl_Canvas_Animation *hide_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Evas_Object *start_delay_spin;
@ -15,29 +15,35 @@ typedef struct _App_Data
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
static void
_anim_ended_cb(void *data, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data, const Efl_Event *event EINA_UNUSED)
{
Eo *anim = event->info;
App_Data *ad = data;
printf("Animation has been ended!\n");
elm_object_disabled_set(ad->start_delay_spin, EINA_FALSE);
if (anim)
{
printf("Animation has been started!\n");
elm_object_disabled_set(ad->start_delay_spin, EINA_FALSE);
}
else
{
printf("Animation has been ended!\n");
elm_object_disabled_set(ad->start_delay_spin, EINA_TRUE);
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -54,7 +60,7 @@ _start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED
efl_animation_start_delay_set(ad->show_anim, start_delay);
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->show_anim);
efl_canvas_object_animation_start(ad->button, ad->show_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 1.0 to 0.0");
}
else
@ -63,12 +69,9 @@ _start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED
efl_animation_start_delay_set(ad->hide_anim, start_delay);
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->hide_anim);
efl_canvas_object_animation_start(ad->button, ad->hide_anim, 1.0, 0.0);
efl_text_set(obj, "Start Alpha Animation from 0.0 to 1.0");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -96,6 +99,7 @@ test_efl_anim_start_delay(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
evas_object_resize(btn, 200, 200);
evas_object_move(btn, 100, 50);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Show Animation
Efl_Canvas_Animation *show_anim = efl_add(EFL_CANVAS_ANIMATION_ALPHA_CLASS, win);
@ -130,23 +134,12 @@ test_efl_anim_start_delay(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
evas_object_move(start_delay_spin, 100, 350);
evas_object_show(start_delay_spin);
//Initialize App Data
ad->show_anim = show_anim;
ad->hide_anim = hide_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, ad);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->start_delay_spin = start_delay_spin;
ad->is_btn_visible = EINA_TRUE;
ad->button = btn;
evas_object_resize(win, 400, 450);
evas_object_show(win);

View File

@ -7,31 +7,38 @@ typedef struct _App_Data
{
Efl_Canvas_Animation *translate_rb_anim;
Efl_Canvas_Animation *translate_lt_anim;
Efl_Canvas_Animation_Player *anim_obj;
Elm_Button *button;
Eina_Bool is_btn_translated;
} App_Data;
static void
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
_anim_changed_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been started!\n");
}
Eo *anim = event->info;
static void
_anim_ended_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
printf("Animation has been ended!\n");
if (anim)
{
printf("Animation has been started!\n");
}
else
{
printf("Animation has been ended!\n");
}
}
static void
_anim_running_cb(void *data EINA_UNUSED, const Efl_Event *event)
{
Efl_Canvas_Animation_Player_Event_Running *event_running = event->info;
double progress = event_running->progress;
printf("Animation is running! Current progress(%lf)\n", progress);
double *progress = event->info;
printf("Animation is running! Current progress(%lf)\n", *progress);
}
EFL_CALLBACKS_ARRAY_DEFINE(animation_stats_cb,
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, _anim_changed_cb },
{EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, _anim_running_cb },
)
static void
_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
@ -42,18 +49,15 @@ _btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
if (ad->is_btn_translated)
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->translate_rb_anim);
efl_canvas_object_animation_start(ad->button, ad->translate_rb_anim, 1.0, 0.0);
efl_text_set(obj, "Start Translate Animation to left top");
}
else
{
//Create Animation Object from Animation
efl_animation_player_animation_set(ad->anim_obj, ad->translate_lt_anim);
efl_canvas_object_animation_start(ad->button, ad->translate_lt_anim, 1.0, 0.0);
efl_text_set(obj, "Start Translate Animation to right bottom");
}
//Let Animation Object start animation
efl_player_playing_set(ad->anim_obj, EINA_TRUE);
}
static void
@ -81,6 +85,7 @@ test_efl_anim_translate(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vo
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Translate Animation to right bottom relatively
Efl_Canvas_Animation *translate_rb_anim = efl_add(EFL_CANVAS_ANIMATION_TRANSLATE_CLASS, win);
@ -97,15 +102,7 @@ test_efl_anim_translate(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vo
//Initialize App Data
ad->translate_rb_anim = translate_rb_anim;
ad->translate_lt_anim = translate_lt_anim;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
ad->is_btn_translated = EINA_FALSE;
//Button to start animation
@ -139,6 +136,7 @@ test_efl_anim_translate_absolute(void *data EINA_UNUSED, Evas_Object *obj EINA_U
evas_object_resize(btn, 150, 150);
evas_object_move(btn, 125, 100);
evas_object_show(btn);
efl_event_callback_array_add(btn, animation_stats_cb(), ad);
//Absolute coordinate (0, 0) for absolute translation
Evas_Object *abs_center = elm_button_add(win);
@ -164,14 +162,7 @@ test_efl_anim_translate_absolute(void *data EINA_UNUSED, Evas_Object *obj EINA_U
ad->translate_rb_anim = translate_rb_anim;
ad->translate_lt_anim = translate_lt_anim;
ad->is_btn_translated = EINA_FALSE;
ad->anim_obj = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS, win,
efl_animation_player_target_set(efl_added, btn));
//Register callback called when animation starts
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_STARTED, _anim_started_cb, NULL);
//Register callback called when animation ends
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_ENDED, _anim_ended_cb, NULL);
//Register callback called while animation is executed
efl_event_callback_add(ad->anim_obj, EFL_ANIMATION_PLAYER_EVENT_RUNNING, _anim_running_cb, NULL);
ad->button = btn;
//Button to start animation
Evas_Object *btn2 = elm_button_add(win);