From 2030f7faf81f97154eb9f055ac394228bdb7bfa2 Mon Sep 17 00:00:00 2001
From: Patrick Scheurenbrand <st140926@stud.uni-stuttgart.de>
Date: Sun, 10 Feb 2019 21:15:16 +0100
Subject: [PATCH] added dimensions variable to use for scaling; added sidebar
 entry dimension variables

---
 menu/drivers/ozone/ozone.c         | 54 +++++++++++++++++-----------
 menu/drivers/ozone/ozone.h         | 17 ++++++++-
 menu/drivers/ozone/ozone_entries.c | 22 ++++++------
 menu/drivers/ozone/ozone_sidebar.c | 56 ++++++++++++++++--------------
 4 files changed, 90 insertions(+), 59 deletions(-)

diff --git a/menu/drivers/ozone/ozone.c b/menu/drivers/ozone/ozone.c
index 2490d49084..3a0346b367 100644
--- a/menu/drivers/ozone/ozone.c
+++ b/menu/drivers/ozone/ozone.c
@@ -468,6 +468,18 @@ static void ozone_context_reset(void *data, bool is_threaded)
       }
 
       ozone_restart_cursor_animation(ozone);
+
+      int scale = 1;
+
+      /* UI dimensions */
+      ozone->ui_dimensions.header_height = HEADER_HEIGHT * scale;
+      ozone->ui_dimensions.footer_height = FOOTER_HEIGHT * scale;
+      ozone->ui_dimensions.sidebar_width = SIDEBAR_WIDTH * scale;
+      ozone->ui_dimensions.entry_padding = ENTRY_PADDING * scale;
+
+      ozone->ui_dimensions.sidebar_entry_height = ENTRY_HEIGHT * scale;
+      ozone->ui_dimensions.sidebar_padding_vertical = SIDEBAR_Y_PADDING * scale;
+      ozone->ui_dimensions.sidebar_entry_padding_vertical = ENTRY_Y_PADDING * scale;
    }
 }
 
