diff options
author | Jaehyun Cho <jae_hyun.cho@samsung.com> | 2017-07-13 19:07:11 +0900 |
---|---|---|
committer | Jaehyun Cho <jae_hyun.cho@samsung.com> | 2017-08-18 12:06:01 +0900 |
commit | 79230ed40616c68a1e79bf2eefcb1250dd8b43c7 (patch) | |
tree | 9494ba041fb8920f9377d8467494ae5e44b6b20d | |
parent | 71aca113bd7ca9c0dcfc8bf19be73a2bd7aa1503 (diff) | |
download | efl-79230ed40616c68a1e79bf2eefcb1250dd8b43c7.tar.gz |
efl_animation: Add start_delay property
Add start_delay property to delay the given amount of time in seconds
from when the animation starts until the animation is animated.
-rw-r--r-- | src/lib/evas/Evas_Internal.h | 3 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation.c | 23 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation.eo | 9 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_alpha.c | 3 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_group_parallel.c | 3 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_group_sequential.c | 3 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_instance.c | 91 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_instance_group_parallel.c | 88 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_instance_group_sequential.c | 74 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_rotate.c | 3 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_scale.c | 3 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_translate.c | 3 |
12 files changed, 286 insertions, 20 deletions
diff --git a/src/lib/evas/Evas_Internal.h b/src/lib/evas/Evas_Internal.h index 984bc27e76..3296fea633 100644 --- a/src/lib/evas/Evas_Internal.h +++ b/src/lib/evas/Evas_Internal.h @@ -93,6 +93,9 @@ EOAPI Eina_Bool efl_animation_instance_final_state_keep_get(const Eo *obj); EOAPI void efl_animation_instance_duration_set(Eo *obj, double duration); EOAPI double efl_animation_instance_duration_get(const Eo *obj); +EOAPI void efl_animation_instance_start_delay_set(Eo *obj, double delay_time); +EOAPI double efl_animation_instance_start_delay_get(const Eo *obj); + EOAPI void efl_animation_instance_repeat_count_set(Eo *obj, int count); EOAPI int efl_animation_instance_repeat_count_get(const Eo *obj); diff --git a/src/lib/evas/canvas/efl_animation.c b/src/lib/evas/canvas/efl_animation.c index 1446c47980..e1265c761d 100644 --- a/src/lib/evas/canvas/efl_animation.c +++ b/src/lib/evas/canvas/efl_animation.c @@ -33,6 +33,7 @@ struct _Evas_Object_Animation_Data Efl_Canvas_Object *target; double duration; + double start_delay_time; int repeat_count; @@ -114,6 +115,27 @@ _efl_animation_repeat_count_get(Eo *eo_obj, Evas_Object_Animation_Data *pd) return pd->repeat_count; } +EOLIAN static void +_efl_animation_start_delay_set(Eo *eo_obj, + Evas_Object_Animation_Data *pd, + double delay_time) +{ + EFL_ANIMATION_CHECK_OR_RETURN(eo_obj); + + if (delay_time < 0.0) return; + + pd->start_delay_time = delay_time; +} + +EOLIAN static double +_efl_animation_start_delay_get(Eo *eo_obj, + Evas_Object_Animation_Data *pd) +{ + EFL_ANIMATION_CHECK_OR_RETURN(eo_obj, 0.0); + + return pd->start_delay_time; +} + EOLIAN static Eina_Bool _efl_animation_is_deleted(Eo *eo_obj, Evas_Object_Animation_Data *pd) { @@ -151,6 +173,7 @@ _efl_animation_efl_object_constructor(Eo *eo_obj, pd->target = NULL; pd->duration = 0.0; + pd->start_delay_time = 0.0; pd->repeat_count = 0; diff --git a/src/lib/evas/canvas/efl_animation.eo b/src/lib/evas/canvas/efl_animation.eo index 084fd7a7b0..aed41751a8 100644 --- a/src/lib/evas/canvas/efl_animation.eo +++ b/src/lib/evas/canvas/efl_animation.eo @@ -42,6 +42,15 @@ abstract Efl.Animation (Efl.Object) count: int; [[Repeat count. -1 repeats animation infinitely.]] } } + @property start_delay { + set { + } + get { + } + values { + delay_time: double; [[Delay time, in seconds, from when the animation starts until the animation is animated]] + } + } instance_create { [[Create instance of the animation.]] return: Efl.Animation.Instance; [[Created instance of the animation]] diff --git a/src/lib/evas/canvas/efl_animation_alpha.c b/src/lib/evas/canvas/efl_animation_alpha.c index 8be3485122..e3f255ff8f 100644 --- a/src/lib/evas/canvas/efl_animation_alpha.c +++ b/src/lib/evas/canvas/efl_animation_alpha.c @@ -67,6 +67,9 @@ _efl_animation_alpha_efl_animation_instance_create(Eo *eo_obj, Evas_Object_Anima double duration = efl_animation_duration_get(eo_obj); efl_animation_instance_duration_set(instance, duration); + double start_delay_time = efl_animation_start_delay_get(eo_obj); + efl_animation_instance_start_delay_set(instance, start_delay_time); + int repeat_count = efl_animation_repeat_count_get(eo_obj); efl_animation_instance_repeat_count_set(instance, repeat_count); diff --git a/src/lib/evas/canvas/efl_animation_group_parallel.c b/src/lib/evas/canvas/efl_animation_group_parallel.c index a92e08b046..3007664f90 100644 --- a/src/lib/evas/canvas/efl_animation_group_parallel.c +++ b/src/lib/evas/canvas/efl_animation_group_parallel.c @@ -51,6 +51,9 @@ _efl_animation_group_parallel_efl_animation_instance_create(Eo *eo_obj, if (duration > 0.0) efl_animation_instance_duration_set(group_inst, duration); + double start_delay_time = efl_animation_start_delay_get(eo_obj); + efl_animation_instance_start_delay_set(group_inst, start_delay_time); + int repeat_count = efl_animation_repeat_count_get(eo_obj); efl_animation_instance_repeat_count_set(group_inst, repeat_count); diff --git a/src/lib/evas/canvas/efl_animation_group_sequential.c b/src/lib/evas/canvas/efl_animation_group_sequential.c index b24410f7d2..9b2c3dd705 100644 --- a/src/lib/evas/canvas/efl_animation_group_sequential.c +++ b/src/lib/evas/canvas/efl_animation_group_sequential.c @@ -51,6 +51,9 @@ _efl_animation_group_sequential_efl_animation_instance_create(Eo *eo_obj, if (duration > 0.0) efl_animation_instance_duration_set(group_inst, duration); + double start_delay_time = efl_animation_start_delay_get(eo_obj); + efl_animation_instance_start_delay_set(group_inst, start_delay_time); + int repeat_count = efl_animation_repeat_count_get(eo_obj); efl_animation_instance_repeat_count_set(group_inst, repeat_count); diff --git a/src/lib/evas/canvas/efl_animation_instance.c b/src/lib/evas/canvas/efl_animation_instance.c index fb4e937d60..cb0c3a0b0c 100644 --- a/src/lib/evas/canvas/efl_animation_instance.c +++ b/src/lib/evas/canvas/efl_animation_instance.c @@ -39,6 +39,9 @@ struct _Evas_Object_Animation_Instance_Data */ Ecore_Animator *animator; + Ecore_Timer *start_delay_timer; + double start_delay_time; + struct { double begin; @@ -300,21 +303,13 @@ end: } static void -_start(Eo *eo_obj, Evas_Object_Animation_Instance_Data *pd) +_init_start(Eo *eo_obj, Evas_Object_Animation_Instance_Data *pd) { - //Resume animation if animation is paused - if (pd->paused) - { - efl_animation_instance_resume(eo_obj); - return; - } - //Save current state of target object _target_state_save(pd->target, pd->target_state); pd->cancelled = EINA_FALSE; pd->ended = EINA_FALSE; - pd->paused = EINA_FALSE; pd->paused_time = 0.0; @@ -330,12 +325,37 @@ _start(Eo *eo_obj, Evas_Object_Animation_Instance_Data *pd) //pre start event is supported within class only (protected event) efl_event_callback_call(eo_obj, EFL_ANIMATION_INSTANCE_EVENT_PRE_START, NULL); efl_event_callback_call(eo_obj, EFL_ANIMATION_INSTANCE_EVENT_START, NULL); +} + +static void +_start(Eo *eo_obj, Evas_Object_Animation_Instance_Data *pd) +{ + _init_start(eo_obj, pd); pd->animator = ecore_animator_add(_animator_cb, eo_obj); _animator_cb(eo_obj); } +static Eina_Bool +_start_delay_timer_cb(void *data) +{ + Eo *eo_obj = data; + EFL_ANIMATION_INSTANCE_DATA_GET(eo_obj, pd); + + pd->start_delay_timer = NULL; + + if (pd->paused) + { + pd->time.pause_begin = ecore_loop_time_get(); + _init_start(eo_obj, pd); + } + else + _start(eo_obj, pd); + + return ECORE_CALLBACK_CANCEL; +} + EOLIAN static void _efl_animation_instance_start(Eo *eo_obj, Evas_Object_Animation_Instance_Data *pd) @@ -344,8 +364,17 @@ _efl_animation_instance_start(Eo *eo_obj, if (pd->paused) return; + if (pd->start_delay_timer) return; + pd->is_group_member = EINA_FALSE; + if (pd->start_delay_time > 0.0) + { + pd->start_delay_timer = ecore_timer_add(pd->start_delay_time, + _start_delay_timer_cb, eo_obj); + return; + } + _start(eo_obj, pd); } @@ -357,17 +386,52 @@ _efl_animation_instance_member_start(Eo *eo_obj, if (pd->paused) return; + if (pd->paused) return; + + if (pd->start_delay_timer) return; + pd->is_group_member = EINA_TRUE; + if (pd->start_delay_time > 0.0) + { + pd->start_delay_timer = ecore_timer_add(pd->start_delay_time, + _start_delay_timer_cb, eo_obj); + return; + } + _start(eo_obj, pd); } EOLIAN static void +_efl_animation_instance_start_delay_set(Eo *eo_obj, + Evas_Object_Animation_Instance_Data *pd, + double delay_time) +{ + EFL_ANIMATION_INSTANCE_CHECK_OR_RETURN(eo_obj); + + if (delay_time < 0.0) return; + + pd->start_delay_time = delay_time; +} + +EOLIAN static double +_efl_animation_instance_start_delay_get(Eo *eo_obj, + Evas_Object_Animation_Instance_Data *pd) +{ + EFL_ANIMATION_INSTANCE_CHECK_OR_RETURN(eo_obj, 0.0); + + return pd->start_delay_time; +} + +EOLIAN static void _efl_animation_instance_cancel(Eo *eo_obj, Evas_Object_Animation_Instance_Data *pd) { EFL_ANIMATION_INSTANCE_CHECK_OR_RETURN(eo_obj); + ecore_timer_del(pd->start_delay_timer); + pd->start_delay_timer = NULL; + pd->cancelled = EINA_TRUE; if (pd->animator) @@ -400,6 +464,8 @@ _efl_animation_instance_pause(Eo *eo_obj, if (pd->paused) return; pd->paused = EINA_TRUE; + if (pd->start_delay_timer) return; + ecore_animator_del(pd->animator); pd->animator = NULL; @@ -419,6 +485,8 @@ _efl_animation_instance_resume(Eo *eo_obj, if (!pd->paused) return; pd->paused = EINA_FALSE; + if (pd->start_delay_timer) return; + pd->paused_time += (ecore_loop_time_get() - pd->time.pause_begin); pd->animator = ecore_animator_add(_animator_cb, eo_obj); @@ -506,6 +574,9 @@ EOAPI EFL_FUNC_BODY_CONST(efl_animation_instance_final_state_keep_get, Eina_Bool EOAPI EFL_VOID_FUNC_BODYV(efl_animation_instance_duration_set, EFL_FUNC_CALL(duration), double duration); EOAPI EFL_FUNC_BODY_CONST(efl_animation_instance_duration_get, double, 0); +EOAPI EFL_VOID_FUNC_BODYV(efl_animation_instance_start_delay_set, EFL_FUNC_CALL(delay_time), double delay_time); +EOAPI EFL_FUNC_BODY_CONST(efl_animation_instance_start_delay_get, double, 0); + EOAPI EFL_VOID_FUNC_BODYV(efl_animation_instance_repeat_count_set, EFL_FUNC_CALL(count), int count); EOAPI EFL_FUNC_BODY_CONST(efl_animation_instance_repeat_count_get, int, 0); @@ -531,6 +602,8 @@ EWAPI const Efl_Event_Description _EFL_ANIMATION_INSTANCE_EVENT_POST_END = EFL_OBJECT_OP_FUNC(efl_animation_instance_final_state_keep_get, _efl_animation_instance_final_state_keep_get), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_duration_set, _efl_animation_instance_duration_set), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_duration_get, _efl_animation_instance_duration_get), \ + EFL_OBJECT_OP_FUNC(efl_animation_instance_start_delay_set, _efl_animation_instance_start_delay_set), \ + EFL_OBJECT_OP_FUNC(efl_animation_instance_start_delay_get, _efl_animation_instance_start_delay_get), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_repeat_count_set, _efl_animation_instance_repeat_count_set), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_repeat_count_get, _efl_animation_instance_repeat_count_get), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_is_deleted, _efl_animation_instance_is_deleted), \ diff --git a/src/lib/evas/canvas/efl_animation_instance_group_parallel.c b/src/lib/evas/canvas/efl_animation_instance_group_parallel.c index d59de84d02..6a2d4b8e68 100644 --- a/src/lib/evas/canvas/efl_animation_instance_group_parallel.c +++ b/src/lib/evas/canvas/efl_animation_instance_group_parallel.c @@ -24,15 +24,18 @@ struct _Evas_Object_Animation_Instance_Group_Parallel_Data { Ecore_Animator *start_animator; - int animate_inst_count; - int animate_inst_index; - int remaining_repeat_count; + Ecore_Timer *start_delay_timer; + double start_delay_time; - Eina_List *finished_inst_list; + int animate_inst_count; + int animate_inst_index; + int remaining_repeat_count; - Eina_Bool started : 1; - Eina_Bool paused : 1; - Eina_Bool is_group_member : 1; + Eina_List *finished_inst_list; + + Eina_Bool started : 1; + Eina_Bool paused : 1; + Eina_Bool is_group_member : 1; }; static void @@ -180,7 +183,7 @@ _member_post_end_cb(void *data, const Efl_Event *event) } static void -_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) +_init_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) { ecore_animator_del(pd->start_animator); pd->start_animator = NULL; @@ -196,6 +199,12 @@ _start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) pd->finished_inst_list = NULL; efl_event_callback_call(eo_obj, EFL_ANIMATION_INSTANCE_EVENT_START, NULL); +} + +static void +_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) +{ + _init_start(eo_obj, pd); Eina_List *instances = efl_animation_instance_group_instances_get(eo_obj); Eina_List *l; @@ -208,6 +217,22 @@ _start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) } } +static Eina_Bool +_start_delay_timer_cb(void *data) +{ + Eo *eo_obj = data; + EFL_ANIMATION_INSTANCE_GROUP_PARALLEL_DATA_GET(eo_obj, pd); + + pd->start_delay_timer = NULL; + + if (pd->paused) + _init_start(eo_obj, pd); + else + _start(eo_obj, pd); + + return ECORE_CALLBACK_CANCEL; +} + EOLIAN static void _efl_animation_instance_group_parallel_efl_animation_instance_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) @@ -216,8 +241,17 @@ _efl_animation_instance_group_parallel_efl_animation_instance_start(Eo *eo_obj, if (pd->paused) return; + if (pd->start_delay_timer) return; + pd->is_group_member = EINA_FALSE; + if (pd->start_delay_time > 0.0) + { + pd->start_delay_timer = ecore_timer_add(pd->start_delay_time, + _start_delay_timer_cb, eo_obj); + return; + } + _start(eo_obj, pd); } @@ -229,12 +263,42 @@ _efl_animation_instance_group_parallel_efl_animation_instance_member_start(Eo *e if (pd->paused) return; + if (pd->start_delay_timer) return; + pd->is_group_member = EINA_TRUE; + if (pd->start_delay_time > 0.0) + { + pd->start_delay_timer = ecore_timer_add(pd->start_delay_time, + _start_delay_timer_cb, eo_obj); + return; + } + _start(eo_obj, pd); } EOLIAN static void +_efl_animation_instance_group_parallel_efl_animation_instance_start_delay_set(Eo *eo_obj, + Evas_Object_Animation_Instance_Group_Parallel_Data *pd, + double delay_time) +{ + EFL_ANIMATION_INSTANCE_GROUP_PARALLEL_CHECK_OR_RETURN(eo_obj); + + if (delay_time < 0.0) return; + + pd->start_delay_time = delay_time; +} + +EOLIAN static double +_efl_animation_instance_group_parallel_efl_animation_instance_start_delay_get(Eo *eo_obj, + Evas_Object_Animation_Instance_Group_Parallel_Data *pd) +{ + EFL_ANIMATION_INSTANCE_GROUP_PARALLEL_CHECK_OR_RETURN(eo_obj, 0.0); + + return pd->start_delay_time; +} + +EOLIAN static void _efl_animation_instance_group_parallel_efl_animation_instance_pause(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Parallel_Data *pd) { @@ -245,6 +309,8 @@ _efl_animation_instance_group_parallel_efl_animation_instance_pause(Eo *eo_obj, if (pd->paused) return; pd->paused = EINA_TRUE; + if (pd->start_delay_timer) return; + Eina_List *inst_list = efl_animation_instance_group_instances_get(eo_obj); Eina_List *l; Efl_Animation_Instance *inst; @@ -266,6 +332,8 @@ _efl_animation_instance_group_parallel_efl_animation_instance_resume(Eo *eo_obj, if (!pd->paused) return; pd->paused = EINA_FALSE; + if (pd->start_delay_timer) return; + Eina_List *inst_list = efl_animation_instance_group_instances_get(eo_obj); Eina_List *l; Efl_Animation_Instance *inst; @@ -343,6 +411,8 @@ _efl_animation_instance_group_parallel_efl_animation_instance_group_instance_del EFL_OBJECT_OP_FUNC(efl_animation_instance_member_start, _efl_animation_instance_group_parallel_efl_animation_instance_member_start), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_final_state_show, _efl_animation_instance_group_parallel_efl_animation_instance_final_state_show), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_group_instance_add, _efl_animation_instance_group_parallel_efl_animation_instance_group_instance_add), \ - EFL_OBJECT_OP_FUNC(efl_animation_instance_group_instance_del, _efl_animation_instance_group_parallel_efl_animation_instance_group_instance_del) + EFL_OBJECT_OP_FUNC(efl_animation_instance_group_instance_del, _efl_animation_instance_group_parallel_efl_animation_instance_group_instance_del), \ + EFL_OBJECT_OP_FUNC(efl_animation_instance_start_delay_set, _efl_animation_instance_group_parallel_efl_animation_instance_start_delay_set), \ + EFL_OBJECT_OP_FUNC(efl_animation_instance_start_delay_get, _efl_animation_instance_group_parallel_efl_animation_instance_start_delay_get) #include "efl_animation_instance_group_parallel.eo.c" diff --git a/src/lib/evas/canvas/efl_animation_instance_group_sequential.c b/src/lib/evas/canvas/efl_animation_instance_group_sequential.c index f4193a2583..65148de055 100644 --- a/src/lib/evas/canvas/efl_animation_instance_group_sequential.c +++ b/src/lib/evas/canvas/efl_animation_instance_group_sequential.c @@ -24,6 +24,9 @@ struct _Evas_Object_Animation_Instance_Group_Sequential_Data { Ecore_Animator *start_animator; + Ecore_Timer *start_delay_timer; + double start_delay_time; + unsigned int current_index; int remaining_repeat_count; @@ -168,7 +171,7 @@ _index_animation_start(Eo *eo_obj, int index) } static void -_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Sequential_Data *pd) +_init_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Sequential_Data *pd) { ecore_animator_del(pd->start_animator); pd->start_animator = NULL; @@ -183,10 +186,32 @@ _start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Sequential_Data *pd) pd->finished_inst_list = NULL; efl_event_callback_call(eo_obj, EFL_ANIMATION_INSTANCE_EVENT_START, NULL); +} + +static void +_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Sequential_Data *pd) +{ + _init_start(eo_obj, pd); _index_animation_start(eo_obj, pd->current_index); } +static Eina_Bool +_start_delay_timer_cb(void *data) +{ + Eo *eo_obj = data; + EFL_ANIMATION_INSTANCE_GROUP_SEQUENTIAL_DATA_GET(eo_obj, pd); + + pd->start_delay_timer = NULL; + + if (pd->paused) + _init_start(eo_obj, pd); + else + _start(eo_obj, pd); + + return ECORE_CALLBACK_CANCEL; +} + EOLIAN static void _efl_animation_instance_group_sequential_efl_animation_instance_start(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Sequential_Data *pd) @@ -195,8 +220,17 @@ _efl_animation_instance_group_sequential_efl_animation_instance_start(Eo *eo_obj if (pd->paused) return; + if (pd->start_delay_timer) return; + pd->is_group_member = EINA_FALSE; + if (pd->start_delay_time > 0.0) + { + pd->start_delay_timer = ecore_timer_add(pd->start_delay_time, + _start_delay_timer_cb, eo_obj); + return; + } + _start(eo_obj, pd); } @@ -208,12 +242,42 @@ _efl_animation_instance_group_sequential_efl_animation_instance_member_start(Eo if (pd->paused) return; + if (pd->start_delay_timer) return; + pd->is_group_member = EINA_TRUE; + if (pd->start_delay_time > 0.0) + { + pd->start_delay_timer = ecore_timer_add(pd->start_delay_time, + _start_delay_timer_cb, eo_obj); + return; + } + _start(eo_obj, pd); } EOLIAN static void +_efl_animation_instance_group_sequential_efl_animation_instance_start_delay_set(Eo *eo_obj, + Evas_Object_Animation_Instance_Group_Sequential_Data *pd, + double delay_time) +{ + EFL_ANIMATION_INSTANCE_GROUP_SEQUENTIAL_CHECK_OR_RETURN(eo_obj); + + if (delay_time < 0.0) return; + + pd->start_delay_time = delay_time; +} + +EOLIAN static double +_efl_animation_instance_group_sequential_efl_animation_instance_start_delay_get(Eo *eo_obj, + Evas_Object_Animation_Instance_Group_Sequential_Data *pd) +{ + EFL_ANIMATION_INSTANCE_GROUP_SEQUENTIAL_CHECK_OR_RETURN(eo_obj, 0.0); + + return pd->start_delay_time; +} + +EOLIAN static void _efl_animation_instance_group_sequential_efl_animation_instance_pause(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Sequential_Data *pd) { @@ -224,6 +288,8 @@ _efl_animation_instance_group_sequential_efl_animation_instance_pause(Eo *eo_obj if (pd->paused) return; pd->paused = EINA_TRUE; + if (pd->start_delay_timer) return; + Eina_List *inst_list = efl_animation_instance_group_instances_get(eo_obj); Eina_List *l; Efl_Animation_Instance *inst; @@ -245,6 +311,8 @@ _efl_animation_instance_group_sequential_efl_animation_instance_resume(Eo *eo_ob if (!pd->paused) return; pd->paused = EINA_FALSE; + if (pd->start_delay_timer) return; + Eina_List *inst_list = efl_animation_instance_group_instances_get(eo_obj); Eina_List *l; Efl_Animation_Instance *inst; @@ -322,6 +390,8 @@ _efl_animation_instance_group_sequential_efl_animation_instance_final_state_show EFL_OBJECT_OP_FUNC(efl_animation_instance_member_start, _efl_animation_instance_group_sequential_efl_animation_instance_member_start), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_final_state_show, _efl_animation_instance_group_sequential_efl_animation_instance_final_state_show), \ EFL_OBJECT_OP_FUNC(efl_animation_instance_group_instance_add, _efl_animation_instance_group_sequential_efl_animation_instance_group_instance_add), \ - EFL_OBJECT_OP_FUNC(efl_animation_instance_group_instance_del, _efl_animation_instance_group_sequential_efl_animation_instance_group_instance_del) + EFL_OBJECT_OP_FUNC(efl_animation_instance_group_instance_del, _efl_animation_instance_group_sequential_efl_animation_instance_group_instance_del), \ + EFL_OBJECT_OP_FUNC(efl_animation_instance_start_delay_set, _efl_animation_instance_group_sequential_efl_animation_instance_start_delay_set), \ + EFL_OBJECT_OP_FUNC(efl_animation_instance_start_delay_get, _efl_animation_instance_group_sequential_efl_animation_instance_start_delay_get) #include "efl_animation_instance_group_sequential.eo.c" diff --git a/src/lib/evas/canvas/efl_animation_rotate.c b/src/lib/evas/canvas/efl_animation_rotate.c index 3296c10f7c..9696b47b26 100644 --- a/src/lib/evas/canvas/efl_animation_rotate.c +++ b/src/lib/evas/canvas/efl_animation_rotate.c @@ -238,6 +238,9 @@ _efl_animation_rotate_efl_animation_instance_create(Eo *eo_obj, double duration = efl_animation_duration_get(eo_obj); efl_animation_instance_duration_set(instance, duration); + double start_delay_time = efl_animation_start_delay_get(eo_obj); + efl_animation_instance_start_delay_set(instance, start_delay_time); + int repeat_count = efl_animation_repeat_count_get(eo_obj); efl_animation_instance_repeat_count_set(instance, repeat_count); diff --git a/src/lib/evas/canvas/efl_animation_scale.c b/src/lib/evas/canvas/efl_animation_scale.c index cec1eb4fab..a6f6c43825 100644 --- a/src/lib/evas/canvas/efl_animation_scale.c +++ b/src/lib/evas/canvas/efl_animation_scale.c @@ -264,6 +264,9 @@ _efl_animation_scale_efl_animation_instance_create(Eo *eo_obj, double duration = efl_animation_duration_get(eo_obj); efl_animation_instance_duration_set(instance, duration); + double start_delay_time = efl_animation_start_delay_get(eo_obj); + efl_animation_instance_start_delay_set(instance, start_delay_time); + int repeat_count = efl_animation_repeat_count_get(eo_obj); efl_animation_instance_repeat_count_set(instance, repeat_count); diff --git a/src/lib/evas/canvas/efl_animation_translate.c b/src/lib/evas/canvas/efl_animation_translate.c index 661e710e5c..a336ce9072 100644 --- a/src/lib/evas/canvas/efl_animation_translate.c +++ b/src/lib/evas/canvas/efl_animation_translate.c @@ -193,6 +193,9 @@ _efl_animation_translate_efl_animation_instance_create(Eo *eo_obj, double duration = efl_animation_duration_get(eo_obj); efl_animation_instance_duration_set(instance, duration); + double start_delay_time = efl_animation_start_delay_get(eo_obj); + efl_animation_instance_start_delay_set(instance, start_delay_time); + int repeat_count = efl_animation_repeat_count_get(eo_obj); efl_animation_instance_repeat_count_set(instance, repeat_count); |