summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Cho <jae_hyun.cho@samsung.com>2017-06-21 18:02:43 +0900
committerJaehyun Cho <jae_hyun.cho@samsung.com>2017-06-30 17:28:36 +0900
commit6e85591f087c19924a8e09aacc42eb7bd848ce91 (patch)
treee9b13b10f8d1d4daf6c852ea4ff0f37853e78f83
parent333403f7afafc0fb03f0b64832df1f8a378f0d1a (diff)
downloadefl-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.c26
-rw-r--r--src/lib/evas/canvas/efl_animation_group.eo1
-rw-r--r--src/lib/evas/canvas/efl_animation_instance_group.c60
-rw-r--r--src/lib/evas/canvas/efl_animation_instance_group.eo3
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;
}
}