@@ -797,13 +809,13 @@ static void ozone_update_scroll(ozone_handle_t *ozone, bool allow_animation, ozo
    video_driver_get_size(NULL, &video_info_height);
 
    current_selection_middle_onscreen    = ENTRIES_START_Y + ozone->animations.scroll_y + node->position_y + node->height / 2;
-   bottom_boundary                      = video_info_height - HEADER_HEIGHT - FOOTER_HEIGHT;
+   bottom_boundary                      = video_info_height - ozone->ui_dimensions.header_height - ozone->ui_dimensions.footer_height;
    entries_middle                       = video_info_height/2;
 
    new_scroll = ozone->animations.scroll_y - (current_selection_middle_onscreen - entries_middle);
 
    if (new_scroll + ozone->entries_height < bottom_boundary)
-      new_scroll = -(FOOTER_HEIGHT + ozone->entries_height - bottom_boundary);
+      new_scroll = -(ozone->ui_dimensions.footer_height + ozone->entries_height - bottom_boundary);
 
    if (new_scroll > 0)
       new_scroll = 0;
@@ -966,7 +978,7 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
    unsigned timedate_offset = 0;
 
    /* Separator */
-   menu_display_draw_quad(video_info, 30, HEADER_HEIGHT, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator);
+   menu_display_draw_quad(video_info, 30, ozone->ui_dimensions.header_height, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator);
 
    /* Title */
    ticker.s = title;
@@ -977,7 +989,7 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
 
    menu_animation_ticker(&ticker);
 
-   ozone_draw_text(video_info, ozone, title, 128, HEADER_HEIGHT / 2 + FONT_SIZE_TITLE * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.title, ozone->theme->text_rgba, false);
+   ozone_draw_text(video_info, ozone, title, 128, ozone->ui_dimensions.header_height / 2 + FONT_SIZE_TITLE * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.title, ozone->theme->text_rgba, false);
 
    /* Icon */
    menu_display_blend_begin(video_info);
@@ -986,7 +998,7 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
       ozone_draw_icon(video_info, 60, 60, ozone->textures[OZONE_TEXTURE_DISCORD_OWN_AVATAR], 47, 14, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
    else
 #endif
-      ozone_draw_icon(video_info, 60, 60, ozone->textures[OZONE_TEXTURE_RETROARCH], 47, (HEADER_HEIGHT - 60) / 2, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
+      ozone_draw_icon(video_info, 60, 60, ozone->textures[OZONE_TEXTURE_RETROARCH], 47, (ozone->ui_dimensions.header_height - 60) / 2, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
    menu_display_blend_end(video_info);
 
    /* Battery */
@@ -1016,10 +1028,10 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
 
          snprintf(msg, sizeof(msg), "%d%%", percent);
 
-         ozone_draw_text(video_info, ozone, msg, video_info->width - 85, HEADER_HEIGHT / 2 + FONT_SIZE_TIME * 3/8, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.time, ozone->theme->text_rgba, false);
+         ozone_draw_text(video_info, ozone, msg, video_info->width - 85, ozone->ui_dimensions.header_height / 2 + FONT_SIZE_TIME * 3/8, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.time, ozone->theme->text_rgba, false);
 
          menu_display_blend_begin(video_info);
-         ozone_draw_icon(video_info, 92, 92, ozone->icons_textures[charging ? OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_CHARGING : OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_FULL], video_info->width - 60 - 56, HEADER_HEIGHT / 2 - 42, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
+         ozone_draw_icon(video_info, 92, 92, ozone->icons_textures[charging ? OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_CHARGING : OZONE_ENTRIES_ICONS_TEXTURE_BATTERY_FULL], video_info->width - 60 - 56, ozone->ui_dimensions.header_height / 2 - 42, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
          menu_display_blend_end(video_info);
       }
    }
@@ -1038,10 +1050,10 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
 
       menu_display_timedate(&datetime);
 
-      ozone_draw_text(video_info, ozone, timedate, video_info->width - 85 - timedate_offset, HEADER_HEIGHT / 2 + FONT_SIZE_TIME * 3/8, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.time, ozone->theme->text_rgba, false);
+      ozone_draw_text(video_info, ozone, timedate, video_info->width - 85 - timedate_offset, ozone->ui_dimensions.header_height / 2 + FONT_SIZE_TIME * 3/8, TEXT_ALIGN_RIGHT, video_info->width, video_info->height, ozone->fonts.time, ozone->theme->text_rgba, false);
 
       menu_display_blend_begin(video_info);
-      ozone_draw_icon(video_info, 92, 92, ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CLOCK], video_info->width - 60 - 56 - timedate_offset, HEADER_HEIGHT / 2 - 42, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
+      ozone_draw_icon(video_info, 92, 92, ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CLOCK], video_info->width - 60 - 56 - timedate_offset, ozone->ui_dimensions.header_height / 2 - 42, video_info->width, video_info->height, 0, 1, ozone->theme->entries_icon);
       menu_display_blend_end(video_info);
    }
 }
@@ -1050,13 +1062,13 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i
 {
    char core_title[255];
    /* Separator */
-   menu_display_draw_quad(video_info, 23, video_info->height - FOOTER_HEIGHT, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator);
+   menu_display_draw_quad(video_info, 23, video_info->height - ozone->ui_dimensions.footer_height, video_info->width - 60, 1, video_info->width, video_info->height, ozone->theme->header_footer_separator);
 
    /* Core title or Switch icon */
    if (settings->bools.menu_core_enable && menu_entries_get_core_title(core_title, sizeof(core_title)) == 0)
-      ozone_draw_text(video_info, ozone, core_title, 59, video_info->height - FOOTER_HEIGHT / 2 + FONT_SIZE_FOOTER * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
+      ozone_draw_text(video_info, ozone, core_title, 59, video_info->height - ozone->ui_dimensions.footer_height / 2 + FONT_SIZE_FOOTER * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
    else
-      ozone_draw_icon(video_info, 69, 30, ozone->theme->textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - FOOTER_HEIGHT / 2 - 15, video_info->width,video_info->height, 0, 1, NULL);
+      ozone_draw_icon(video_info, 69, 30, ozone->theme->textures[OZONE_THEME_TEXTURE_SWITCH], 59, video_info->height - ozone->ui_dimensions.footer_height / 2 - 15, video_info->width,video_info->height, 0, 1, NULL);
 
    /* Buttons */
    {
@@ -1078,13 +1090,13 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i
 
       if (do_swap)
       {
-         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 133, video_info->height - FOOTER_HEIGHT / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
-         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 251, video_info->height - FOOTER_HEIGHT / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
+         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 133, video_info->height - ozone->ui_dimensions.footer_height / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
+         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 251, video_info->height - ozone->ui_dimensions.footer_height / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
       }
       else
       {
-         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - FOOTER_HEIGHT / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
-         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - FOOTER_HEIGHT / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
+         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_B], video_info->width - 251, video_info->height - ozone->ui_dimensions.footer_height / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
+         ozone_draw_icon(video_info, 25, 25, ozone->theme->textures[OZONE_THEME_TEXTURE_BUTTON_A], video_info->width - 133, video_info->height - ozone->ui_dimensions.footer_height / 2 - 12, video_info->width,video_info->height, 0, 1, NULL);
       }
 
       menu_display_blend_end(video_info);
@@ -1093,12 +1105,12 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i
             do_swap ?
             msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK) :
             msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK),
-            video_info->width - back_width, video_info->height - FOOTER_HEIGHT / 2 + FONT_SIZE_FOOTER * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
+            video_info->width - back_width, video_info->height - ozone->ui_dimensions.footer_height / 2 + FONT_SIZE_FOOTER * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
       ozone_draw_text(video_info, ozone,
             do_swap ?
             msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK) :
             msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK),
-            video_info->width - ok_width, video_info->height - FOOTER_HEIGHT / 2 + FONT_SIZE_FOOTER * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
+            video_info->width - ok_width, video_info->height - ozone->ui_dimensions.footer_height / 2 + FONT_SIZE_FOOTER * 3/8, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.footer, ozone->theme->text_rgba, false);
    }
 
    menu_display_blend_end(video_info);
