efl_canvas_animation: add a standard value for duration of animations

before this commit the standard time was 0, which results in no
animation played at all. Now its 0.2 and a app that does not like it can
adjust it.

ref T8436

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10796
This commit is contained in:
Marcel Hollerbach 2019-12-04 10:14:09 +01:00
parent 10b631e7cb
commit a29be18b5f
3 changed files with 40 additions and 0 deletions

View File

@ -2,6 +2,8 @@
#define MY_CLASS EFL_CANVAS_ANIMATION_CLASS
static double _default_animation_time = 0.2; //in seconds
EOLIAN static void
_efl_canvas_animation_duration_set(Eo *eo_obj EINA_UNUSED,
Efl_Canvas_Animation_Data *pd,
@ -134,4 +136,24 @@ _efl_canvas_animation_efl_playable_seekable_get(const Eo *eo_obj EINA_UNUSED, Ef
return EINA_TRUE;
}
EOLIAN static Efl_Object*
_efl_canvas_animation_efl_object_constructor(Eo *obj, Efl_Canvas_Animation_Data *pd)
{
pd->duration = _default_animation_time;
return efl_constructor(efl_super(obj, MY_CLASS));
}
EOLIAN static void
_efl_canvas_animation_default_duration_set(double animation_time)
{
EINA_SAFETY_ON_FALSE_RETURN(animation_time > 0.0);
_default_animation_time = animation_time;
}
EOLIAN static double
_efl_canvas_animation_default_duration_get(void)
{
return _default_animation_time;
}
#include "efl_canvas_animation.eo.c"

View File

@ -110,8 +110,17 @@ class @beta Efl.Canvas.Animation extends Efl.Object implements Efl.Playable
}
return: double; [[Final applied progress, after possible adjustments. See @.interpolator.]]
}
@property default_duration @static {
[[Duration that will be used by default on all animations unless another value
is set per object using @.duration.
]]
values {
animation_time : double; [[Default animation duration, in seconds.]]
}
}
}
implements {
Efl.Object.constructor;
Efl.Playable.length { get; }
Efl.Playable.seekable { get; }
Efl.Playable.playable { get; }

View File

@ -34,7 +34,16 @@ EFL_START_TEST(efl_canvas_animation_negative_double_checking)
}
EFL_END_TEST
EFL_START_TEST(efl_canvas_animation_default_value)
{
Efl_Canvas_Animation *animation = efl_new(EFL_CANVAS_ANIMATION_CLASS);
fail_if(efl_animation_duration_get(animation) == 0.0);
}
EFL_END_TEST
void efl_test_canvas_animation(TCase *tc)
{
tcase_add_test(tc, efl_canvas_animation_negative_double_checking);
tcase_add_test(tc, efl_canvas_animation_default_value);
}