From b34fb9e0815155684ffb6da48c049cae3a67aa7f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 2 Nov 2015 19:47:25 +0100 Subject: [PATCH] Add scaling steps to menu_display_matrix4x4_rotate_z too --- menu/drivers/glui.c | 7 ++----- menu/drivers/xmb.c | 35 ++++++++++------------------------- menu/menu_display.c | 10 +++++++++- menu/menu_display.h | 3 ++- 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 49d0cb05fb..f024c21635 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -181,14 +181,11 @@ static void glui_draw_icon(gl_t *gl, glui_handle_t *glui, GRfloat *color) { struct gfx_coords coords; - math_matrix_4x4 mymat, mscal; + math_matrix_4x4 mymat; menu_display_blend_begin(); - menu_display_matrix_4x4_rotate_z(&mymat, rotation); - - matrix_4x4_scale(&mscal, scale_factor, scale_factor, 1); - matrix_4x4_multiply(&mymat, &mscal, &mymat); + menu_display_matrix_4x4_rotate_z(&mymat, rotation, scale_factor, scale_factor, 1, true); coords.vertices = 4; coords.vertex = glui_vertexes; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index ec05cc349b..9b6f16745d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -352,7 +352,7 @@ static void xmb_draw_icon(gl_t *gl, xmb_handle_t *xmb, GRfloat *color) { struct gfx_coords coords; - math_matrix_4x4 mymat, mscal; + math_matrix_4x4 mymat; if ( x < -xmb->icon.size/2 || @@ -361,10 +361,7 @@ static void xmb_draw_icon(gl_t *gl, xmb_handle_t *xmb, y > height + xmb->icon.size) return; - menu_display_matrix_4x4_rotate_z(&mymat, rotation); - - matrix_4x4_scale(&mscal, scale_factor, scale_factor, 1); - matrix_4x4_multiply(&mymat, &mscal, &mymat); + menu_display_matrix_4x4_rotate_z(&mymat, rotation, scale_factor, scale_factor, 1, true); coords.vertices = 4; coords.vertex = rmb_vertex; @@ -416,18 +413,12 @@ static void xmb_draw_icon_predone(xmb_handle_t *xmb, static void xmb_draw_boxart(gl_t *gl, xmb_handle_t *xmb, GRfloat *color, unsigned width, unsigned height) { struct gfx_coords coords; - float x, y; - math_matrix_4x4 mymat, mscal; - - y = xmb->margins.screen.top + xmb->icon.size + xmb->boxart_size; - - x = xmb->margins.screen.left + xmb->icon.spacing.horizontal + + math_matrix_4x4 mymat; + float y = xmb->margins.screen.top + xmb->icon.size + xmb->boxart_size; + float x = xmb->margins.screen.left + xmb->icon.spacing.horizontal + xmb->icon.spacing.horizontal*4 - xmb->icon.size / 4; - menu_display_matrix_4x4_rotate_z(&mymat, 0); - - matrix_4x4_scale(&mscal, 1, 1, 1); - matrix_4x4_multiply(&mymat, &mscal, &mymat); + menu_display_matrix_4x4_rotate_z(&mymat, 0, 1, 1, 1, true); coords.vertices = 4; coords.vertex = rmb_vertex; @@ -1190,7 +1181,7 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl, unsigned width, unsigned height) { unsigned i, ticker_limit; - math_matrix_4x4 mymat, mscal; + math_matrix_4x4 mymat; xmb_node_t *core_node = NULL; size_t end = 0; uint64_t *frame_count = video_driver_get_frame_count(); @@ -1205,10 +1196,7 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl, end = file_list_get_size(list); - menu_display_matrix_4x4_rotate_z(&mymat, 0 /* rotation */); - - matrix_4x4_scale(&mscal, 1 /* scale_factor */, 1 /* scale_factor */, 1); - matrix_4x4_multiply(&mymat, &mscal, &mymat); + menu_display_matrix_4x4_rotate_z(&mymat, 0, 1, 1, 1, true); i = menu_entries_get_start(); @@ -1534,7 +1522,7 @@ static void xmb_frame_horizontal_list(xmb_handle_t *xmb, static void xmb_frame(void) { size_t selection; - math_matrix_4x4 mymat, mscal; + math_matrix_4x4 mymat; unsigned depth, i, width, height; char msg[PATH_MAX_LENGTH]; char title_msg[PATH_MAX_LENGTH]; @@ -1630,10 +1618,7 @@ static void xmb_frame(void) xmb->categories.selection_ptr, &item_color[0], width, height); - menu_display_matrix_4x4_rotate_z(&mymat, 0 /* rotation */); - - matrix_4x4_scale(&mscal, 1 /* scale_factor */, 1 /* scale_factor */, 1); - matrix_4x4_multiply(&mymat, &mscal, &mymat); + menu_display_matrix_4x4_rotate_z(&mymat, 0, 1, 1, 1, true); menu_display_blend_begin(); diff --git a/menu/menu_display.c b/menu/menu_display.c index b237514a9c..88cc845f2f 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -503,9 +503,11 @@ static GLenum menu_display_prim_to_gl_enum(enum menu_display_prim_type prim_type return 0; } -void menu_display_matrix_4x4_rotate_z(void *data, float rotation) +void menu_display_matrix_4x4_rotate_z(void *data, float rotation, + float scale_x, float scale_y, float scale_z, bool scale_enable) { math_matrix_4x4 matrix_rotated; + math_matrix_4x4 matrix_scaled; math_matrix_4x4 *b = NULL; math_matrix_4x4 *matrix = (math_matrix_4x4*)data; #ifdef HAVE_OPENGL @@ -521,6 +523,12 @@ void menu_display_matrix_4x4_rotate_z(void *data, float rotation) matrix_4x4_rotate_z(&matrix_rotated, rotation); matrix_4x4_multiply(matrix, &matrix_rotated, b); + + if (!scale_enable) + return; + + matrix_4x4_scale(&matrix_scaled, scale_x, scale_y, scale_z); + matrix_4x4_multiply(matrix, &matrix_scaled, matrix); } void menu_display_blend_begin(void) diff --git a/menu/menu_display.h b/menu/menu_display.h index d954ddaf32..f4694837db 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -127,7 +127,8 @@ void menu_display_clear_color(void *data, float r, float g, float b, float a); #endif -void menu_display_matrix_4x4_rotate_z(void *data, float rotation); +void menu_display_matrix_4x4_rotate_z(void *data, float rotation, + float scale_x, float scale_y, float scale_z, bool scale_enable); const char *menu_video_get_ident(void);