@@ -1248,7 +1260,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
    ozone_draw_sidebar(ozone, video_info);
 
    /* Menu entries */
-   menu_display_scissor_begin(video_info, ozone->sidebar_offset + SIDEBAR_WIDTH, HEADER_HEIGHT, video_info->width - SIDEBAR_WIDTH + (-ozone->sidebar_offset), video_info->height - HEADER_HEIGHT - FOOTER_HEIGHT);
+   menu_display_scissor_begin(video_info, ozone->sidebar_offset + ozone->ui_dimensions.sidebar_width, ozone->ui_dimensions.header_height, video_info->width - ozone->ui_dimensions.sidebar_width + (-ozone->sidebar_offset), video_info->height - ozone->ui_dimensions.header_height - ozone->ui_dimensions.footer_height);
 
    /* Current list */
    ozone_draw_entries(ozone,
@@ -1414,7 +1426,7 @@ static void ozone_list_open(ozone_handle_t *ozone)
       entry.easing_enum = EASING_OUT_QUAD;
       entry.subject = &ozone->sidebar_offset;
       entry.tag = (uintptr_t) NULL;
-      entry.target_value = -SIDEBAR_WIDTH;
+      entry.target_value = -ozone->ui_dimensions.sidebar_width;
       entry.userdata = (void*) ozone;
 
       menu_animation_push(&entry);
@@ -1740,7 +1752,7 @@ static void ozone_list_cache(void *data,
    y                          = ENTRIES_START_Y;
    entries_end                = menu_entries_get_size();
    selection_buf              = menu_entries_get_selection_buf_ptr(0);
-   bottom_boundary            = video_info_height - HEADER_HEIGHT - FOOTER_HEIGHT;
+   bottom_boundary            = video_info_height - ozone->ui_dimensions.header_height - ozone->ui_dimensions.footer_height;
 
    for (i = 0; i < entries_end; i++)
    {
diff --git a/menu/drivers/ozone/ozone.h b/menu/drivers/ozone/ozone.h
index 52d729bc6b..2f09e1dc1f 100644
--- a/menu/drivers/ozone/ozone.h
+++ b/menu/drivers/ozone/ozone.h
@@ -42,7 +42,11 @@ typedef struct ozone_handle ozone_handle_t;
 #define SIDEBAR_WIDTH 408
 #define ENTRY_PADDING 67
 
-#define ENTRIES_START_Y (HEADER_HEIGHT + 40)
+#define SIDEBAR_Y_PADDING 20
+#define ENTRY_HEIGHT 50
+#define ENTRY_Y_PADDING 10
+
+#define ENTRIES_START_Y (HEADER_HEIGHT + 1) + 40
 
 #define INTERVAL_BATTERY_LEVEL_CHECK (30 * 1000000)
 #define INTERVAL_OSK_CURSOR (0.5f * 1000000)
@@ -157,6 +161,17 @@ struct ozone_handle
    unsigned old_list_offset_y;
 
    file_list_t *horizontal_list; /* console tabs */
+
+   struct {
+      int header_height;
+      int footer_height;
+      int sidebar_width;
+      int entry_padding;
+
+      int sidebar_entry_height;
+      int sidebar_padding_vertical;
+      int sidebar_entry_padding_vertical;
+   } ui_dimensions;
 };
 
 /* If you change this struct, also
diff --git a/menu/drivers/ozone/ozone_entries.c b/menu/drivers/ozone/ozone_entries.c
index bec8dbaaf0..c68f1fbad5 100644
--- a/menu/drivers/ozone/ozone_entries.c
+++ b/menu/drivers/ozone/ozone_entries.c
@@ -123,12 +123,12 @@ void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_info,
    old_list       = selection_buf == ozone->selection_buf_old;
    y              = ENTRIES_START_Y;
    sidebar_offset = ozone->sidebar_offset;
-   entry_width    = video_info->width - SIDEBAR_WIDTH - ozone->sidebar_offset - ENTRY_PADDING * 2;
+   entry_width    = video_info->width - ozone->ui_dimensions.sidebar_width - ozone->sidebar_offset - ozone->ui_dimensions.entry_padding * 2;
    button_height  = 52; /* height of the button (entry minus sublabel) */
 
    video_driver_get_size(&video_info_width, &video_info_height);
 
-   bottom_boundary = video_info_height - HEADER_HEIGHT - FOOTER_HEIGHT;
+   bottom_boundary = video_info_height - ozone->ui_dimensions.header_height - ozone->ui_dimensions.footer_height;
    invert          = (ozone->fade_direction) ? -1 : 1;
    alpha_anim      = old_list ? alpha : 1.0f - alpha;
 
@@ -172,8 +172,8 @@ void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_info,
       ozone_color_alpha(ozone->theme_dynamic.entries_checkmark, alpha);
 
       /* Borders */
-      menu_display_draw_quad(video_info, SIDEBAR_WIDTH + x_offset + ENTRY_PADDING - 3, y - 3 + scroll_y, entry_width + 10-3-1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border);
-      menu_display_draw_quad(video_info, SIDEBAR_WIDTH + x_offset + ENTRY_PADDING - 3, y - 3 + button_height + scroll_y, entry_width + 10-3-1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border);
+      menu_display_draw_quad(video_info, ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding - 3, y - 3 + scroll_y, entry_width + 10-3-1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border);
+      menu_display_draw_quad(video_info, ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding - 3, y - 3 + button_height + scroll_y, entry_width + 10-3-1, 1, video_info->width, video_info->height, ozone->theme_dynamic.entries_border);
 
 border_iterate:
       y += node->height;
@@ -181,11 +181,11 @@ border_iterate:
 
    /* Cursor(s) layer - current */
    if (!ozone->cursor_in_sidebar)
-      ozone_draw_cursor(ozone, video_info, SIDEBAR_WIDTH + x_offset + ENTRY_PADDING, entry_width, button_height, selection_y + scroll_y, ozone->animations.cursor_alpha * alpha);
+      ozone_draw_cursor(ozone, video_info, ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding, entry_width, button_height, selection_y + scroll_y, ozone->animations.cursor_alpha * alpha);
 
    /* Old*/
    if (!ozone->cursor_in_sidebar_old)
-      ozone_draw_cursor(ozone, video_info, SIDEBAR_WIDTH + x_offset + ENTRY_PADDING, entry_width, button_height, old_selection_y + scroll_y, (1-ozone->animations.cursor_alpha) * alpha);
+      ozone_draw_cursor(ozone, video_info, ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding, entry_width, button_height, old_selection_y + scroll_y, (1-ozone->animations.cursor_alpha) * alpha);
 
    /* Icons + text */
    y = ENTRIES_START_Y;
@@ -238,7 +238,7 @@ border_iterate:
       if (ozone->empty_playlist)
       {
          unsigned text_width = font_driver_get_message_width(ozone->fonts.entries_label, rich_label, (unsigned)strlen(rich_label), 1);
-         x_offset = (video_info_width - SIDEBAR_WIDTH - ENTRY_PADDING * 2) / 2 - text_width / 2 - 60;
+         x_offset = (video_info_width - ozone->ui_dimensions.sidebar_width - ozone->ui_dimensions.entry_padding * 2) / 2 - text_width / 2 - 60;
          y = video_info_height / 2 - 60;
       }
 
@@ -280,7 +280,7 @@ border_iterate:
          ozone_color_alpha(icon_color, alpha);
 
          menu_display_blend_begin(video_info);
-         ozone_draw_icon(video_info, 46, 46, texture, SIDEBAR_WIDTH + x_offset + ENTRY_PADDING + 10, y + scroll_y, video_info->width, video_info->height, 0, 1, icon_color);
+         ozone_draw_icon(video_info, 46, 46, texture, ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding + 10, y + scroll_y, video_info->width, video_info->height, 0, 1, icon_color);
          menu_display_blend_end(video_info);
 
          if (icon_color == ozone_pure_white)
@@ -290,9 +290,9 @@ border_iterate:
       }
 
       /* Draw text */
-      ozone_draw_text(video_info, ozone, rich_label, text_offset + SIDEBAR_WIDTH + x_offset + ENTRY_PADDING + 60, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_label, COLOR_TEXT_ALPHA(ozone->theme->text_rgba, alpha_uint32), false);
+      ozone_draw_text(video_info, ozone, rich_label, text_offset + ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding + 60, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_label, COLOR_TEXT_ALPHA(ozone->theme->text_rgba, alpha_uint32), false);
       if (sublabel_str)
-         ozone_draw_text(video_info, ozone, sublabel_str, SIDEBAR_WIDTH + x_offset + ENTRY_PADDING + 10, y + FONT_SIZE_ENTRIES_SUBLABEL + 80 - 20 - 3 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_sublabel, COLOR_TEXT_ALPHA(ozone->theme->text_sublabel_rgba, alpha_uint32), false);
+         ozone_draw_text(video_info, ozone, sublabel_str, ozone->ui_dimensions.sidebar_width + x_offset + ozone->ui_dimensions.entry_padding + 10, y + FONT_SIZE_ENTRIES_SUBLABEL + 80 - 20 - 3 + scroll_y, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.entries_sublabel, COLOR_TEXT_ALPHA(ozone->theme->text_sublabel_rgba, alpha_uint32), false);
 
       /* Value */
       ticker.idx      = ozone->frame_count / 20;
@@ -303,7 +303,7 @@ border_iterate:
 
       menu_animation_ticker(&ticker);
 
-      ozone_draw_entry_value(ozone, video_info, entry_value_ticker, SIDEBAR_WIDTH + ENTRY_PADDING + x_offset + entry_width - 20, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y,alpha_uint32, &entry);
+      ozone_draw_entry_value(ozone, video_info, entry_value_ticker, ozone->ui_dimensions.sidebar_width + ozone->ui_dimensions.entry_padding + x_offset + entry_width - 20, y + FONT_SIZE_ENTRIES_LABEL + 8 - 1 + scroll_y,alpha_uint32, &entry);
 
       free(entry_rich_label);
 
diff --git a/menu/drivers/ozone/ozone_sidebar.c b/menu/drivers/ozone/ozone_sidebar.c
index bcd6dfeba8..34233e530c 100644
--- a/menu/drivers/ozone/ozone_sidebar.c
+++ b/menu/drivers/ozone/ozone_sidebar.c
@@ -121,49 +121,49 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info)
    if (ozone->horizontal_list)
       horizontal_list_size = ozone->horizontal_list->size;
 
