From d9409e071fd5b46248f332f114f4a7e575f227ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 20 Apr 2015 21:22:55 +0700 Subject: [PATCH 1/2] (GLUI) Animate keyboard navigation --- menu/drivers/glui.c | 13 ++++++++++--- menu/menu_driver.h | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 46a1abe26b..4f04ad97f2 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -297,6 +297,8 @@ static void glui_render(void) if (!gl) return; + menu_animation_update(menu->animation, menu->dt / IDEAL_DT); + menu->frame_buf.width = gl->win_width; menu->frame_buf.height = gl->win_height; @@ -642,7 +644,8 @@ static void glui_navigation_clear(bool pending_push) return; menu->begin = 0; - menu->scroll_y = 0; + menu_animation_push(menu->animation, 10, 0, + &menu->scroll_y, EASING_IN_OUT_QUAD, NULL); } static void glui_navigation_set(bool scroll) @@ -650,6 +653,7 @@ static void glui_navigation_set(bool scroll) glui_handle_t *glui = NULL; menu_handle_t *menu = menu_driver_get_ptr(); gl_t *gl = (gl_t*)video_driver_get_ptr(NULL); + float sy = 0; if (!menu) return; @@ -664,9 +668,12 @@ static void glui_navigation_set(bool scroll) int half = (gl->win_height / glui->line_height) / 2; if (menu->navigation.selection_ptr < half) - menu->scroll_y = 0; + sy = 0; else - menu->scroll_y = ((menu->navigation.selection_ptr + 2 - half) * glui->line_height); + sy = ((menu->navigation.selection_ptr + 2 - half) * glui->line_height); + + menu_animation_push(menu->animation, 10, sy, + &menu->scroll_y, EASING_IN_OUT_QUAD, NULL); } static void glui_navigation_set_last(void) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 4c4a47e784..0f40c5e585 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -113,7 +113,7 @@ typedef struct size_t begin; unsigned header_height; - int scroll_y; + float scroll_y; menu_list_t *menu_list; menu_navigation_t navigation; From c8af545fd9218b51d5c3b6ac05e8a017f74e6295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 20 Apr 2015 21:35:41 +0700 Subject: [PATCH 2/2] (GLUI) Don't animate navigation clear, it's ugly in some cases --- menu/drivers/glui.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 4f04ad97f2..88ce233022 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -644,8 +644,7 @@ static void glui_navigation_clear(bool pending_push) return; menu->begin = 0; - menu_animation_push(menu->animation, 10, 0, - &menu->scroll_y, EASING_IN_OUT_QUAD, NULL); + menu->scroll_y = 0; } static void glui_navigation_set(bool scroll)