summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/efl_animation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/evas/canvas/efl_animation.c')
-rw-r--r--src/lib/evas/canvas/efl_animation.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/efl_animation.c b/src/lib/evas/canvas/efl_animation.c
index 23d2d14585..5aac6e38fd 100644
--- a/src/lib/evas/canvas/efl_animation.c
+++ b/src/lib/evas/canvas/efl_animation.c
@@ -38,6 +38,8 @@ _efl_animation_duration_set(Eo *eo_obj,
{
EFL_ANIMATION_CHECK_OR_RETURN(eo_obj);
+ efl_animation_total_duration_set(eo_obj, duration);
+
pd->duration = duration;
}
@@ -50,6 +52,16 @@ _efl_animation_duration_get(Eo *eo_obj, Efl_Animation_Data *pd)
}
EOLIAN static void
+_efl_animation_duration_only_set(Eo *eo_obj,
+ Efl_Animation_Data *pd,
+ double duration)
+{
+ EFL_ANIMATION_CHECK_OR_RETURN(eo_obj);
+
+ pd->duration = duration;
+}
+
+EOLIAN static void
_efl_animation_total_duration_set(Eo *eo_obj,
Efl_Animation_Data *pd,
double total_duration)
@@ -177,6 +189,42 @@ _efl_animation_interpolator_get(Eo *eo_obj,
return pd->interpolator;
}
+EOLIAN static Efl_Animation_Instance *
+_efl_animation_instance_create(Eo *eo_obj, Efl_Animation_Data *pd EINA_UNUSED)
+{
+ EFL_ANIMATION_CHECK_OR_RETURN(eo_obj, NULL);
+
+ Efl_Animation_Instance *instance
+ = efl_add(EFL_ANIMATION_INSTANCE_CLASS, NULL);
+
+ Efl_Canvas_Object *target = efl_animation_target_get(eo_obj);
+ efl_animation_instance_target_set(instance, target);
+
+ Eina_Bool state_keep = efl_animation_final_state_keep_get(eo_obj);
+ efl_animation_instance_final_state_keep_set(instance, state_keep);
+
+ double duration = efl_animation_duration_get(eo_obj);
+ efl_animation_instance_duration_set(instance, duration);
+
+ double total_duration = efl_animation_total_duration_get(eo_obj);
+ efl_animation_instance_total_duration_set(instance, total_duration);
+
+ double start_delay_time = efl_animation_start_delay_get(eo_obj);
+ efl_animation_instance_start_delay_set(instance, start_delay_time);
+
+ Efl_Animation_Instance_Repeat_Mode repeat_mode =
+ (Efl_Animation_Instance_Repeat_Mode)efl_animation_repeat_mode_get(eo_obj);
+ efl_animation_instance_repeat_mode_set(instance, repeat_mode);
+
+ int repeat_count = efl_animation_repeat_count_get(eo_obj);
+ efl_animation_instance_repeat_count_set(instance, repeat_count);
+
+ Efl_Interpolator *interpolator = efl_animation_interpolator_get(eo_obj);
+ efl_animation_instance_interpolator_set(instance, interpolator);
+
+ return instance;
+}
+
EOLIAN static Efl_Object *
_efl_animation_efl_object_constructor(Eo *eo_obj,
Efl_Animation_Data *pd)