-   menu_display_scissor_begin(video_info, 0, HEADER_HEIGHT, SIDEBAR_WIDTH, video_info->height - HEADER_HEIGHT - FOOTER_HEIGHT);
+   menu_display_scissor_begin(video_info, 0, ozone->ui_dimensions.header_height, ozone->ui_dimensions.sidebar_width, video_info->height - ozone->ui_dimensions.header_height - ozone->ui_dimensions.footer_height);
 
    /* Background */
-   sidebar_height = video_info->height - HEADER_HEIGHT - 55 - FOOTER_HEIGHT;
+   sidebar_height = video_info->height - ozone->ui_dimensions.header_height - 55 - ozone->ui_dimensions.footer_height;
 
    if (!video_info->libretro_running)
    {
-      menu_display_draw_quad(video_info, ozone->sidebar_offset, HEADER_HEIGHT + 1, SIDEBAR_WIDTH, 55/2, video_info->width, video_info->height, ozone->theme->sidebar_top_gradient);
-      menu_display_draw_quad(video_info, ozone->sidebar_offset, HEADER_HEIGHT + 1 + 55/2, SIDEBAR_WIDTH, sidebar_height, video_info->width, video_info->height, ozone->theme->sidebar_background);
-      menu_display_draw_quad(video_info, ozone->sidebar_offset, video_info->height - FOOTER_HEIGHT - 55/2 - 1, SIDEBAR_WIDTH, 55/2 + 1, video_info->width, video_info->height, ozone->theme->sidebar_bottom_gradient);
+      menu_display_draw_quad(video_info, ozone->sidebar_offset, ozone->ui_dimensions.header_height + 1, ozone->ui_dimensions.sidebar_width, 55/2, video_info->width, video_info->height, ozone->theme->sidebar_top_gradient);
+      menu_display_draw_quad(video_info, ozone->sidebar_offset, ozone->ui_dimensions.header_height + 1 + 55/2, ozone->ui_dimensions.sidebar_width, sidebar_height, video_info->width, video_info->height, ozone->theme->sidebar_background);
+      menu_display_draw_quad(video_info, ozone->sidebar_offset, video_info->height - ozone->ui_dimensions.footer_height - 55/2 - 1, ozone->ui_dimensions.sidebar_width, 55/2 + 1, video_info->width, video_info->height, ozone->theme->sidebar_bottom_gradient);
    }
 
    /* Tabs */
    /* y offset computation */
