forked from len0rd/rockbox
PictureFlow: Reversible and interruptible animations
Makes PF usable on older devices with few FPS, and makes it quicker to navigate on current devices. - PF_BACK while zooming in to zoom out again - PF_SELECT or PF_PREV/PF_NEXT while zooming in to skip animation - PF_BACK while zooming out to skip animation - PF_PREV/PF_NEXT while zooming out to skip animation + scroll - PF_SELECT while zooming out to zoom in again - PF_CONTEXT while zooming out to skip animation and append - PF_CONTEXT while scrolling to append - PF_SELECT while scrolling to zoom in Change-Id: I8d041b53f5990181059fe837a8ca121ebf37a676
This commit is contained in:
parent
e4d8431211
commit
fd50baa23f
1 changed files with 74 additions and 4 deletions
|
@ -3294,6 +3294,47 @@ static void update_cover_out_animation(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Skip steps for zooming into the current cover
|
||||||
|
*/
|
||||||
|
static void interrupt_cover_in_animation(void)
|
||||||
|
{
|
||||||
|
pf_state = pf_show_tracks;
|
||||||
|
cover_animation_keyframe = 0;
|
||||||
|
extra_fade = 13 * 19;
|
||||||
|
center_slide.distance = -5 * 19;
|
||||||
|
center_slide.angle = 19 + (15 * 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Skip steps for zooming out the current cover
|
||||||
|
*/
|
||||||
|
static void interrupt_cover_out_animation(void)
|
||||||
|
{
|
||||||
|
pf_state = pf_idle;
|
||||||
|
cover_animation_keyframe = 0;
|
||||||
|
extra_fade = 0;
|
||||||
|
set_current_slide(center_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Stop zooming out the current cover and start zooming in
|
||||||
|
*/
|
||||||
|
static void revert_cover_out_animation(void)
|
||||||
|
{
|
||||||
|
pf_state = pf_cover_in;
|
||||||
|
cover_animation_keyframe = 34 - cover_animation_keyframe;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Stop zooming into the current cover and start zooming out
|
||||||
|
*/
|
||||||
|
static void revert_cover_in_animation(void)
|
||||||
|
{
|
||||||
|
pf_state = pf_cover_out;
|
||||||
|
cover_animation_keyframe = 34 - cover_animation_keyframe;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Draw a blue gradient at y with height h
|
Draw a blue gradient at y with height h
|
||||||
*/
|
*/
|
||||||
|
@ -3817,7 +3858,11 @@ static int pictureflow_main(void)
|
||||||
pf_state = pf_cover_out;
|
pf_state = pf_cover_out;
|
||||||
free_borrowed_tracks();
|
free_borrowed_tracks();
|
||||||
}
|
}
|
||||||
if (pf_state == pf_idle || pf_state == pf_scrolling)
|
else if (pf_state == pf_cover_in)
|
||||||
|
revert_cover_in_animation();
|
||||||
|
else if (pf_state == pf_cover_out)
|
||||||
|
interrupt_cover_out_animation();
|
||||||
|
else if (pf_state == pf_idle || pf_state == pf_scrolling)
|
||||||
return PLUGIN_OK;
|
return PLUGIN_OK;
|
||||||
break;
|
break;
|
||||||
case PF_MENU:
|
case PF_MENU:
|
||||||
|
@ -3838,6 +3883,11 @@ static int pictureflow_main(void)
|
||||||
case PF_NEXT_REPEAT:
|
case PF_NEXT_REPEAT:
|
||||||
if ( pf_state == pf_show_tracks )
|
if ( pf_state == pf_show_tracks )
|
||||||
select_next_track();
|
select_next_track();
|
||||||
|
else if (pf_state == pf_cover_in)
|
||||||
|
interrupt_cover_in_animation();
|
||||||
|
else if (pf_state == pf_cover_out)
|
||||||
|
interrupt_cover_out_animation();
|
||||||
|
|
||||||
if ( pf_state == pf_idle || pf_state == pf_scrolling )
|
if ( pf_state == pf_idle || pf_state == pf_scrolling )
|
||||||
show_next_slide();
|
show_next_slide();
|
||||||
break;
|
break;
|
||||||
|
@ -3846,13 +3896,27 @@ static int pictureflow_main(void)
|
||||||
case PF_PREV_REPEAT:
|
case PF_PREV_REPEAT:
|
||||||
if ( pf_state == pf_show_tracks )
|
if ( pf_state == pf_show_tracks )
|
||||||
select_prev_track();
|
select_prev_track();
|
||||||
|
else if (pf_state == pf_cover_in)
|
||||||
|
interrupt_cover_in_animation();
|
||||||
|
else if (pf_state == pf_cover_out)
|
||||||
|
interrupt_cover_out_animation();
|
||||||
|
|
||||||
if ( pf_state == pf_idle || pf_state == pf_scrolling )
|
if ( pf_state == pf_idle || pf_state == pf_scrolling )
|
||||||
show_previous_slide();
|
show_previous_slide();
|
||||||
break;
|
break;
|
||||||
#if PF_PLAYBACK_CAPABLE
|
#if PF_PLAYBACK_CAPABLE
|
||||||
case PF_CONTEXT:
|
case PF_CONTEXT:
|
||||||
if ( pf_cfg.auto_wps != 0 &&
|
if (pf_cfg.auto_wps != 0 &&
|
||||||
(pf_state == pf_idle || pf_state == pf_show_tracks)) {
|
(pf_state == pf_idle || pf_state == pf_scrolling ||
|
||||||
|
pf_state == pf_show_tracks || pf_state == pf_cover_out)) {
|
||||||
|
|
||||||
|
if ( pf_state == pf_scrolling)
|
||||||
|
{
|
||||||
|
set_current_slide(target);
|
||||||
|
pf_state = pf_idle;
|
||||||
|
} else if (pf_state == pf_cover_out)
|
||||||
|
interrupt_cover_out_animation();
|
||||||
|
|
||||||
if( pf_state == pf_idle ) {
|
if( pf_state == pf_idle ) {
|
||||||
create_track_index(center_slide.slide_index);
|
create_track_index(center_slide.slide_index);
|
||||||
reset_track_list();
|
reset_track_list();
|
||||||
|
@ -3887,7 +3951,9 @@ static int pictureflow_main(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PF_SELECT:
|
case PF_SELECT:
|
||||||
if ( pf_state == pf_idle ) {
|
if ( pf_state == pf_idle || pf_state == pf_scrolling) {
|
||||||
|
if (pf_state == pf_scrolling)
|
||||||
|
set_current_slide(target);
|
||||||
#if PF_PLAYBACK_CAPABLE
|
#if PF_PLAYBACK_CAPABLE
|
||||||
if(pf_cfg.auto_wps == 1) {
|
if(pf_cfg.auto_wps == 1) {
|
||||||
create_track_index(center_slide.slide_index);
|
create_track_index(center_slide.slide_index);
|
||||||
|
@ -3900,6 +3966,10 @@ static int pictureflow_main(void)
|
||||||
#endif
|
#endif
|
||||||
pf_state = pf_cover_in;
|
pf_state = pf_cover_in;
|
||||||
}
|
}
|
||||||
|
else if (pf_state == pf_cover_out)
|
||||||
|
revert_cover_out_animation();
|
||||||
|
else if (pf_state == pf_cover_in)
|
||||||
|
interrupt_cover_in_animation();
|
||||||
else if ( pf_state == pf_show_tracks ) {
|
else if ( pf_state == pf_show_tracks ) {
|
||||||
#if PF_PLAYBACK_CAPABLE
|
#if PF_PLAYBACK_CAPABLE
|
||||||
start_playback(false);
|
start_playback(false);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue