diff options
author | Jaehyun Cho <jae_hyun.cho@samsung.com> | 2017-06-21 18:02:43 +0900 |
---|---|---|
committer | Jaehyun Cho <jae_hyun.cho@samsung.com> | 2017-06-30 17:28:36 +0900 |
commit | 6e85591f087c19924a8e09aacc42eb7bd848ce91 (patch) | |
tree | e9b13b10f8d1d4daf6c852ea4ff0f37853e78f83 | |
parent | 333403f7afafc0fb03f0b64832df1f8a378f0d1a (diff) | |
download | efl-6e85591f087c19924a8e09aacc42eb7bd848ce91.tar.gz |
efl_animation: Apply properties of group to group members
Apply properties of group, such as target, duration, final_state_keep,
to group members.
-rw-r--r-- | src/lib/evas/canvas/efl_animation_group.c | 26 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_group.eo | 1 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_instance_group.c | 60 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_animation_instance_group.eo | 3 |
4 files changed, 90 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/efl_animation_group.c b/src/lib/evas/canvas/efl_animation_group.c index 245e766286..148edbef52 100644 --- a/src/lib/evas/canvas/efl_animation_group.c +++ b/src/lib/evas/canvas/efl_animation_group.c @@ -33,6 +33,15 @@ _efl_animation_group_animation_add(Eo *eo_obj, Evas_Object_Animation_Group_Data if (!animation) return; + Efl_Canvas_Object *target = efl_animation_target_get(eo_obj); + efl_animation_target_set(animation, target); + + double duration = efl_animation_duration_get(eo_obj); + efl_animation_duration_set(animation, duration); + + Eina_Bool state_keep = efl_animation_final_state_keep_get(eo_obj); + efl_animation_final_state_keep_set(animation, state_keep); + pd->animations = eina_list_append(pd->animations, animation); } @@ -70,6 +79,23 @@ _efl_animation_group_efl_animation_target_set(Eo *eo_obj, Evas_Object_Animation_ } EOLIAN static void +_efl_animation_group_efl_animation_duration_set(Eo *eo_obj, Evas_Object_Animation_Group_Data *pd, double duration) +{ + EFL_ANIMATION_GROUP_CHECK_OR_RETURN(eo_obj); + + if (duration <= 0.0) duration = 0.0; + + Eina_List *l; + Efl_Animation *anim; + EINA_LIST_FOREACH(pd->animations, l, anim) + { + efl_animation_duration_set(anim, duration); + } + + efl_animation_duration_set(efl_super(eo_obj, MY_CLASS), duration); +} + +EOLIAN static void _efl_animation_group_efl_animation_final_state_keep_set(Eo *eo_obj, Evas_Object_Animation_Group_Data *pd, Eina_Bool state_keep) { EFL_ANIMATION_GROUP_CHECK_OR_RETURN(eo_obj); diff --git a/src/lib/evas/canvas/efl_animation_group.eo b/src/lib/evas/canvas/efl_animation_group.eo index ab0e480e8e..e79c6faf81 100644 --- a/src/lib/evas/canvas/efl_animation_group.eo +++ b/src/lib/evas/canvas/efl_animation_group.eo @@ -27,6 +27,7 @@ abstract Efl.Animation.Group (Efl.Animation) Efl.Object.constructor; Efl.Object.destructor; Efl.Animation.target { set; } + Efl.Animation.duration { set; } Efl.Animation.final_state_keep { set; } } } diff --git a/src/lib/evas/canvas/efl_animation_instance_group.c b/src/lib/evas/canvas/efl_animation_instance_group.c index 0c01d856b8..02eff77fca 100644 --- a/src/lib/evas/canvas/efl_animation_instance_group.c +++ b/src/lib/evas/canvas/efl_animation_instance_group.c @@ -33,6 +33,15 @@ _efl_animation_instance_group_instance_add(Eo *eo_obj, Evas_Object_Animation_Ins if (!instance) return; + Efl_Canvas_Object *target = efl_animation_instance_target_get(eo_obj); + efl_animation_instance_target_set(instance, target); + + double duration = efl_animation_instance_duration_get(eo_obj); + efl_animation_instance_duration_set(instance, duration); + + Eina_Bool state_keep = efl_animation_instance_final_state_keep_get(eo_obj); + efl_animation_instance_final_state_keep_set(instance, state_keep); + pd->instances = eina_list_append(pd->instances, instance); } @@ -55,6 +64,57 @@ _efl_animation_instance_group_instances_get(Eo *eo_obj, Evas_Object_Animation_In } EOLIAN static void +_efl_animation_instance_group_efl_animation_instance_target_set(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Data *pd, Evas_Object *target) +{ + EFL_ANIMATION_INSTANCE_GROUP_CHECK_OR_RETURN(eo_obj); + + Eina_List *l; + Efl_Animation_Instance *inst; + + EINA_LIST_FOREACH(pd->instances, l, inst) + { + efl_animation_instance_target_set(inst, target); + } + + efl_animation_instance_target_set(efl_super(eo_obj, MY_CLASS), target); +} + +EOLIAN static void +_efl_animation_instance_group_efl_animation_instance_duration_set(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Data *pd, double duration) +{ + EFL_ANIMATION_INSTANCE_GROUP_CHECK_OR_RETURN(eo_obj); + + if (duration <= 0.0) duration = 0.0; + + Eina_List *l; + Efl_Animation_Instance *inst; + + EINA_LIST_FOREACH(pd->instances, l, inst) + { + efl_animation_instance_duration_set(inst, duration); + } + + efl_animation_instance_duration_set(efl_super(eo_obj, MY_CLASS), duration); +} + +EOLIAN static void +_efl_animation_instance_group_efl_animation_instance_final_state_keep_set(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Data *pd, Eina_Bool state_keep) +{ + EFL_ANIMATION_INSTANCE_GROUP_CHECK_OR_RETURN(eo_obj); + + Eina_List *l; + Efl_Animation_Instance *inst; + + EINA_LIST_FOREACH(pd->instances, l, inst) + { + efl_animation_instance_final_state_keep_set(inst, state_keep); + } + + efl_animation_instance_final_state_keep_set(efl_super(eo_obj, MY_CLASS), + state_keep); +} + +EOLIAN static void _efl_animation_instance_group_efl_animation_instance_map_reset(Eo *eo_obj, Evas_Object_Animation_Instance_Group_Data *pd) { EFL_ANIMATION_INSTANCE_GROUP_CHECK_OR_RETURN(eo_obj); diff --git a/src/lib/evas/canvas/efl_animation_instance_group.eo b/src/lib/evas/canvas/efl_animation_instance_group.eo index 7b58417912..9488193ae0 100644 --- a/src/lib/evas/canvas/efl_animation_instance_group.eo +++ b/src/lib/evas/canvas/efl_animation_instance_group.eo @@ -26,6 +26,9 @@ abstract Efl.Animation.Instance.Group (Efl.Animation.Instance) implements { Efl.Object.constructor; Efl.Object.destructor; + Efl.Animation.Instance.target { set; } + Efl.Animation.Instance.duration { set; } + Efl.Animation.Instance.final_state_keep { set; } Efl.Animation.Instance.map_reset; } } |