-   y = ENTRIES_START_Y - 10;
+   y = ozone->ui_dimensions.header_height + 1 + ozone->ui_dimensions.sidebar_padding_vertical;
    for (i = 0; i < ozone->system_tab_end + horizontal_list_size + 1; i++)
    {
       if (i == ozone->categories_selection_ptr)
       {
          selection_y = y;
          if (ozone->categories_selection_ptr > ozone->system_tab_end)
-            selection_y += 30;
+            selection_y += ozone->ui_dimensions.sidebar_entry_padding_vertical + 1;
       }
 
       if (i == ozone->categories_active_idx_old)
       {
          selection_old_y = y;
          if (ozone->categories_active_idx_old > ozone->system_tab_end)
-            selection_old_y += 30;
+            selection_old_y += ozone->ui_dimensions.sidebar_entry_padding_vertical + 1;
       }
 
-      y += 65;
+      y += ozone->ui_dimensions.sidebar_entry_height + ozone->ui_dimensions.sidebar_entry_padding_vertical;
    }
 
    /* Cursor */
    if (ozone->cursor_in_sidebar)
-      ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, SIDEBAR_WIDTH - 81, 52, selection_y-8 + ozone->animations.scroll_y_sidebar, ozone->animations.cursor_alpha);
+      ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, ozone->ui_dimensions.sidebar_width - 81, ozone->ui_dimensions.sidebar_entry_height + 2, selection_y + 1 + ozone->animations.scroll_y_sidebar, ozone->animations.cursor_alpha);
 
    if (ozone->cursor_in_sidebar_old)
