forked from enlightenment/efl
efl_ui/image: implement efl.player::playback_speed methods
Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D10121
This commit is contained in:
parent
5555c8e879
commit
3e7b7a47e7
|
@ -141,7 +141,7 @@ _efl_ui_image_animate_cb(void *data)
|
|||
(sd->img, sd->cur_frame, 0);
|
||||
|
||||
if (sd->frame_duration > 0)
|
||||
ecore_timer_interval_set(sd->anim_timer, sd->frame_duration);
|
||||
ecore_timer_interval_set(sd->anim_timer, sd->frame_duration * sd->playback_speed);
|
||||
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
@ -873,6 +873,7 @@ _efl_ui_image_efl_object_constructor(Eo *obj, Efl_Ui_Image_Data *pd)
|
|||
pd->self = obj;
|
||||
/* legacy elm_image starts paused */
|
||||
pd->paused = elm_widget_is_legacy(obj);
|
||||
pd->playback_speed = 1;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
@ -1761,7 +1762,7 @@ _efl_ui_image_animated_set_internal(Eo *obj, Efl_Ui_Image_Data *sd, Eina_Bool an
|
|||
evas_object_image_animated_frame_set(sd->img, sd->cur_frame);
|
||||
if (!sd->paused)//legacy
|
||||
sd->anim_timer = ecore_timer_add
|
||||
(sd->frame_duration, _efl_ui_image_animate_cb, obj);
|
||||
(sd->frame_duration * sd->playback_speed, _efl_ui_image_animate_cb, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1809,6 +1810,28 @@ _efl_ui_image_efl_player_playing_get(const Eo *obj, Efl_Ui_Image_Data *sd)
|
|||
return _efl_ui_image_animated_get_internal(obj, sd);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_image_efl_player_playback_speed_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, double factor)
|
||||
{
|
||||
EINA_SAFETY_ON_TRUE_RETURN(factor < 0.0);
|
||||
EINA_SAFETY_ON_TRUE_RETURN(EINA_DBL_EQ(factor, 0.0));
|
||||
if (EINA_DBL_EQ(sd->playback_speed, factor)) return;
|
||||
sd->playback_speed = factor;
|
||||
if (sd->edje)
|
||||
efl_player_playback_speed_set(sd->img, factor);
|
||||
else if (sd->anim_timer)
|
||||
{
|
||||
ecore_timer_interval_set(sd->anim_timer, sd->frame_duration * sd->playback_speed);
|
||||
ecore_timer_reset(sd->anim_timer);
|
||||
}
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_ui_image_efl_player_playback_speed_get(const Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd)
|
||||
{
|
||||
return sd->playback_speed;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_image_efl_player_playback_position_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, double sec)
|
||||
{
|
||||
|
@ -1858,7 +1881,7 @@ _efl_ui_image_animated_paused_set_internal(Eo *obj, Efl_Ui_Image_Data *sd, Eina_
|
|||
if (!paused)
|
||||
{
|
||||
sd->anim_timer = ecore_timer_add
|
||||
(sd->frame_duration, _efl_ui_image_animate_cb, obj);
|
||||
(sd->frame_duration * sd->playback_speed, _efl_ui_image_animate_cb, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -102,6 +102,7 @@ class Efl.Ui.Image extends Efl.Ui.Widget implements Efl.Input.Clickable, Efl.Ui.
|
|||
Efl.Player.paused { get; set; }
|
||||
Efl.Player.playback_position { get; set; }
|
||||
Efl.Player.playback_progress { get; }
|
||||
Efl.Player.playback_speed { get; set; }
|
||||
Efl.Layout.Signal.signal_emit;
|
||||
Efl.Layout.Signal.message_send;
|
||||
Efl.Layout.Signal.signal_callback_add;
|
||||
|
|
|
@ -1938,12 +1938,13 @@ _efl_ui_image_zoomable_efl_canvas_group_group_member_add(Eo *obj, Efl_Ui_Image_Z
|
|||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
_efl_ui_image_zoomable_efl_object_constructor(Eo *obj, Efl_Ui_Image_Zoomable_Data *_pd EINA_UNUSED)
|
||||
_efl_ui_image_zoomable_efl_object_constructor(Eo *obj, Efl_Ui_Image_Zoomable_Data *pd)
|
||||
{
|
||||
obj = efl_constructor(efl_super(obj, MY_CLASS));
|
||||
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
||||
efl_access_object_role_set(obj, EFL_ACCESS_ROLE_IMAGE);
|
||||
legacy_object_focus_handle(obj);
|
||||
pd->playback_speed = 1;
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -3034,7 +3035,7 @@ _efl_ui_image_zoomable_animate_cb(void *data)
|
|||
(sd->img, sd->cur_frame, 0);
|
||||
|
||||
if (sd->frame_duration > 0)
|
||||
ecore_timer_interval_set(sd->anim_timer, sd->frame_duration);
|
||||
ecore_timer_interval_set(sd->anim_timer, sd->frame_duration * sd->playback_speed);
|
||||
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
@ -3064,7 +3065,7 @@ _efl_ui_image_zoomable_animated_set_internal(Eo *obj EINA_UNUSED, Efl_Ui_Image_Z
|
|||
evas_object_image_animated_frame_set(sd->img, sd->cur_frame);
|
||||
if (!sd->paused)//legacy
|
||||
sd->anim_timer = ecore_timer_add
|
||||
(sd->frame_duration, _efl_ui_image_zoomable_animate_cb, obj);
|
||||
(sd->frame_duration * sd->playback_speed, _efl_ui_image_zoomable_animate_cb, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3091,7 +3092,7 @@ _efl_ui_image_zoomable_animated_paused_set_internal(Eo *obj, Efl_Ui_Image_Zoomab
|
|||
if (!paused)
|
||||
{
|
||||
sd->anim_timer = ecore_timer_add
|
||||
(sd->frame_duration, _efl_ui_image_zoomable_animate_cb, obj);
|
||||
(sd->frame_duration * sd->playback_speed, _efl_ui_image_zoomable_animate_cb, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3126,6 +3127,28 @@ _efl_ui_image_zoomable_efl_player_paused_get(const Eo *obj EINA_UNUSED, Efl_Ui_I
|
|||
return sd->paused;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_image_zoomable_efl_player_playback_speed_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd, double factor)
|
||||
{
|
||||
EINA_SAFETY_ON_TRUE_RETURN(factor < 0.0);
|
||||
EINA_SAFETY_ON_TRUE_RETURN(EINA_DBL_EQ(factor, 0.0));
|
||||
if (EINA_DBL_EQ(sd->playback_speed, factor)) return;
|
||||
sd->playback_speed = factor;
|
||||
if (sd->edje)
|
||||
efl_player_playback_speed_set(sd->edje, factor);
|
||||
else if (sd->anim_timer)
|
||||
{
|
||||
ecore_timer_interval_set(sd->anim_timer, sd->frame_duration * sd->playback_speed);
|
||||
ecore_timer_reset(sd->anim_timer);
|
||||
}
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_ui_image_zoomable_efl_player_playback_speed_get(const Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd)
|
||||
{
|
||||
return sd->playback_speed;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_ui_image_zoomable_efl_player_playback_position_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd, double sec)
|
||||
{
|
||||
|
|
|
@ -48,6 +48,7 @@ class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom
|
|||
Efl.Player.paused { get; set; }
|
||||
Efl.Player.playback_position { get; set; }
|
||||
Efl.Player.playback_progress { get; }
|
||||
Efl.Player.playback_speed { get; set; }
|
||||
Efl.Ui.Zoom.zoom_animation { set; get; }
|
||||
Efl.Ui.Zoom.zoom_level { set; get; }
|
||||
Efl.Ui.Zoom.zoom_mode { set; get; }
|
||||
|
|
|
@ -125,6 +125,7 @@ struct _Efl_Ui_Image_Zoomable_Data
|
|||
|
||||
Ecore_Timer *anim_timer;
|
||||
double frame_duration;
|
||||
double playback_speed;
|
||||
int cur_frame;
|
||||
int frame_count;
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ struct _Efl_Ui_Image_Data
|
|||
|
||||
double scale;
|
||||
double frame_duration;
|
||||
double playback_speed;
|
||||
double align_x, align_y;
|
||||
|
||||
Eina_Size2D load_size;
|
||||
|
|
Loading…
Reference in New Issue