mirror of
https://github.com/libretro/RetroArch
synced 2025-04-16 08:43:10 +00:00
XMB Left thumb dynamic positioning and scaling.
This commit is contained in:
parent
b4859cde59
commit
8859fa0213
@ -747,8 +747,8 @@ static void xmb_draw_thumbnail(
|
|||||||
coords.tex_coord = NULL;
|
coords.tex_coord = NULL;
|
||||||
coords.lut_tex_coord = NULL;
|
coords.lut_tex_coord = NULL;
|
||||||
|
|
||||||
draw.width = w * scale_mod[4];
|
draw.width = w;
|
||||||
draw.height = h * scale_mod[4];
|
draw.height = h;
|
||||||
draw.coords = &coords;
|
draw.coords = &coords;
|
||||||
draw.matrix_data = &mymat;
|
draw.matrix_data = &mymat;
|
||||||
draw.texture = texture;
|
draw.texture = texture;
|
||||||
@ -2587,11 +2587,7 @@ static int xmb_draw_item(
|
|||||||
(!string_is_equal
|
(!string_is_equal
|
||||||
(thumb_ident,
|
(thumb_ident,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF))
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF))
|
||||||
&& xmb->thumbnail) ||
|
&& xmb->thumbnail)
|
||||||
(!string_is_equal
|
|
||||||
(left_thumb_ident,
|
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF))
|
|
||||||
&& xmb->left_thumbnail)
|
|
||||||
)
|
)
|
||||||
ticker_limit = 40 * scale_mod[1];
|
ticker_limit = 40 * scale_mod[1];
|
||||||
else
|
else
|
||||||
@ -3119,7 +3115,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||||||
+ xmb->icon_spacing_horizontal +
|
+ xmb->icon_spacing_horizontal +
|
||||||
xmb->icon_spacing_horizontal * 4 - xmb->icon_size / 4,
|
xmb->icon_spacing_horizontal * 4 - xmb->icon_size / 4,
|
||||||
xmb->margins_screen_top + xmb->icon_size + xmb->savestate_thumbnail_height * scale_mod[4],
|
xmb->margins_screen_top + xmb->icon_size + xmb->savestate_thumbnail_height * scale_mod[4],
|
||||||
xmb->savestate_thumbnail_width, xmb->savestate_thumbnail_height,
|
xmb->savestate_thumbnail_width, xmb->savestate_thumbnail_height * scale_mod[4],
|
||||||
xmb->savestate_thumbnail);
|
xmb->savestate_thumbnail);
|
||||||
else if (xmb->thumbnail
|
else if (xmb->thumbnail
|
||||||
&& !string_is_equal(xmb_thumbnails_ident('R'),
|
&& !string_is_equal(xmb_thumbnails_ident('R'),
|
||||||
@ -3152,7 +3148,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||||||
xmb->margins_screen_left * scale_mod[5] + xmb->icon_spacing_horizontal +
|
xmb->margins_screen_left * scale_mod[5] + xmb->icon_spacing_horizontal +
|
||||||
xmb->icon_spacing_horizontal*4 - xmb->icon_size / 4,
|
xmb->icon_spacing_horizontal*4 - xmb->icon_size / 4,
|
||||||
xmb->margins_screen_top + xmb->icon_size + thumb_height * scale_mod[4],
|
xmb->margins_screen_top + xmb->icon_size + thumb_height * scale_mod[4],
|
||||||
thumb_width, thumb_height,
|
thumb_width * scale_mod[4], thumb_height * scale_mod[4],
|
||||||
xmb->thumbnail);
|
xmb->thumbnail);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3163,29 +3159,32 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||||||
&& !string_is_equal(xmb_thumbnails_ident('L'),
|
&& !string_is_equal(xmb_thumbnails_ident('L'),
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)))
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF)))
|
||||||
{
|
{
|
||||||
|
float scale_factor = (settings->uints.menu_xmb_scale_factor * width) / (1920.0 * 100);
|
||||||
|
|
||||||
/* Limit thumbnail height to screen height + margin. */
|
/* Limit left thumbnail height to screen height + margin. */
|
||||||
|
if (xmb->margins_screen_top + xmb->icon_size * (!(xmb->depth == 1)? 2.1 : 1) +
|
||||||
if( xmb->margins_screen_top + xmb->icon_size * 2.2 + xmb->left_thumbnail_height >=
|
xmb->left_thumbnail_height >= (float)(height - (96.0 * scale_factor)))
|
||||||
(float)(height * 0.9) )
|
|
||||||
{
|
{
|
||||||
left_thumb_width = (xmb->left_thumbnail_width / scale_mod[4]) *
|
left_thumb_width = xmb->left_thumbnail_width *
|
||||||
(((float)(height * 0.9) - xmb->margins_screen_top - xmb->icon_size * 2.2) /
|
(((float)(height - (96.0 * scale_factor)) - xmb->margins_screen_top -
|
||||||
(xmb->left_thumbnail_height * scale_mod[4]));
|
(xmb->icon_size * (!(xmb->depth == 1)? 2.1 : 1))) /
|
||||||
left_thumb_height = (xmb->left_thumbnail_height / scale_mod[4]) *
|
xmb->left_thumbnail_height);
|
||||||
(((float)(height * 0.9) - xmb->margins_screen_top - xmb->icon_size * 2.2) /
|
|
||||||
(xmb->left_thumbnail_height * scale_mod[4]));
|
left_thumb_height = xmb->left_thumbnail_height *
|
||||||
|
(((float)(height - (96.0 * scale_factor)) - xmb->margins_screen_top -
|
||||||
|
(xmb->icon_size * (!(xmb->depth == 1)? 2.1 : 1))) /
|
||||||
|
xmb->left_thumbnail_height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
left_thumb_width = xmb->left_thumbnail_width / scale_mod[4];
|
left_thumb_width = xmb->left_thumbnail_width;
|
||||||
left_thumb_height = xmb->left_thumbnail_height / scale_mod[4];
|
left_thumb_height = xmb->left_thumbnail_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
xmb_draw_thumbnail(video_info,
|
xmb_draw_thumbnail(video_info,
|
||||||
xmb, &coord_white[0], width, height,
|
xmb, &coord_white[0], width, height,
|
||||||
xmb->margins_title_left - 10,
|
20 * scale_factor + ((xmb->left_thumbnail_width - left_thumb_width) / 2),
|
||||||
xmb->margins_screen_top + xmb->icon_size * 2.2 + left_thumb_height * scale_mod[4],
|
xmb->margins_screen_top + xmb->icon_size * (!(xmb->depth == 1)? 2.1 : 1) + left_thumb_height,
|
||||||
left_thumb_width, left_thumb_height,
|
left_thumb_width, left_thumb_height,
|
||||||
xmb->left_thumbnail);
|
xmb->left_thumbnail);
|
||||||
}
|
}
|
||||||
@ -3740,7 +3739,7 @@ static void *xmb_init(void **userdata, bool video_is_threaded)
|
|||||||
if (!xmb->selection_buf_old)
|
if (!xmb->selection_buf_old)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
xmb->categories_active_idx = 0;
|
xmb->categories_active_idx = 0;
|
||||||
xmb->categories_active_idx_old = 0;
|
xmb->categories_active_idx_old = 0;
|
||||||
xmb->x = 0;
|
xmb->x = 0;
|
||||||
xmb->categories_x_pos = 0;
|
xmb->categories_x_pos = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user