-      ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, SIDEBAR_WIDTH - 81, 52, selection_old_y-8 + ozone->animations.scroll_y_sidebar, 1-ozone->animations.cursor_alpha);
+      ozone_draw_cursor(ozone, video_info, ozone->sidebar_offset + 41, ozone->ui_dimensions.sidebar_width - 81, ozone->ui_dimensions.sidebar_entry_height + 2, selection_old_y + 1 + ozone->animations.scroll_y_sidebar, 1-ozone->animations.cursor_alpha);
 
    /* Menu tabs */
-   y = ENTRIES_START_Y - 10;
+   y = ozone->ui_dimensions.header_height + 1 + ozone->ui_dimensions.sidebar_padding_vertical;
    menu_display_blend_begin(video_info);
 
    for (i = 0; i < ozone->system_tab_end+1; i++)
@@ -174,15 +174,15 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info)
       unsigned     icon = ozone_system_tabs_icons[ozone->tabs[i]];
 
       /* Icon */
-      ozone_draw_icon(video_info, 40, 40, ozone->tab_textures[icon], ozone->sidebar_offset + 41 + 10, y - 5 + ozone->animations.scroll_y_sidebar, video_info->width, video_info->height, 0, 1, (selected ? ozone->theme->text_selected : ozone->theme->entries_icon));
+      ozone_draw_icon(video_info, 40, 40, ozone->tab_textures[icon], ozone->sidebar_offset + 41 + 10, y + ozone->ui_dimensions.sidebar_entry_height / 2 - 20 + ozone->animations.scroll_y_sidebar, video_info->width, video_info->height, 0, 1, (selected ? ozone->theme->text_selected : ozone->theme->entries_icon));
 
       value_idx = ozone_system_tabs_value[ozone->tabs[i]];
       title     = msg_hash_to_str(value_idx);
 
       /* Text */
