diff options
author | Xavi Artigas <xavierartigas@yahoo.es> | 2019-12-04 12:38:46 +0000 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2019-12-04 15:34:56 +0100 |
commit | ebeacfffdaeb22637a5c1047f74a7f9611051ca4 (patch) | |
tree | e806ee3589c17eea2b4ef280fd9945709049eb76 | |
parent | 7424b86fb5fe67d008a283fcf1db5486e2c55d3b (diff) | |
download | efl-devs/bu5hm4n/work_animations.tar.gz |
Efl.Canvas.Animation: Rename repeat_count to play_countdevs/bu5hm4n/work_animations
play_count is a tad simpler to understand, since it means the TOTAL number of
times the animation will play.
The default value is now 1, and 0 means INFINITE (instead of -1). This allows
removing yet another constant from header files.
Differential Revision: https://phab.enlightenment.org/D10800
-rw-r--r-- | src/bin/elementary/test_efl_anim_repeat.c | 38 | ||||
-rw-r--r-- | src/examples/evas/efl-canvas-animation.c | 8 | ||||
-rw-r--r-- | src/lib/evas/Evas_Common.h | 2 | ||||
-rw-r--r-- | src/lib/evas/Evas_Eo.h | 2 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_animation.c | 15 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_animation.eo | 14 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_animation_private.h | 4 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_animation_types.eot | 8 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_object_animation.c | 4 |
9 files changed, 48 insertions, 47 deletions
diff --git a/src/bin/elementary/test_efl_anim_repeat.c b/src/bin/elementary/test_efl_anim_repeat.c index 0f72882207..b3dddcd0e3 100644 --- a/src/bin/elementary/test_efl_anim_repeat.c +++ b/src/bin/elementary/test_efl_anim_repeat.c @@ -10,7 +10,7 @@ typedef struct _App_Data Elm_Button *button; Evas_Object *start_btn; - Evas_Object *repeat_count_spin; + Evas_Object *play_count_spin; Evas_Object *repeat_mode_spin; Eina_Bool is_btn_visible; @@ -44,8 +44,8 @@ _anim_changed_cb(void *data, const Efl_Event *event EINA_UNUSED) Efl_Canvas_Animation_Repeat_Mode repeat_mode = _anim_repeat_mode_get(ad->repeat_mode_spin); if (repeat_mode == EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE) { - int repeat_count = elm_spinner_value_get(ad->repeat_count_spin); - if (repeat_count % 2 == 1) + int play_count = elm_spinner_value_get(ad->play_count_spin); + if (play_count % 2 == 0) { ad->is_btn_visible = !(ad->is_btn_visible); if (ad->is_btn_visible) @@ -54,7 +54,7 @@ _anim_changed_cb(void *data, const Efl_Event *event EINA_UNUSED) elm_object_text_set(ad->start_btn, "Start Alpha Animation from 0.0 to 1.0"); } } - elm_object_disabled_set(ad->repeat_count_spin, EINA_FALSE); + elm_object_disabled_set(ad->play_count_spin, EINA_FALSE); elm_object_disabled_set(ad->repeat_mode_spin, EINA_FALSE); } } @@ -78,16 +78,16 @@ _start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED ad->is_btn_visible = !(ad->is_btn_visible); - int repeat_count = elm_spinner_value_get(ad->repeat_count_spin); - elm_object_disabled_set(ad->repeat_count_spin, EINA_TRUE); + int play_count = elm_spinner_value_get(ad->play_count_spin); + elm_object_disabled_set(ad->play_count_spin, EINA_TRUE); Efl_Canvas_Animation_Repeat_Mode repeat_mode = _anim_repeat_mode_get(ad->repeat_mode_spin); elm_object_disabled_set(ad->repeat_mode_spin, EINA_TRUE); if (ad->is_btn_visible) { - //Set animation repeat count - efl_animation_repeat_count_set(ad->show_anim, repeat_count); + //Set animation play count + efl_animation_play_count_set(ad->show_anim, play_count); //Set animation repeat mode efl_animation_repeat_mode_set(ad->show_anim, repeat_mode); @@ -99,7 +99,7 @@ _start_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED else { //Set animation repeat count - efl_animation_repeat_count_set(ad->hide_anim, repeat_count); + efl_animation_play_count_set(ad->hide_anim, play_count); //Set animation repeat mode efl_animation_repeat_mode_set(ad->hide_anim, repeat_mode); @@ -158,15 +158,15 @@ test_efl_anim_repeat(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void evas_object_move(start_btn, 100, 300); evas_object_show(start_btn); - //Spinner to set animation repeat count - Evas_Object *repeat_count_spin = elm_spinner_add(win); - elm_spinner_label_format_set(repeat_count_spin, "Repeat Count: %d"); - elm_spinner_editable_set(repeat_count_spin, EINA_FALSE); - elm_spinner_min_max_set(repeat_count_spin, 0, 3); - elm_spinner_value_set(repeat_count_spin, 0); - evas_object_resize(repeat_count_spin, 200, 50); - evas_object_move(repeat_count_spin, 100, 350); - evas_object_show(repeat_count_spin); + //Spinner to set animation play count + Evas_Object *play_count_spin = elm_spinner_add(win); + elm_spinner_label_format_set(play_count_spin, "Play Count (0 is infinite): %d"); + elm_spinner_editable_set(play_count_spin, EINA_FALSE); + elm_spinner_min_max_set(play_count_spin, 0, 3); + elm_spinner_value_set(play_count_spin, 1); + evas_object_resize(play_count_spin, 200, 50); + evas_object_move(play_count_spin, 100, 350); + evas_object_show(play_count_spin); //Spinner to set animation repeat mode Evas_Object *repeat_mode_spin = elm_spinner_add(win); @@ -184,7 +184,7 @@ test_efl_anim_repeat(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void ad->show_anim = show_anim; ad->hide_anim = hide_anim; ad->start_btn = start_btn; - ad->repeat_count_spin = repeat_count_spin; + ad->play_count_spin = play_count_spin; ad->repeat_mode_spin = repeat_mode_spin; ad->is_btn_visible = EINA_TRUE; ad->button = btn; diff --git a/src/examples/evas/efl-canvas-animation.c b/src/examples/evas/efl-canvas-animation.c index 2cc2355956..cc24550dea 100644 --- a/src/examples/evas/efl-canvas-animation.c +++ b/src/examples/evas/efl-canvas-animation.c @@ -118,7 +118,7 @@ main(void) efl_animation_scale_set(efl_added, EINA_VECTOR2(1.0, 1.0), EINA_VECTOR2(3.0, 3.0), scale_rect, EINA_VECTOR2(0.5, 0.5)), efl_animation_start_delay_set(efl_added, 5.0), efl_animation_duration_set(efl_added, 2.0), - efl_animation_repeat_count_set(efl_added, EFL_ANIMATION_REPEAT_INFINITE) + efl_animation_play_count_set(efl_added, 0) ), 1.0, 0.0); @@ -128,7 +128,7 @@ main(void) efl_new(EFL_CANVAS_ANIMATION_SCALE_CLASS, efl_animation_scale_set(efl_added, EINA_VECTOR2(1.0, 1.0), EINA_VECTOR2(3.0, 3.0), scale_rect2, EINA_VECTOR2(0.5, 0.5)), efl_animation_duration_set(efl_added, 2.0), - efl_animation_repeat_count_set(efl_added, EFL_ANIMATION_REPEAT_INFINITE), + efl_animation_play_count_set(efl_added, 0), efl_animation_repeat_mode_set(efl_added, EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE) ), 1.0, 0.0); @@ -139,7 +139,7 @@ main(void) efl_new(EFL_CANVAS_ANIMATION_SCALE_CLASS, efl_animation_scale_set(efl_added, EINA_VECTOR2(1.0, 1.0), EINA_VECTOR2(3.0, 3.0), scale_rect3, EINA_VECTOR2(0.5, 0.5)), efl_animation_duration_set(efl_added, 2.0), - efl_animation_repeat_count_set(efl_added, 3), + efl_animation_play_count_set(efl_added, 4), efl_animation_repeat_mode_set(efl_added, EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE) ), 1.0, 0.0); @@ -162,7 +162,7 @@ main(void) efl_new(EFL_CANVAS_ANIMATION_SCALE_CLASS, efl_animation_scale_set(efl_added, EINA_VECTOR2(1.0, 1.0), EINA_VECTOR2(5.0, 5.0), scale_rect5, EINA_VECTOR2(0.5, 0.5)), efl_animation_duration_set(efl_added, 5.0), - efl_animation_repeat_count_set(efl_added, EFL_ANIMATION_REPEAT_INFINITE) + efl_animation_play_count_set(efl_added, 0) ), 1.0, 0.0); d.current_speed = 1.0; diff --git a/src/lib/evas/Evas_Common.h b/src/lib/evas/Evas_Common.h index d7fa681094..d75cc1a6aa 100644 --- a/src/lib/evas/Evas_Common.h +++ b/src/lib/evas/Evas_Common.h @@ -3482,8 +3482,6 @@ typedef Eo Efl_Animation_Group_Sequential; #endif -#define EFL_ANIMATION_REPEAT_INFINITE -1 - // The below type are necessary for legacy API and need to be manually kept in sync with .eo file. #ifndef _EFL_INPUT_DEVICE_EO_CLASS_TYPE #define _EFL_INPUT_DEVICE_EO_CLASS_TYPE diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h index f156ec50a8..9d873d565d 100644 --- a/src/lib/evas/Evas_Eo.h +++ b/src/lib/evas/Evas_Eo.h @@ -122,8 +122,6 @@ typedef Eo Efl_Canvas_Animation_Group_Sequential; #endif -#define EFL_ANIMATION_REPEAT_INFINITE -1 - struct _Efl_Canvas_Animation_Player_Event_Running { double progress; diff --git a/src/lib/evas/canvas/efl_canvas_animation.c b/src/lib/evas/canvas/efl_canvas_animation.c index f2013a360b..b38a644839 100644 --- a/src/lib/evas/canvas/efl_canvas_animation.c +++ b/src/lib/evas/canvas/efl_canvas_animation.c @@ -52,19 +52,19 @@ _efl_canvas_animation_repeat_mode_get(const Eo *eo_obj EINA_UNUSED, Efl_Canvas_A } EOLIAN static void -_efl_canvas_animation_repeat_count_set(Eo *eo_obj EINA_UNUSED, +_efl_canvas_animation_play_count_set(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Animation_Data *pd, int count) { - EINA_SAFETY_ON_FALSE_RETURN(count >= EFL_ANIMATION_REPEAT_INFINITE); + EINA_SAFETY_ON_FALSE_RETURN(count >= 0); - pd->repeat_count = count; + pd->play_count = count; } EOLIAN static int -_efl_canvas_animation_repeat_count_get(const Eo *eo_obj EINA_UNUSED, Efl_Canvas_Animation_Data *pd) +_efl_canvas_animation_play_count_get(const Eo *eo_obj EINA_UNUSED, Efl_Canvas_Animation_Data *pd) { - return pd->repeat_count; + return pd->play_count; } EOLIAN static void @@ -115,12 +115,12 @@ _efl_canvas_animation_animation_apply(Eo *eo_obj, EOLIAN static double _efl_canvas_animation_efl_playable_length_get(const Eo *eo_obj, Efl_Canvas_Animation_Data *pd EINA_UNUSED) { - if (efl_animation_repeat_count_get(eo_obj) == EFL_ANIMATION_REPEAT_INFINITE) + if (efl_animation_play_count_get(eo_obj) == 0) { return INFINITY; } - return (efl_animation_duration_get(eo_obj) * (efl_animation_repeat_count_get(eo_obj) + 1)); + return (efl_animation_duration_get(eo_obj) * efl_animation_play_count_get(eo_obj)); } EOLIAN static Eina_Bool @@ -139,6 +139,7 @@ EOLIAN static Efl_Object* _efl_canvas_animation_efl_object_constructor(Eo *obj, Efl_Canvas_Animation_Data *pd) { pd->duration = _standard_animation_time; + pd->play_count = 1; return efl_constructor(efl_super(obj, MY_CLASS)); } diff --git a/src/lib/evas/canvas/efl_canvas_animation.eo b/src/lib/evas/canvas/efl_canvas_animation.eo index a55cf73bbd..49bd1cb9b4 100644 --- a/src/lib/evas/canvas/efl_canvas_animation.eo +++ b/src/lib/evas/canvas/efl_canvas_animation.eo @@ -40,7 +40,7 @@ class @beta Efl.Canvas.Animation extends Efl.Object implements Efl.Playable @property duration { [[The duration of a single animation "run". The @Efl.Playable.length implementation will return this duration adjusted by @.repeat_mode and - @.repeat_count. + @.play_count. ]] set { } @@ -61,13 +61,15 @@ class @beta Efl.Canvas.Animation extends Efl.Object implements Efl.Playable mode: Efl.Canvas.Animation_Repeat_Mode(Efl.Canvas.Animation_Repeat_Mode.restart); [[Repeat mode.]] } } - @property repeat_count { - [[How many times to repeat an animation once it finishes. - $[0] means that the animation only plays once (it is not repeated) and is the default value. - $[-1] means that the animation is repeated forever. + @property play_count { + [[How many times to play an animation. + $[1] means that the animation only plays once (it is not repeated), whereas $[2] will play it + again once it finishes the first time and then stop. + $[0] means that the animation is repeated forever. + @.repeat_mode controls the direction in which subsequent playbacks will run. ]] values { - count: int(0); [[Repeat count.]] + count: int(1); [[Play count.]] } } @property start_delay { diff --git a/src/lib/evas/canvas/efl_canvas_animation_private.h b/src/lib/evas/canvas/efl_canvas_animation_private.h index c8f0609103..9995d23589 100644 --- a/src/lib/evas/canvas/efl_canvas_animation_private.h +++ b/src/lib/evas/canvas/efl_canvas_animation_private.h @@ -10,7 +10,7 @@ typedef struct _Efl_Canvas_Animation_Data double start_delay_time; Efl_Canvas_Animation_Repeat_Mode repeat_mode; - int repeat_count; + int play_count; Efl_Interpolator *interpolator; @@ -25,4 +25,4 @@ typedef struct _Efl_Canvas_Animation_Data #define FINAL_STATE_IS_REVERSE(anim) \ ((efl_animation_repeat_mode_get(anim) == EFL_CANVAS_ANIMATION_REPEAT_MODE_REVERSE) && \ - (efl_animation_repeat_count_get(anim) & 1)) + (efl_animation_play_count_get(anim) & 1)) diff --git a/src/lib/evas/canvas/efl_canvas_animation_types.eot b/src/lib/evas/canvas/efl_canvas_animation_types.eot index cfdda2d490..bb44fe4dd1 100644 --- a/src/lib/evas/canvas/efl_canvas_animation_types.eot +++ b/src/lib/evas/canvas/efl_canvas_animation_types.eot @@ -5,9 +5,11 @@ struct @beta Efl.Canvas.Animation_Player_Event_Running; [[Information of event r enum @beta Efl.Canvas.Animation_Repeat_Mode { - [[Animation repeat mode]] + [[Animation repeat mode.]] - restart = 0, [[Restart animation when the animation ends.]] - reverse = 1, [[Reverse animation when the animation ends.]] + restart = 0, [[Restart animation when the animation ends: The animation will play again from the beginning to the + end.]] + reverse = 1, [[Reverse animation when the animation ends: The animation will continue playing from the end to the + beginning.]] last } diff --git a/src/lib/evas/canvas/efl_canvas_object_animation.c b/src/lib/evas/canvas/efl_canvas_object_animation.c index 5663833a26..3fbc0e94f4 100644 --- a/src/lib/evas/canvas/efl_canvas_object_animation.c +++ b/src/lib/evas/canvas/efl_canvas_object_animation.c @@ -70,7 +70,7 @@ _animator_cb(void *data, const Efl_Event *ev EINA_UNUSED) (pd->in->speed > 0 && EINA_DBL_EQ(pd->in->progress, 1.0))) { //Repeat animation - if ((efl_animation_repeat_count_get(pd->in->animation) == EFL_ANIMATION_REPEAT_INFINITE) || + if ((efl_animation_play_count_get(pd->in->animation) == 0) || (pd->in->remaining_repeats > 0)) { pd->in->remaining_repeats--; @@ -167,7 +167,7 @@ _efl_canvas_object_animation_animation_start(Eo *obj, Efl_Canvas_Object_Animatio in->pause_state = EINA_FALSE; in->animation = efl_ref(animation); - in->remaining_repeats = efl_animation_repeat_count_get(animation); // -1 because one run is already going on + in->remaining_repeats = efl_animation_play_count_get(animation) - 1; // -1 because one run is already going on in->speed = speed; in->start_pos = start_pos; efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, in->animation); |