(XMB) Fix the sizes and layout when toggling fullscreen (Part 1)
This commit is contained in:
parent
7039142c9c
commit
b5082c038c
|
@ -1546,6 +1546,95 @@ static void xmb_init_horizontal_list(menu_handle_t *menu, xmb_handle_t *xmb)
|
||||||
menu_displaylist_push_list(&info, DISPLAYLIST_DATABASE_PLAYLISTS);
|
menu_displaylist_push_list(&info, DISPLAYLIST_DATABASE_PLAYLISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void xmb_font(menu_handle_t *menu)
|
||||||
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
char mediapath[PATH_MAX_LENGTH] = {0};
|
||||||
|
char themepath[PATH_MAX_LENGTH] = {0};
|
||||||
|
char fontpath[PATH_MAX_LENGTH] = {0};
|
||||||
|
|
||||||
|
fill_pathname_join(mediapath, settings->assets_directory, "xmb", sizeof(mediapath));
|
||||||
|
fill_pathname_join(themepath, mediapath, XMB_THEME, sizeof(themepath));
|
||||||
|
fill_pathname_join(fontpath, themepath, "font.ttf", sizeof(fontpath));
|
||||||
|
|
||||||
|
if (!menu_display_init_main_font(menu, fontpath, menu->display.font.size))
|
||||||
|
RARCH_WARN("Failed to load font.");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void xmb_layout(menu_handle_t *menu, xmb_handle_t *xmb)
|
||||||
|
{
|
||||||
|
menu_navigation_t *nav = menu_navigation_get_ptr();
|
||||||
|
menu_list_t *menu_list = menu_list_get_ptr();
|
||||||
|
unsigned width, height, i, current, end;
|
||||||
|
float scale_factor;
|
||||||
|
|
||||||
|
video_driver_get_size(&width, &height);
|
||||||
|
|
||||||
|
scale_factor = width / 1920.0;
|
||||||
|
|
||||||
|
xmb->boxart_size = 460.0 * scale_factor;
|
||||||
|
xmb->cursor.size = 48.0;
|
||||||
|
menu->display.font.size = 32.0 * scale_factor;
|
||||||
|
xmb->icon.spacing.horizontal = 200.0 * scale_factor;
|
||||||
|
xmb->icon.spacing.vertical = 64.0 * scale_factor;
|
||||||
|
xmb->margins.screen.left = 336.0 * scale_factor;
|
||||||
|
xmb->margins.screen.top = (256+32) * scale_factor;
|
||||||
|
xmb->margins.title.left = 60 * scale_factor;
|
||||||
|
xmb->margins.title.top = 60 * scale_factor + menu->display.font.size/3;
|
||||||
|
xmb->margins.title.bottom = 60 * scale_factor - menu->display.font.size/3;
|
||||||
|
xmb->margins.label.left = 85.0 * scale_factor;
|
||||||
|
xmb->margins.label.top = menu->display.font.size / 3.0;
|
||||||
|
xmb->margins.setting.left = 600.0 * scale_factor;
|
||||||
|
menu->display.header_height = 128.0 * scale_factor;
|
||||||
|
|
||||||
|
if (width >= 3840)
|
||||||
|
scale_factor = 2.0;
|
||||||
|
else if (width >= 2560)
|
||||||
|
scale_factor = 1.5;
|
||||||
|
else if (width >= 1920)
|
||||||
|
scale_factor = 1.0;
|
||||||
|
else if (width >= 1440)
|
||||||
|
scale_factor = 0.75;
|
||||||
|
else if (width >= 960)
|
||||||
|
scale_factor = 0.5;
|
||||||
|
else if (width >= 640)
|
||||||
|
scale_factor = 0.375;
|
||||||
|
else if (width >= 480)
|
||||||
|
scale_factor = 0.25;
|
||||||
|
else if (width >= 320)
|
||||||
|
scale_factor = 0.1875;
|
||||||
|
else if (width >= 240)
|
||||||
|
scale_factor = 0.125;
|
||||||
|
|
||||||
|
xmb->icon.size = 128.0 * scale_factor;
|
||||||
|
|
||||||
|
current = nav->selection_ptr;
|
||||||
|
end = menu_entries_get_end();
|
||||||
|
|
||||||
|
for (i = 0; i < end; i++)
|
||||||
|
{
|
||||||
|
float ia = xmb->item.passive.alpha;
|
||||||
|
float iz = xmb->item.passive.zoom;
|
||||||
|
xmb_node_t *node = (xmb_node_t*)menu_list_get_userdata_at_offset(
|
||||||
|
menu_list->selection_buf, i);
|
||||||
|
|
||||||
|
if (!node)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (i == current)
|
||||||
|
{
|
||||||
|
ia = xmb->item.active.alpha;
|
||||||
|
iz = xmb->item.active.zoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
node->alpha = ia;
|
||||||
|
node->label_alpha = ia;
|
||||||
|
node->zoom = iz;
|
||||||
|
node->y = xmb_item_y(xmb, i, current);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void *xmb_init(void)
|
static void *xmb_init(void)
|
||||||
{
|
{
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
|
@ -1621,47 +1710,8 @@ static void *xmb_init(void)
|
||||||
frame_buf->width = width;
|
frame_buf->width = width;
|
||||||
frame_buf->height = height;
|
frame_buf->height = height;
|
||||||
|
|
||||||
scale_factor = width / 1920.0;
|
|
||||||
|
|
||||||
strlcpy(xmb->icon.dir, "png", sizeof(xmb->icon.dir));
|
|
||||||
|
|
||||||
xmb->boxart_size = 460.0 * scale_factor;
|
|
||||||
xmb->cursor.size = 48.0;
|
|
||||||
menu->display.font.size = 32.0 * scale_factor;
|
|
||||||
xmb->icon.spacing.horizontal = 200.0 * scale_factor;
|
|
||||||
xmb->icon.spacing.vertical = 64.0 * scale_factor;
|
|
||||||
xmb->margins.screen.left = 336.0 * scale_factor;
|
|
||||||
xmb->margins.screen.top = (256+32) * scale_factor;
|
|
||||||
xmb->margins.title.left = 60 * scale_factor;
|
|
||||||
xmb->margins.title.top = 60 * scale_factor + menu->display.font.size/3;
|
|
||||||
xmb->margins.title.bottom = 60 * scale_factor - menu->display.font.size/3;
|
|
||||||
xmb->margins.label.left = 85.0 * scale_factor;
|
|
||||||
xmb->margins.label.top = menu->display.font.size / 3.0;
|
|
||||||
xmb->margins.setting.left = 600.0 * scale_factor;
|
|
||||||
menu->display.header_height = 128.0 * scale_factor;
|
|
||||||
|
|
||||||
if (width >= 3840)
|
|
||||||
scale_factor = 2.0;
|
|
||||||
else if (width >= 2560)
|
|
||||||
scale_factor = 1.5;
|
|
||||||
else if (width >= 1920)
|
|
||||||
scale_factor = 1.0;
|
|
||||||
else if (width >= 1440)
|
|
||||||
scale_factor = 0.75;
|
|
||||||
else if (width >= 960)
|
|
||||||
scale_factor = 0.5;
|
|
||||||
else if (width >= 640)
|
|
||||||
scale_factor = 0.375;
|
|
||||||
else if (width >= 480)
|
|
||||||
scale_factor = 0.25;
|
|
||||||
else if (width >= 320)
|
|
||||||
scale_factor = 0.1875;
|
|
||||||
else if (width >= 240)
|
|
||||||
scale_factor = 0.125;
|
|
||||||
|
|
||||||
xmb->icon.size = 128.0 * scale_factor;
|
|
||||||
|
|
||||||
xmb_init_horizontal_list(menu, xmb);
|
xmb_init_horizontal_list(menu, xmb);
|
||||||
|
xmb_font(menu);
|
||||||
|
|
||||||
return menu;
|
return menu;
|
||||||
|
|
||||||
|
@ -1758,12 +1808,43 @@ static bool xmb_load_image(void *data, menu_image_type_t type)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void xmb_toggle_horizontal_list(xmb_handle_t *xmb, menu_handle_t *menu)
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
size_t list_size = xmb_list_get_size(menu, MENU_LIST_HORIZONTAL);
|
||||||
|
|
||||||
|
for (i = 0; i <= list_size; i++)
|
||||||
|
{
|
||||||
|
xmb_node_t *node = &xmb->settings_node;
|
||||||
|
|
||||||
|
if (i > 0)
|
||||||
|
node = xmb_get_userdata_from_horizontal_list(xmb, i - 1);
|
||||||
|
|
||||||
|
if (!node)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
node->alpha = 0;
|
||||||
|
node->zoom = xmb->categories.passive.zoom;
|
||||||
|
|
||||||
|
if (i == xmb->categories.active.idx)
|
||||||
|
{
|
||||||
|
node->alpha = xmb->categories.active.alpha;
|
||||||
|
node->zoom = xmb->categories.active.zoom;
|
||||||
|
}
|
||||||
|
else if (xmb->depth <= 1)
|
||||||
|
node->alpha = xmb->categories.passive.alpha;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void xmb_context_reset_horizontal_list(xmb_handle_t *xmb,
|
static void xmb_context_reset_horizontal_list(xmb_handle_t *xmb,
|
||||||
menu_handle_t *menu, const char *themepath)
|
menu_handle_t *menu, const char *themepath)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
size_t list_size = xmb_list_get_size(menu, MENU_LIST_HORIZONTAL);
|
size_t list_size = xmb_list_get_size(menu, MENU_LIST_HORIZONTAL);
|
||||||
|
|
||||||
|
xmb->categories.x_pos = xmb->icon.spacing.horizontal *
|
||||||
|
-(float)xmb->categories.selection_ptr;
|
||||||
|
|
||||||
for (i = 0; i < list_size; i++)
|
for (i = 0; i < list_size; i++)
|
||||||
{
|
{
|
||||||
char iconpath[PATH_MAX_LENGTH] = {0};
|
char iconpath[PATH_MAX_LENGTH] = {0};
|
||||||
|
@ -1799,9 +1880,6 @@ static void xmb_context_reset_horizontal_list(xmb_handle_t *xmb,
|
||||||
fill_pathname_join(content_texturepath, iconpath, sysname, sizeof(content_texturepath));
|
fill_pathname_join(content_texturepath, iconpath, sysname, sizeof(content_texturepath));
|
||||||
strlcat(content_texturepath, "-content.png", sizeof(content_texturepath));
|
strlcat(content_texturepath, "-content.png", sizeof(content_texturepath));
|
||||||
|
|
||||||
node->alpha = 0;
|
|
||||||
node->zoom = xmb->categories.passive.zoom;
|
|
||||||
|
|
||||||
texture_image_load(&ti, texturepath);
|
texture_image_load(&ti, texturepath);
|
||||||
|
|
||||||
node->icon = video_texture_load(&ti,
|
node->icon = video_texture_load(&ti,
|
||||||
|
@ -1815,13 +1893,7 @@ static void xmb_context_reset_horizontal_list(xmb_handle_t *xmb,
|
||||||
|
|
||||||
texture_image_free(&ti);
|
texture_image_free(&ti);
|
||||||
|
|
||||||
if (i == xmb->categories.active.idx - 1)
|
xmb_toggle_horizontal_list(xmb, menu);
|
||||||
{
|
|
||||||
node->alpha = xmb->categories.active.alpha;
|
|
||||||
node->zoom = xmb->categories.active.zoom;
|
|
||||||
}
|
|
||||||
else if (xmb->depth <= 1)
|
|
||||||
node->alpha = xmb->categories.passive.alpha;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1949,7 +2021,6 @@ static void xmb_context_reset(void)
|
||||||
char mediapath[PATH_MAX_LENGTH] = {0};
|
char mediapath[PATH_MAX_LENGTH] = {0};
|
||||||
char themepath[PATH_MAX_LENGTH] = {0};
|
char themepath[PATH_MAX_LENGTH] = {0};
|
||||||
char iconpath[PATH_MAX_LENGTH] = {0};
|
char iconpath[PATH_MAX_LENGTH] = {0};
|
||||||
char fontpath[PATH_MAX_LENGTH] = {0};
|
|
||||||
gl_t *gl = NULL;
|
gl_t *gl = NULL;
|
||||||
xmb_handle_t *xmb = NULL;
|
xmb_handle_t *xmb = NULL;
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
|
@ -1966,20 +2037,19 @@ static void xmb_context_reset(void)
|
||||||
if (!xmb)
|
if (!xmb)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
strlcpy(xmb->icon.dir, "png", sizeof(xmb->icon.dir));
|
||||||
|
|
||||||
fill_pathname_join(mediapath, settings->assets_directory,
|
fill_pathname_join(mediapath, settings->assets_directory,
|
||||||
"xmb", sizeof(mediapath));
|
"xmb", sizeof(mediapath));
|
||||||
fill_pathname_join(themepath, mediapath, XMB_THEME, sizeof(themepath));
|
fill_pathname_join(themepath, mediapath, XMB_THEME, sizeof(themepath));
|
||||||
fill_pathname_join(iconpath, themepath, xmb->icon.dir, sizeof(iconpath));
|
fill_pathname_join(iconpath, themepath, xmb->icon.dir, sizeof(iconpath));
|
||||||
fill_pathname_slash(iconpath, sizeof(iconpath));
|
fill_pathname_slash(iconpath, sizeof(iconpath));
|
||||||
|
|
||||||
fill_pathname_join(fontpath, themepath, "font.ttf", sizeof(fontpath));
|
xmb_layout(menu, xmb);
|
||||||
|
|
||||||
if (!menu_display_init_main_font(menu, fontpath, menu->display.font.size))
|
|
||||||
RARCH_WARN("Failed to load font.");
|
|
||||||
|
|
||||||
xmb_context_reset_textures(xmb, iconpath);
|
xmb_context_reset_textures(xmb, iconpath);
|
||||||
xmb_context_reset_background(iconpath);
|
xmb_context_reset_background(iconpath);
|
||||||
xmb_context_reset_horizontal_list(xmb, menu, themepath);
|
xmb_context_reset_horizontal_list(xmb, menu, themepath);
|
||||||
|
xmb_font(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xmb_navigation_clear(bool pending_push)
|
static void xmb_navigation_clear(bool pending_push)
|
||||||
|
@ -2238,34 +2308,6 @@ static void xmb_context_destroy(void)
|
||||||
menu_display_free_main_font(menu);
|
menu_display_free_main_font(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xmb_toggle_horizontal_list(xmb_handle_t *xmb, menu_handle_t *menu)
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
size_t list_size = xmb_list_get_size(menu, MENU_LIST_HORIZONTAL);
|
|
||||||
|
|
||||||
for (i = 0; i <= list_size; i++)
|
|
||||||
{
|
|
||||||
xmb_node_t *node = &xmb->settings_node;
|
|
||||||
|
|
||||||
if (i > 0)
|
|
||||||
node = xmb_get_userdata_from_horizontal_list(xmb, i - 1);
|
|
||||||
|
|
||||||
if (!node)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
node->alpha = 0;
|
|
||||||
node->zoom = xmb->categories.passive.zoom;
|
|
||||||
|
|
||||||
if (i == xmb->categories.active.idx)
|
|
||||||
{
|
|
||||||
node->alpha = xmb->categories.active.alpha;
|
|
||||||
node->zoom = xmb->categories.active.zoom;
|
|
||||||
}
|
|
||||||
else if (xmb->depth <= 1)
|
|
||||||
node->alpha = xmb->categories.passive.alpha;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void xmb_toggle(bool menu_on)
|
static void xmb_toggle(bool menu_on)
|
||||||
{
|
{
|
||||||
xmb_handle_t *xmb = NULL;
|
xmb_handle_t *xmb = NULL;
|
||||||
|
|
Loading…
Reference in New Issue