-      ozone_draw_text(video_info, ozone, title, ozone->sidebar_offset + 115 - 10, y + FONT_SIZE_SIDEBAR + ozone->animations.scroll_y_sidebar, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.sidebar, (selected ? ozone->theme->text_selected_rgba : ozone->theme->text_rgba), true);
+      ozone_draw_text(video_info, ozone, title, ozone->sidebar_offset + 115 - 10, y + ozone->ui_dimensions.sidebar_entry_height / 2 + FONT_SIZE_SIDEBAR  * 3/8 + ozone->animations.scroll_y_sidebar, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.sidebar, (selected ? ozone->theme->text_selected_rgba : ozone->theme->text_rgba), true);
 
-      y += 65;
+      y += ozone->ui_dimensions.sidebar_entry_height + ozone->ui_dimensions.sidebar_entry_padding_vertical;
    }
 
    menu_display_blend_end(video_info);
@@ -190,9 +190,9 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info)
    /* Console tabs */
    if (horizontal_list_size > 0)
    {
-      menu_display_draw_quad(video_info, ozone->sidebar_offset + 41 + 10, y - 5 + ozone->animations.scroll_y_sidebar, SIDEBAR_WIDTH - 81, 1, video_info->width, video_info->height, ozone->theme->entries_border);
+      menu_display_draw_quad(video_info, ozone->sidebar_offset + 38, y + ozone->animations.scroll_y_sidebar, ozone->ui_dimensions.sidebar_width - 76, 1, video_info->width, video_info->height, ozone->theme->entries_border);
 
-      y += 30;
+      y += ozone->ui_dimensions.sidebar_entry_padding_vertical + 1;
 
       menu_display_blend_begin(video_info);
 
@@ -206,7 +206,7 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info)
             goto console_iterate;
 
          /* Icon */
-         ozone_draw_icon(video_info, 40, 40, node->icon, ozone->sidebar_offset + 41 + 10 - 3, y - 5 - 3 + ozone->animations.scroll_y_sidebar, video_info->width, video_info->height, 0, 1, (selected ? ozone->theme->text_selected : ozone->theme->entries_icon));
+         ozone_draw_icon(video_info, 40, 40, node->icon, ozone->sidebar_offset + 41 + 10 - 3, y + ozone->ui_dimensions.sidebar_entry_height / 2 - 20 + ozone->animations.scroll_y_sidebar, video_info->width, video_info->height, 0, 1, (selected ? ozone->theme->text_selected : ozone->theme->entries_icon));
 
          /* Text */
          ticker.idx        = ozone->frame_count / 20;
@@ -217,10 +217,11 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info)
 
          menu_animation_ticker(&ticker);
 
