diff options
author | JunsuChoi <jsuya.choi@samsung.com> | 2019-12-31 09:53:10 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2019-12-31 09:53:10 -0500 |
commit | 3dc3deba6280349021d877c29362fd80eaed57aa (patch) | |
tree | 2feef6e5a917335633f0975219ef72b4528cbde1 | |
parent | baa1e6553bc96a1f099c1aadc1f5fcfd2295f520 (diff) | |
download | efl-3dc3deba6280349021d877c29362fd80eaed57aa.tar.gz |
Efl.Player: Add setter of playback_progress
Summary:
The setter of Efl.Player.playback_progress is implemented in each class below.
Efl.Ui.Animation_View
Efl.Ui.Image
Efl.Ui.Image_Zoomable
Efl.Canvas.Video
ref T8476
Depends on D10915
Test Plan: N/A
Reviewers: Hermet, bu5hm4n, kimcinoo, Jaehyun_Cho, segfaultxavi, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8476
Differential Revision: https://phab.enlightenment.org/D10931
-rw-r--r-- | src/bin/elementary/test_efl_gfx_vg_value_provider.c | 2 | ||||
-rw-r--r-- | src/bin/elementary/test_efl_ui_animation_view.c | 2 | ||||
-rw-r--r-- | src/lib/efl/interfaces/efl_player.eo | 6 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_animation_view.c | 46 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_animation_view.eo | 16 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_animation_view_eo.legacy.c | 2 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_image.c | 18 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_image.eo | 2 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_image_zoomable.c | 21 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_image_zoomable.eo | 2 | ||||
-rw-r--r-- | src/lib/emotion/efl_canvas_video.eo | 2 | ||||
-rw-r--r-- | src/lib/emotion/emotion_smart.c | 7 |
12 files changed, 74 insertions, 52 deletions
diff --git a/src/bin/elementary/test_efl_gfx_vg_value_provider.c b/src/bin/elementary/test_efl_gfx_vg_value_provider.c index e7a15206d6..22a55d5545 100644 --- a/src/bin/elementary/test_efl_gfx_vg_value_provider.c +++ b/src/bin/elementary/test_efl_gfx_vg_value_provider.c @@ -241,7 +241,7 @@ static void _slider_changed_cb(void *data, const Efl_Event *ev) { Evas_Object *anim_view = data; - efl_ui_animation_view_progress_set(anim_view, efl_ui_range_value_get(ev->object)); + efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); } static void diff --git a/src/bin/elementary/test_efl_ui_animation_view.c b/src/bin/elementary/test_efl_ui_animation_view.c index 912aa7164a..fe828a7534 100644 --- a/src/bin/elementary/test_efl_ui_animation_view.c +++ b/src/bin/elementary/test_efl_ui_animation_view.c @@ -133,7 +133,7 @@ static void _slider_changed_cb(void *data, const Efl_Event *ev) { Evas_Object *anim_view = data; - efl_ui_animation_view_progress_set(anim_view, efl_ui_range_value_get(ev->object)); + efl_player_playback_progress_set(anim_view, efl_ui_range_value_get(ev->object)); } static void diff --git a/src/lib/efl/interfaces/efl_player.eo b/src/lib/efl/interfaces/efl_player.eo index afeb7c2d13..434482ab63 100644 --- a/src/lib/efl/interfaces/efl_player.eo +++ b/src/lib/efl/interfaces/efl_player.eo @@ -67,9 +67,11 @@ interface Efl.Player @property playback_progress { [[How much of the file has been played. - This function gets the progress in playing the file, the - return value is in the [0, 1] range. + This function sets or gets the progress in playing the file, the + value is in the [0, 1] range. ]] + set { + } get { } values { diff --git a/src/lib/elementary/efl_ui_animation_view.c b/src/lib/elementary/efl_ui_animation_view.c index 2240624623..6669d53ff3 100644 --- a/src/lib/elementary/efl_ui_animation_view.c +++ b/src/lib/elementary/efl_ui_animation_view.c @@ -509,30 +509,9 @@ _playing_stop(Eo* obj, Efl_Ui_Animation_View_Data *pd) } EOLIAN static void -_efl_ui_animation_view_progress_set(Eo *obj EINA_UNUSED, Efl_Ui_Animation_View_Data *pd, double progress) -{ - if (progress < 0) progress = 0; - else if (progress > 1) progress = 1; - if (pd->progress == progress) return; - - pd->progress = progress; - - if (pd->frame_cnt > 0) - evas_object_vg_animated_frame_set(pd->vg, (int) ((pd->frame_cnt - 1) * progress)); - - if (pd->transit) - { - if (pd->playing_reverse) - elm_transit_progress_value_set(pd->transit, 1 - progress); - else - elm_transit_progress_value_set(pd->transit, progress); - } -} - -EOLIAN static void _efl_ui_animation_view_frame_set(Eo *obj EINA_UNUSED, Efl_Ui_Animation_View_Data *pd, int frame_num) { - efl_ui_animation_view_progress_set(obj, (double) frame_num / (double) (evas_object_vg_animated_frame_count_get(pd->vg) - 1)); + efl_player_playback_progress_set(obj, (double) frame_num / (double) (evas_object_vg_animated_frame_count_get(pd->vg) - 1)); } EOLIAN static int @@ -768,7 +747,7 @@ _efl_ui_animation_view_efl_player_playback_position_set(Eo *obj, Efl_Ui_Animatio EINA_SAFETY_ON_TRUE_RETURN(sec < 0); EINA_SAFETY_ON_TRUE_RETURN(sec > pd->frame_duration); - efl_ui_animation_view_progress_set(obj, pd->frame_duration != 0 ? sec / pd->frame_duration : 0); + efl_player_playback_progress_set(obj, pd->frame_duration != 0 ? sec / pd->frame_duration : 0); } EOLIAN static double @@ -784,6 +763,27 @@ _efl_ui_animation_view_efl_player_playback_progress_get(const Eo *obj EINA_UNUSE } EOLIAN static void +_efl_ui_animation_view_efl_player_playback_progress_set(Eo *obj EINA_UNUSED, Efl_Ui_Animation_View_Data *pd, double progress) +{ + if (progress < 0) progress = 0; + else if (progress > 1) progress = 1; + if (pd->progress == progress) return; + + pd->progress = progress; + + if (pd->frame_cnt > 0) + evas_object_vg_animated_frame_set(pd->vg, (int) ((pd->frame_cnt - 1) * progress)); + + if (pd->transit) + { + if (pd->playing_reverse) + elm_transit_progress_value_set(pd->transit, 1 - progress); + else + elm_transit_progress_value_set(pd->transit, progress); + } +} + +EOLIAN static void _efl_ui_animation_view_efl_player_playback_speed_set(Eo *obj EINA_UNUSED, Efl_Ui_Animation_View_Data *pd, double speed) { // pd->playback_direction_changed is used only during playback. diff --git a/src/lib/elementary/efl_ui_animation_view.eo b/src/lib/elementary/efl_ui_animation_view.eo index 1d7d0c23ae..c14b927e3c 100644 --- a/src/lib/elementary/efl_ui_animation_view.eo +++ b/src/lib/elementary/efl_ui_animation_view.eo @@ -75,20 +75,6 @@ class @beta Efl.Ui.Animation_View extends Efl.Ui.Widget implements Efl.Gfx.View, frame_duration: double; [[duration time in the seconds]] } } - @property progress { - [[Set current progress position of animation view object. - - When you required to jump on a certain frame instantly, - you can change current position by using this API. - - Warning: The range of progress is 0 ~ 1. - ]] - set { - } - values { - progress: double; [[Progress position. Value must be 0 ~ 1.]] - } - } @property frame { [[Number of current frame. @@ -224,7 +210,7 @@ class @beta Efl.Ui.Animation_View extends Efl.Ui.Widget implements Efl.Gfx.View, Efl.Player.playing { set; get; } Efl.Player.paused { set; get; } Efl.Player.playback_position { set; get; } - Efl.Player.playback_progress { get; } + Efl.Player.playback_progress { get; set; } Efl.Player.playback_speed { set; get; } } events { diff --git a/src/lib/elementary/efl_ui_animation_view_eo.legacy.c b/src/lib/elementary/efl_ui_animation_view_eo.legacy.c index e213ebb6e9..b109e0ef5e 100644 --- a/src/lib/elementary/efl_ui_animation_view_eo.legacy.c +++ b/src/lib/elementary/efl_ui_animation_view_eo.legacy.c @@ -46,7 +46,7 @@ elm_animation_view_duration_time_get(const Efl_Ui_Animation_View *obj) EAPI void elm_animation_view_progress_set(Efl_Ui_Animation_View *obj, double progress) { - efl_ui_animation_view_progress_set(obj, progress); + efl_player_playback_progress_set(obj, progress); } EAPI double diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c index 213d55edd2..2d9ce304fe 100644 --- a/src/lib/elementary/efl_ui_image.c +++ b/src/lib/elementary/efl_ui_image.c @@ -1753,7 +1753,7 @@ _efl_ui_image_animated_set_internal(Eo *obj, Efl_Ui_Image_Data *sd, Eina_Bool an if (anim) { sd->frame_count = evas_object_image_animated_frame_count_get(sd->img); - sd->cur_frame = 1; + sd->cur_frame = 0; sd->frame_duration = evas_object_image_animated_frame_duration_get (sd->img, sd->cur_frame, 0); @@ -1859,11 +1859,23 @@ _efl_ui_image_efl_player_playback_progress_get(const Eo *obj EINA_UNUSED, Efl_Ui { if (sd->edje) efl_player_playback_progress_get(sd->img); - else if ((sd->frame_count > 0) && (sd->frame_duration > 0.0)) - return (sd->cur_frame * sd->frame_duration) / sd->frame_count; + else if (sd->frame_count > 1) + return sd->cur_frame / (sd->frame_count - 1); return 0.0; } +EOLIAN static void +_efl_ui_image_efl_player_playback_progress_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, double progress) +{ + EINA_SAFETY_ON_TRUE_RETURN(progress > 1 || progress < 0); + if (sd->edje) + efl_player_playback_progress_set(sd->img, progress); + else if (sd->frame_count > 1) + sd->cur_frame = lround(progress * (sd->frame_count - 1)); + else + sd->cur_frame = 0; +} + static Eina_Bool _efl_ui_image_animated_paused_set_internal(Eo *obj, Efl_Ui_Image_Data *sd, Eina_Bool paused) { diff --git a/src/lib/elementary/efl_ui_image.eo b/src/lib/elementary/efl_ui_image.eo index 207a264e70..0cabaa0290 100644 --- a/src/lib/elementary/efl_ui_image.eo +++ b/src/lib/elementary/efl_ui_image.eo @@ -103,7 +103,7 @@ class Efl.Ui.Image extends Efl.Ui.Widget implements Efl.Input.Clickable, Efl.Ui. Efl.Player.playing { get; set; } Efl.Player.paused { get; set; } Efl.Player.playback_position { get; set; } - Efl.Player.playback_progress { get; } + Efl.Player.playback_progress { get; set; } Efl.Player.playback_speed { get; set; } Efl.Layout.Signal.signal_emit; Efl.Layout.Signal.message_send; diff --git a/src/lib/elementary/efl_ui_image_zoomable.c b/src/lib/elementary/efl_ui_image_zoomable.c index 19d2e0155b..62a146422f 100644 --- a/src/lib/elementary/efl_ui_image_zoomable.c +++ b/src/lib/elementary/efl_ui_image_zoomable.c @@ -3058,7 +3058,7 @@ _efl_ui_image_zoomable_animated_set_internal(Eo *obj EINA_UNUSED, Efl_Ui_Image_Z if (anim) { sd->frame_count = evas_object_image_animated_frame_count_get(sd->img); - sd->cur_frame = 1; + sd->cur_frame = 0; sd->frame_duration = evas_object_image_animated_frame_duration_get (sd->img, sd->cur_frame, 0); @@ -3178,12 +3178,27 @@ _efl_ui_image_zoomable_efl_player_playback_progress_get(const Eo *obj EINA_UNUSE { if (sd->edje) efl_player_playback_progress_get(sd->edje); - else if ((sd->frame_count > 0) && (sd->frame_duration > 0.0)) - return (sd->cur_frame * sd->frame_duration) / sd->frame_count; + else if (sd->frame_count > 1) + return sd->cur_frame / (sd->frame_count - 1); return 0.0; } EOLIAN static void +_efl_ui_image_zoomable_efl_player_playback_progress_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd, double progress) +{ + EINA_SAFETY_ON_TRUE_RETURN(progress > 1 || progress < 0); + if (sd->edje) + { + efl_player_playback_progress_set(sd->img, progress); + } + else if (sd->frame_count > 1) + sd->cur_frame = lround(progress * (sd->frame_count - 1)); + else + sd->cur_frame = 0; +} + + +EOLIAN static void _efl_ui_image_zoomable_class_constructor(Efl_Class *klass EINA_UNUSED) { PHOTO_FILE_LOAD_ERROR_GENERIC = eina_error_msg_static_register("Generic load error"); diff --git a/src/lib/elementary/efl_ui_image_zoomable.eo b/src/lib/elementary/efl_ui_image_zoomable.eo index 5b097e1fab..4887128503 100644 --- a/src/lib/elementary/efl_ui_image_zoomable.eo +++ b/src/lib/elementary/efl_ui_image_zoomable.eo @@ -50,7 +50,7 @@ class Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom Efl.Player.playing { get; set; } Efl.Player.paused { get; set; } Efl.Player.playback_position { get; set; } - Efl.Player.playback_progress { get; } + Efl.Player.playback_progress { get; set; } Efl.Player.playback_speed { get; set; } Efl.Ui.Zoom.zoom_animation { set; get; } Efl.Ui.Zoom.zoom_level { set; get; } diff --git a/src/lib/emotion/efl_canvas_video.eo b/src/lib/emotion/efl_canvas_video.eo index 162e0fcc27..0f2ffa7435 100644 --- a/src/lib/emotion/efl_canvas_video.eo +++ b/src/lib/emotion/efl_canvas_video.eo @@ -60,7 +60,7 @@ class @beta Efl.Canvas.Video extends Efl.Canvas.Group Efl.Player.playing { get; set; } Efl.Player.paused { get; set; } Efl.Player.playback_position { get; set; } - Efl.Player.playback_progress { get; } + Efl.Player.playback_progress { get; set; } Efl.Audio_Control.volume { get; set; } Efl.Audio_Control.mute { get; set; } Efl.Playable.length { get; } diff --git a/src/lib/emotion/emotion_smart.c b/src/lib/emotion/emotion_smart.c index a642386fbe..9f723e5bef 100644 --- a/src/lib/emotion/emotion_smart.c +++ b/src/lib/emotion/emotion_smart.c @@ -1217,6 +1217,13 @@ _efl_canvas_video_efl_player_playback_progress_get(const Eo *obj EINA_UNUSED, Ef return sd->progress.stat; } +EOLIAN static void +_efl_canvas_video_efl_player_playback_progress_set(Eo *obj, Efl_Canvas_Video_Data *sd EINA_UNUSED, double progress) +{ + const char *info = emotion_object_progress_info_get((const Evas_Object*)obj); + _emotion_progress_set(obj, (char*)info, progress); +} + EOLIAN static double _efl_canvas_video_efl_playable_length_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Video_Data *sd) { |