-         ozone_draw_text(video_info, ozone, console_title, ozone->sidebar_offset + 115 - 10, y + FONT_SIZE_SIDEBAR + ozone->animations.scroll_y_sidebar, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.sidebar, (selected ? ozone->theme->text_selected_rgba : ozone->theme->text_rgba), true);
+         ozone_draw_text(video_info, ozone, console_title, ozone->sidebar_offset + 115 - 10, y + ozone->ui_dimensions.sidebar_entry_height / 2 + FONT_SIZE_SIDEBAR * 3/8 + 
+            ozone->animations.scroll_y_sidebar, TEXT_ALIGN_LEFT, video_info->width, video_info->height, ozone->fonts.sidebar, (selected ? ozone->theme->text_selected_rgba : ozone->theme->text_rgba), true);
 
 console_iterate:
-         y += 65;
+         y += ozone->ui_dimensions.sidebar_entry_height + ozone->ui_dimensions.sidebar_entry_padding_vertical;
       }
 
       menu_display_blend_end(video_info);
@@ -279,15 +280,18 @@ void ozone_leave_sidebar(ozone_handle_t *ozone, uintptr_t tag)
    menu_animation_push(&entry);
 }
 
+// @TODO: fix
 unsigned ozone_get_selected_sidebar_y_position(ozone_handle_t *ozone)
 {
-   return ozone->categories_selection_ptr * 65 + (ozone->categories_selection_ptr > ozone->system_tab_end ? 30 : 0);
+   return ozone->categories_selection_ptr * ozone->ui_dimensions.sidebar_entry_height + (ozone->categories_selection_ptr - 1) * ozone->ui_dimensions.sidebar_entry_padding_vertical + ozone->ui_dimensions.sidebar_padding_vertical + 
+            (ozone->categories_selection_ptr > ozone->system_tab_end ? ozone->ui_dimensions.sidebar_entry_padding_vertical + 1 : 0);
 }
 
 unsigned ozone_get_sidebar_height(ozone_handle_t *ozone)
 {
-   return (ozone->system_tab_end + 1 + (ozone->horizontal_list ? ozone->horizontal_list->size : 0)) * 65
-      + (ozone->horizontal_list && ozone->horizontal_list->size > 0 ? 30 : 0);
+   int entries = (ozone->system_tab_end + 1 + (ozone->horizontal_list ? ozone->horizontal_list->size : 0));
+   return entries * ozone->ui_dimensions.sidebar_entry_height + (entries - 1) * ozone->ui_dimensions.sidebar_entry_padding_vertical + ozone->ui_dimensions.sidebar_padding_vertical +
+         (ozone->horizontal_list && ozone->horizontal_list->size > 0 ? ozone->ui_dimensions.sidebar_entry_padding_vertical + 1 : 0);
 }
 
 void ozone_sidebar_goto(ozone_handle_t *ozone, unsigned new_selection)
@@ -335,8 +339,8 @@ void ozone_sidebar_goto(ozone_handle_t *ozone, unsigned new_selection)
    /* Scroll animation */
    new_scroll                             = 0;
    selected_position_y                    = ozone_get_selected_sidebar_y_position(ozone);
-   current_selection_middle_onscreen      = ENTRIES_START_Y - 10 + ozone->animations.scroll_y_sidebar + selected_position_y + 65 / 2;
-   bottom_boundary                        = video_info_height - HEADER_HEIGHT - FOOTER_HEIGHT;
+   current_selection_middle_onscreen      = ozone->ui_dimensions.header_height + 1 + ozone->animations.scroll_y_sidebar + selected_position_y + ozone->ui_dimensions.sidebar_entry_height / 2;
+   bottom_boundary                        = video_info_height - (ozone->ui_dimensions.header_height + 1) - ozone->ui_dimensions.footer_height;
    entries_middle                         = video_info_height/2;
    entries_height                         = ozone_get_sidebar_height(ozone);
 
@@ -344,7 +348,7 @@ void ozone_sidebar_goto(ozone_handle_t *ozone, unsigned new_selection)
       new_scroll = ozone->animations.scroll_y_sidebar - (current_selection_middle_onscreen - entries_middle);
 
    if (new_scroll + entries_height < bottom_boundary)
-      new_scroll = -(30 + entries_height - bottom_boundary);
+      new_scroll = bottom_boundary - entries_height - ozone->ui_dimensions.sidebar_padding_vertical;
 
    if (new_scroll > 0)
       new_scroll = 0;