Add common Thumbnail Background option for all menu drivers

This commit is contained in:
sonninnos 2025-05-03 18:54:23 +03:00
parent 2a225a20dc
commit e3583cbcbb
12 changed files with 226 additions and 100 deletions

View File

@ -156,6 +156,7 @@
* > Helps to unify menu appearance when viewing * > Helps to unify menu appearance when viewing
* thumbnails of different sizes */ * thumbnails of different sizes */
#define DEFAULT_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE true #define DEFAULT_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE true
#define DEFAULT_MENU_THUMBNAIL_BACKGROUND_ENABLE false
#define DEFAULT_SCREEN_BRIGHTNESS 100 #define DEFAULT_SCREEN_BRIGHTNESS 100

View File

@ -2072,6 +2072,7 @@ static struct config_bool_setting *populate_settings_bool(
SETTING_BOOL("menu_navigation_wraparound_enable", &settings->bools.menu_navigation_wraparound_enable, true, true, false); SETTING_BOOL("menu_navigation_wraparound_enable", &settings->bools.menu_navigation_wraparound_enable, true, true, false);
SETTING_BOOL("menu_navigation_browser_filter_supported_extensions_enable", &settings->bools.menu_navigation_browser_filter_supported_extensions_enable, true, true, false); SETTING_BOOL("menu_navigation_browser_filter_supported_extensions_enable", &settings->bools.menu_navigation_browser_filter_supported_extensions_enable, true, true, false);
SETTING_BOOL("menu_show_advanced_settings", &settings->bools.menu_show_advanced_settings, true, DEFAULT_SHOW_ADVANCED_SETTINGS, false); SETTING_BOOL("menu_show_advanced_settings", &settings->bools.menu_show_advanced_settings, true, DEFAULT_SHOW_ADVANCED_SETTINGS, false);
SETTING_BOOL("menu_thumbnail_background_enable", &settings->bools.menu_thumbnail_background_enable, true, DEFAULT_MENU_THUMBNAIL_BACKGROUND_ENABLE, false);
#ifdef HAVE_MATERIALUI #ifdef HAVE_MATERIALUI
SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, DEFAULT_MATERIALUI_ICONS_ENABLE, false); SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, DEFAULT_MATERIALUI_ICONS_ENABLE, false);
SETTING_BOOL("materialui_switch_icons", &settings->bools.menu_materialui_switch_icons, true, DEFAULT_MATERIALUI_SWITCH_ICONS, false); SETTING_BOOL("materialui_switch_icons", &settings->bools.menu_materialui_switch_icons, true, DEFAULT_MATERIALUI_SWITCH_ICONS, false);

View File

@ -803,6 +803,7 @@ typedef struct settings
bool menu_materialui_auto_rotate_nav_bar; bool menu_materialui_auto_rotate_nav_bar;
bool menu_materialui_dual_thumbnail_list_view_enable; bool menu_materialui_dual_thumbnail_list_view_enable;
bool menu_materialui_thumbnail_background_enable; bool menu_materialui_thumbnail_background_enable;
bool menu_thumbnail_background_enable;
bool menu_rgui_background_filler_thickness_enable; bool menu_rgui_background_filler_thickness_enable;
bool menu_rgui_border_filler_thickness_enable; bool menu_rgui_border_filler_thickness_enable;
bool menu_rgui_border_filler_enable; bool menu_rgui_border_filler_enable;

View File

@ -5222,6 +5222,10 @@ MSG_HASH(
MENU_ENUM_LABEL_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE, MENU_ENUM_LABEL_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE,
"materialui_thumbnail_background_enable" "materialui_thumbnail_background_enable"
) )
MSG_HASH(
MENU_ENUM_LABEL_MENU_THUMBNAIL_BACKGROUND_ENABLE,
"menu_thumbnail_background_enable"
)
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_RENAME_ENTRY, MENU_ENUM_LABEL_RENAME_ENTRY,
"rename_entry" "rename_entry"

View File

@ -7198,6 +7198,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_UPSCALE_THRESHOLD, MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_UPSCALE_THRESHOLD,
"Automatically upscale thumbnail images with a width/height smaller than the specified value. Improves picture quality. Has a moderate performance impact." "Automatically upscale thumbnail images with a width/height smaller than the specified value. Improves picture quality. Has a moderate performance impact."
) )
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_THUMBNAIL_BACKGROUND_ENABLE,
"Thumbnail Backgrounds"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_BACKGROUND_ENABLE,
"Enables padding of unused space in thumbnail images with a solid background. This ensures a uniform display size for all images, improving menu appearance when viewing mixed content thumbnails with varying base dimensions."
)
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_TICKER_TYPE, MENU_ENUM_LABEL_VALUE_MENU_TICKER_TYPE,
"Ticker Text Animation" "Ticker Text Animation"
@ -12610,7 +12618,7 @@ MSG_HASH(
) )
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE, MENU_ENUM_LABEL_VALUE_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE,
"Draw Thumbnail Backgrounds" "Thumbnail Backgrounds"
) )
MSG_HASH( MSG_HASH(
MENU_ENUM_SUBLABEL_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE, MENU_ENUM_SUBLABEL_MATERIALUI_THUMBNAIL_BACKGROUND_ENABLE,

View File

@ -950,6 +950,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_truncate_playlist_name,
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_sort_after_truncate_playlist_name, MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_ozone_sort_after_truncate_playlist_name, MENU_ENUM_SUBLABEL_OZONE_SORT_AFTER_TRUNCATE_PLAYLIST_NAME)
#endif #endif
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_thumbnail_upscale_threshold, MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_UPSCALE_THRESHOLD) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_thumbnail_upscale_threshold, MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_UPSCALE_THRESHOLD)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_thumbnail_background_enable, MENU_ENUM_SUBLABEL_MENU_THUMBNAIL_BACKGROUND_ENABLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_enable, MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_enable, MENU_ENUM_SUBLABEL_TIMEDATE_ENABLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_style, MENU_ENUM_SUBLABEL_TIMEDATE_STYLE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_style, MENU_ENUM_SUBLABEL_TIMEDATE_STYLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_date_separator, MENU_ENUM_SUBLABEL_TIMEDATE_DATE_SEPARATOR) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_timedate_date_separator, MENU_ENUM_SUBLABEL_TIMEDATE_DATE_SEPARATOR)
@ -2577,6 +2578,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_materialui_thumbnail_background_enable); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_materialui_thumbnail_background_enable);
#endif #endif
break; break;
case MENU_ENUM_LABEL_MENU_THUMBNAIL_BACKGROUND_ENABLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_thumbnail_background_enable);
break;
case MENU_ENUM_LABEL_SCREEN_RESOLUTION: case MENU_ENUM_LABEL_SCREEN_RESOLUTION:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_screen_resolution); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_screen_resolution);
break; break;

View File

@ -6157,6 +6157,7 @@ static void ozone_draw_thumbnail_bar(
int bottom_row_y_position = 0; int bottom_row_y_position = 0;
bool show_right_thumbnail = false; bool show_right_thumbnail = false;
bool show_left_thumbnail = false; bool show_left_thumbnail = false;
bool thumbnail_background = settings->bools.menu_thumbnail_background_enable;
unsigned sidebar_height = video_height unsigned sidebar_height = video_height
- ozone->dimensions.header_height - ozone->dimensions.header_height
- ozone->dimensions.sidebar_gradient_height * 2 - ozone->dimensions.sidebar_gradient_height * 2
@ -6264,6 +6265,7 @@ static void ozone_draw_thumbnail_bar(
+ (int)(1.5f * (float)ozone->dimensions.sidebar_entry_icon_padding); + (int)(1.5f * (float)ozone->dimensions.sidebar_entry_icon_padding);
right_thumbnail_alignment = GFX_THUMBNAIL_ALIGN_CENTRE; right_thumbnail_alignment = GFX_THUMBNAIL_ALIGN_CENTRE;
show_left_thumbnail = false;
if (thumbnail_height > thumbnail_width) if (thumbnail_height > thumbnail_width)
{ {
@ -6326,6 +6328,32 @@ static void ozone_draw_thumbnail_bar(
/* > If we have a right thumbnail, show it */ /* > If we have a right thumbnail, show it */
if (show_right_thumbnail) if (show_right_thumbnail)
{ {
if (thumbnail_background)
{
float background_color[16] = {
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
};
right_thumbnail_alignment = GFX_THUMBNAIL_ALIGN_CENTRE;
gfx_display_draw_quad(
p_disp,
userdata,
video_width,
video_height,
thumbnail_x_position,
right_thumbnail_y_position,
thumbnail_width,
thumbnail_height,
video_width,
video_height,
background_color,
NULL);
}
gfx_thumbnail_draw( gfx_thumbnail_draw(
userdata, userdata,
video_width, video_width,
@ -6410,6 +6438,32 @@ static void ozone_draw_thumbnail_bar(
left_thumbnail_alpha = 1.0f; left_thumbnail_alpha = 1.0f;
} }
if (thumbnail_background)
{
float background_color[16] = {
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
};
left_thumbnail_alignment = GFX_THUMBNAIL_ALIGN_CENTRE;
gfx_display_draw_quad(
p_disp,
userdata,
video_width,
video_height,
thumbnail_x_position,
left_thumbnail_y_position,
thumbnail_width,
thumbnail_height,
video_width,
video_height,
background_color,
NULL);
}
/* Note: This is a NOOP when alpha is zero /* Note: This is a NOOP when alpha is zero
* (i.e. no performance impact when content * (i.e. no performance impact when content
* metadata override is fully active) */ * metadata override is fully active) */

View File

@ -2827,7 +2827,8 @@ static void rgui_render_mini_thumbnail(
unsigned fb_width, unsigned fb_width,
unsigned fb_height, unsigned fb_height,
size_t fb_pitch, size_t fb_pitch,
bool menu_rgui_swap_thumbnails) bool swap_thumbnails,
bool thumbnail_background)
{ {
if (thumbnail->is_valid && frame_buf_data && thumbnail->data) if (thumbnail->is_valid && frame_buf_data && thumbnail->data)
{ {
@ -2848,23 +2849,24 @@ static void rgui_render_mini_thumbnail(
fb_x_offset = (rgui->term_layout.start_x + term_width) - fb_x_offset = (rgui->term_layout.start_x + term_width) -
(thumbnail->width + ((thumbnail_fullwidth - thumbnail->width) >> 1)); (thumbnail->width + ((thumbnail_fullwidth - thumbnail->width) >> 1));
if ( ((thumbnail_id == GFX_THUMBNAIL_RIGHT) && !menu_rgui_swap_thumbnails) if ( ((thumbnail_id == GFX_THUMBNAIL_RIGHT) && !swap_thumbnails)
|| ((thumbnail_id == GFX_THUMBNAIL_LEFT) && menu_rgui_swap_thumbnails)) || ((thumbnail_id == GFX_THUMBNAIL_LEFT) && swap_thumbnails))
fb_y_offset = rgui->term_layout.start_y + ((thumbnail->max_height - thumbnail->height) >> 1); fb_y_offset = rgui->term_layout.start_y + ((thumbnail->max_height - thumbnail->height) >> 1);
else else
fb_y_offset = (rgui->term_layout.start_y + term_height) - fb_y_offset = (rgui->term_layout.start_y + term_height) -
(thumbnail->height + ((thumbnail->max_height - thumbnail->height) >> 1)); (thumbnail->height + ((thumbnail->max_height - thumbnail->height) >> 1));
/* Draw background */ /* Draw background */
rgui_fill_rect(frame_buf_data, fb_width, fb_height, if (thumbnail_background)
rgui->term_layout.start_x + term_width - thumbnail_fullwidth, rgui_fill_rect(frame_buf_data, fb_width, fb_height,
( ((thumbnail_id == GFX_THUMBNAIL_RIGHT) && !menu_rgui_swap_thumbnails) rgui->term_layout.start_x + term_width - thumbnail_fullwidth,
|| ((thumbnail_id == GFX_THUMBNAIL_LEFT) && menu_rgui_swap_thumbnails)) ( ((thumbnail_id == GFX_THUMBNAIL_RIGHT) && !swap_thumbnails)
? fb_y_offset : fb_y_offset - ((thumbnail->max_height - thumbnail->height) >> 1), || ((thumbnail_id == GFX_THUMBNAIL_LEFT) && swap_thumbnails))
thumbnail_fullwidth, thumbnail->max_height, ? fb_y_offset : fb_y_offset - ((thumbnail->max_height - thumbnail->height) >> 1),
rgui->colors.shadow_color, thumbnail_fullwidth, thumbnail->max_height,
rgui->colors.shadow_color, rgui->colors.shadow_color,
false); rgui->colors.shadow_color,
false);
/* Copy thumbnail to framebuffer */ /* Copy thumbnail to framebuffer */
for (y = 0; y < thumbnail->height; y++) for (y = 0; y < thumbnail->height; y++)
@ -5018,6 +5020,7 @@ static void rgui_render(void *data, unsigned width, unsigned height,
bool rgui_inline_thumbnails = settings->bools.menu_rgui_inline_thumbnails || (rgui->flags & RGUI_FLAG_IS_QUICK_MENU); bool rgui_inline_thumbnails = settings->bools.menu_rgui_inline_thumbnails || (rgui->flags & RGUI_FLAG_IS_QUICK_MENU);
bool menu_battery_level_enable = settings->bools.menu_battery_level_enable; bool menu_battery_level_enable = settings->bools.menu_battery_level_enable;
bool use_smooth_ticker = settings->bools.menu_ticker_smooth; bool use_smooth_ticker = settings->bools.menu_ticker_smooth;
bool thumbnail_background = settings->bools.menu_thumbnail_background_enable;
bool rgui_swap_thumbnails = settings->bools.menu_rgui_swap_thumbnails; bool rgui_swap_thumbnails = settings->bools.menu_rgui_swap_thumbnails;
bool rgui_full_width_layout = settings->bools.menu_rgui_full_width_layout; bool rgui_full_width_layout = settings->bools.menu_rgui_full_width_layout;
bool rgui_switch_icons = settings->bools.menu_rgui_switch_icons; bool rgui_switch_icons = settings->bools.menu_rgui_switch_icons;
@ -5717,7 +5720,7 @@ static void rgui_render(void *data, unsigned width, unsigned height,
rgui->frame_buf.data, rgui->frame_buf.data,
(rgui_swap_thumbnails) ? GFX_THUMBNAIL_RIGHT : GFX_THUMBNAIL_LEFT, (rgui_swap_thumbnails) ? GFX_THUMBNAIL_RIGHT : GFX_THUMBNAIL_LEFT,
fb_width, fb_height, fb_pitch, fb_width, fb_height, fb_pitch,
rgui_swap_thumbnails); rgui_swap_thumbnails, thumbnail_background);
} }
else if (show_mini_thumbnails) else if (show_mini_thumbnails)
{ {
@ -5728,13 +5731,13 @@ static void rgui_render(void *data, unsigned width, unsigned height,
rgui->frame_buf.data, rgui->frame_buf.data,
GFX_THUMBNAIL_RIGHT, GFX_THUMBNAIL_RIGHT,
fb_width, fb_height, fb_pitch, fb_width, fb_height, fb_pitch,
rgui_swap_thumbnails); rgui_swap_thumbnails, thumbnail_background);
if (show_left_thumbnail && thumbnail2) if (show_left_thumbnail && thumbnail2)
rgui_render_mini_thumbnail(rgui, thumbnail2, rgui_render_mini_thumbnail(rgui, thumbnail2,
rgui->frame_buf.data, rgui->frame_buf.data,
GFX_THUMBNAIL_LEFT, GFX_THUMBNAIL_LEFT,
fb_width, fb_height, fb_pitch, fb_width, fb_height, fb_pitch,
rgui_swap_thumbnails); rgui_swap_thumbnails, thumbnail_background);
} }
/* Print menu sublabel/core name (if required) */ /* Print menu sublabel/core name (if required) */

View File

@ -7967,13 +7967,19 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
} }
else if (xmb->fullscreen_thumbnails_available && !xmb->show_fullscreen_thumbnails) else if (xmb->fullscreen_thumbnails_available && !xmb->show_fullscreen_thumbnails)
{ {
float background_color[16] = {
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
};
bool thumbnail_background = settings->bools.menu_thumbnail_background_enable;
bool show_right_thumbnail = bool show_right_thumbnail =
(gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)) (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
&& ( (xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE) && ( (xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|| ( xmb->thumbnails.right.status < GFX_THUMBNAIL_STATUS_AVAILABLE || ( xmb->thumbnails.right.status < GFX_THUMBNAIL_STATUS_AVAILABLE
&& xmb->thumbnails_right_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE && xmb->thumbnails_right_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE
&& xmb->thumbnails_right_status_prev != GFX_THUMBNAIL_STATUS_UNKNOWN)); && xmb->thumbnails_right_status_prev != GFX_THUMBNAIL_STATUS_UNKNOWN));
bool show_left_thumbnail = bool show_left_thumbnail =
(gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)) (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
&& ( (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE) && ( (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
@ -8005,41 +8011,37 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
float right_thumb_y = thumb_y_base + thumb_y_offset; float right_thumb_y = thumb_y_base + thumb_y_offset;
float left_thumb_y = thumb_y_base + thumb_height + (xmb->icon_size / 8) + thumb_y_offset; float left_thumb_y = thumb_y_base + thumb_height + (xmb->icon_size / 8) + thumb_y_offset;
float background_color[16] = {
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
};
/* Darken background */ /* Darken background */
gfx_display_draw_quad( if (thumbnail_background)
p_disp, {
userdata, gfx_display_draw_quad(
video_width, p_disp,
video_height, userdata,
thumb_x, video_width,
right_thumb_y, video_height,
scaled_thumb_width, thumb_x,
scaled_thumb_height, right_thumb_y,
video_width, scaled_thumb_width,
video_height, scaled_thumb_height,
background_color, video_width,
NULL); video_height,
background_color,
NULL);
gfx_display_draw_quad( gfx_display_draw_quad(
p_disp, p_disp,
userdata, userdata,
video_width, video_width,
video_height, video_height,
thumb_x, thumb_x,
left_thumb_y, left_thumb_y,
scaled_thumb_width, scaled_thumb_width,
scaled_thumb_height, scaled_thumb_height,
video_width, video_width,
video_height, video_height,
background_color, background_color,
NULL); NULL);
}
gfx_thumbnail_draw( gfx_thumbnail_draw(
userdata, userdata,
@ -8076,17 +8078,31 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
+ ((thumb_width - scaled_thumb_width) / 2.0f); + ((thumb_width - scaled_thumb_width) / 2.0f);
float thumb_y = xmb->margins_screen_top + (xmb->icon_size / 1.5f); float thumb_y = xmb->margins_screen_top + (xmb->icon_size / 1.5f);
if (thumbnail_background)
gfx_display_draw_quad(
p_disp,
userdata,
video_width,
video_height,
thumb_x,
thumb_y,
scaled_thumb_width,
scaled_thumb_height,
video_width,
video_height,
background_color,
NULL);
gfx_thumbnail_draw( gfx_thumbnail_draw(
userdata, userdata,
video_width, video_width,
video_height, video_height,
show_right_thumbnail (show_right_thumbnail) ? &xmb->thumbnails.right : &xmb->thumbnails.left,
? &xmb->thumbnails.right : &xmb->thumbnails.left,
thumb_x, thumb_x,
thumb_y, thumb_y,
scaled_thumb_width > 0.0f ? (unsigned)scaled_thumb_width : 0, (scaled_thumb_width > 0.0f) ? (unsigned)scaled_thumb_width : 0,
scaled_thumb_height > 0.0f ? (unsigned)scaled_thumb_height : 0, (scaled_thumb_height > 0.0f) ? (unsigned)scaled_thumb_height : 0,
GFX_THUMBNAIL_ALIGN_TOP, (thumbnail_background) ? GFX_THUMBNAIL_ALIGN_CENTRE : GFX_THUMBNAIL_ALIGN_TOP,
1.0f, 1.0f, &thumbnail_shadow); 1.0f, 1.0f, &thumbnail_shadow);
} }
} }
@ -8103,6 +8119,21 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
+ ((thumb_width - scaled_thumb_width) / 2.0f); + ((thumb_width - scaled_thumb_width) / 2.0f);
float thumb_y = xmb->margins_screen_top + (xmb->icon_size / 1.5f); float thumb_y = xmb->margins_screen_top + (xmb->icon_size / 1.5f);
if (thumbnail_background)
gfx_display_draw_quad(
p_disp,
userdata,
video_width,
video_height,
thumb_x,
thumb_y,
scaled_thumb_width,
scaled_thumb_height,
video_width,
video_height,
background_color,
NULL);
gfx_thumbnail_draw( gfx_thumbnail_draw(
userdata, userdata,
video_width, video_width,
@ -8112,7 +8143,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
thumb_y, thumb_y,
(scaled_thumb_width > 0.0f) ? (unsigned)scaled_thumb_width : 0, (scaled_thumb_width > 0.0f) ? (unsigned)scaled_thumb_width : 0,
(scaled_thumb_height > 0.0f) ? (unsigned)scaled_thumb_height : 0, (scaled_thumb_height > 0.0f) ? (unsigned)scaled_thumb_height : 0,
GFX_THUMBNAIL_ALIGN_TOP, (thumbnail_background) ? GFX_THUMBNAIL_ALIGN_CENTRE : GFX_THUMBNAIL_ALIGN_TOP,
1.0f, 1.0f, &thumbnail_shadow); 1.0f, 1.0f, &thumbnail_shadow);
} }
@ -8129,6 +8160,21 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
+ ((thumb_width - scaled_thumb_width) / 2.0f); + ((thumb_width - scaled_thumb_width) / 2.0f);
float thumb_y = xmb->margins_screen_top + xmb->icon_size + y_offset; float thumb_y = xmb->margins_screen_top + xmb->icon_size + y_offset;
if (thumbnail_background)
gfx_display_draw_quad(
p_disp,
userdata,
video_width,
video_height,
thumb_x,
thumb_y,
scaled_thumb_width,
scaled_thumb_height,
video_width,
video_height,
background_color,
NULL);
gfx_thumbnail_draw( gfx_thumbnail_draw(
userdata, userdata,
video_width, video_width,
@ -8136,9 +8182,9 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
&xmb->thumbnails.left, &xmb->thumbnails.left,
thumb_x, thumb_x,
thumb_y, thumb_y,
scaled_thumb_width > 0.0f ? (unsigned)scaled_thumb_width : 0, (scaled_thumb_width > 0.0f) ? (unsigned)scaled_thumb_width : 0,
scaled_thumb_height > 0.0f ? (unsigned)scaled_thumb_height : 0, (scaled_thumb_height > 0.0f) ? (unsigned)scaled_thumb_height : 0,
GFX_THUMBNAIL_ALIGN_TOP, (thumbnail_background) ? GFX_THUMBNAIL_ALIGN_CENTRE : GFX_THUMBNAIL_ALIGN_TOP,
1.0f, 1.0f, &thumbnail_shadow); 1.0f, 1.0f, &thumbnail_shadow);
} }
} }
@ -8162,17 +8208,34 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
/* Very small thumbnails look ridiculous /* Very small thumbnails look ridiculous
* > Impose a minimum size limit */ * > Impose a minimum size limit */
if (thumb_height > xmb->icon_size) if (thumb_height > xmb->icon_size)
{
if (thumbnail_background)
gfx_display_draw_quad(
p_disp,
userdata,
video_width,
video_height,
thumb_x,
thumb_y,
scaled_thumb_width,
scaled_thumb_height,
video_width,
video_height,
background_color,
NULL);
gfx_thumbnail_draw( gfx_thumbnail_draw(
userdata, userdata,
video_width, video_width,
video_height, video_height,
show_left_thumbnail ? &xmb->thumbnails.left : &xmb->thumbnails.right, (show_left_thumbnail) ? &xmb->thumbnails.left : &xmb->thumbnails.right,
thumb_x, thumb_x,
thumb_y, thumb_y,
scaled_thumb_width > 0.0f ? (unsigned)scaled_thumb_width : 0, (scaled_thumb_width > 0.0f) ? (unsigned)scaled_thumb_width : 0,
scaled_thumb_height > 0.0f ? (unsigned)scaled_thumb_height : 0, (scaled_thumb_height > 0.0f) ? (unsigned)scaled_thumb_height : 0,
GFX_THUMBNAIL_ALIGN_TOP, (thumbnail_background) ? GFX_THUMBNAIL_ALIGN_CENTRE : GFX_THUMBNAIL_ALIGN_TOP,
1.0f, 1.0f, &thumbnail_shadow); 1.0f, 1.0f, &thumbnail_shadow);
}
} }
} }

View File

@ -11641,6 +11641,7 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_MENU_RGUI_SWAP_THUMBNAILS, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_MENU_RGUI_SWAP_THUMBNAILS, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_MENU_RGUI_THUMBNAIL_DOWNSCALER, PARSE_ONLY_UINT, true}, {MENU_ENUM_LABEL_MENU_RGUI_THUMBNAIL_DOWNSCALER, PARSE_ONLY_UINT, true},
{MENU_ENUM_LABEL_MENU_RGUI_THUMBNAIL_DELAY, PARSE_ONLY_UINT, true}, {MENU_ENUM_LABEL_MENU_RGUI_THUMBNAIL_DELAY, PARSE_ONLY_UINT, true},
{MENU_ENUM_LABEL_MENU_THUMBNAIL_BACKGROUND_ENABLE, PARSE_ONLY_BOOL, true},
{MENU_ENUM_LABEL_XMB_FONT, PARSE_ONLY_PATH, true}, {MENU_ENUM_LABEL_XMB_FONT, PARSE_ONLY_PATH, true},
{MENU_ENUM_LABEL_MENU_FONT_COLOR_RED, PARSE_ONLY_UINT, true}, {MENU_ENUM_LABEL_MENU_FONT_COLOR_RED, PARSE_ONLY_UINT, true},
{MENU_ENUM_LABEL_MENU_FONT_COLOR_GREEN, PARSE_ONLY_UINT, true}, {MENU_ENUM_LABEL_MENU_FONT_COLOR_GREEN, PARSE_ONLY_UINT, true},

View File

@ -19670,41 +19670,6 @@ static bool setting_append_list(
general_write_handler, general_write_handler,
general_read_handler, general_read_handler,
SD_FLAG_NONE); SD_FLAG_NONE);
/* TODO: These should be removed entirely, but just
* comment out for now in case users complain...
CONFIG_FLOAT(
list, list_info,
&settings->floats.menu_header_opacity,
MENU_ENUM_LABEL_MATERIALUI_MENU_HEADER_OPACITY,
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_HEADER_OPACITY,
DEFAULT_MENU_HEADER_OPACITY,
"%.3f",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.010, true, true);
CONFIG_FLOAT(
list, list_info,
&settings->floats.menu_footer_opacity,
MENU_ENUM_LABEL_MATERIALUI_MENU_FOOTER_OPACITY,
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_FOOTER_OPACITY,
DEFAULT_MENU_FOOTER_OPACITY,
"%.3f",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.010, true, true);
(*list)[list_info->index - 1].ui_type
= ST_UI_TYPE_FLOAT_SLIDER_AND_SPINBOX;
*/
} }
#endif #endif
@ -19823,6 +19788,26 @@ static bool setting_append_list(
SD_FLAG_NONE); SD_FLAG_NONE);
} }
if ( string_is_equal(settings->arrays.menu_driver, "xmb")
|| string_is_equal(settings->arrays.menu_driver, "ozone")
|| string_is_equal(settings->arrays.menu_driver, "rgui"))
{
CONFIG_BOOL(
list, list_info,
&settings->bools.menu_thumbnail_background_enable,
MENU_ENUM_LABEL_MENU_THUMBNAIL_BACKGROUND_ENABLE,
MENU_ENUM_LABEL_VALUE_MENU_THUMBNAIL_BACKGROUND_ENABLE,
DEFAULT_MENU_THUMBNAIL_BACKGROUND_ENABLE,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
}
if ( string_is_equal(settings->arrays.menu_driver, "xmb") if ( string_is_equal(settings->arrays.menu_driver, "xmb")
|| string_is_equal(settings->arrays.menu_driver, "ozone") || string_is_equal(settings->arrays.menu_driver, "ozone")
|| string_is_equal(settings->arrays.menu_driver, "rgui") || string_is_equal(settings->arrays.menu_driver, "rgui")

View File

@ -781,8 +781,8 @@ enum msg_hash_enums
MENU_LABEL(VIDEO_SHADERS_ENABLE), MENU_LABEL(VIDEO_SHADERS_ENABLE),
MENU_LABEL(MATERIALUI_MENU_HEADER_OPACITY), MENU_LABEL(MATERIALUI_MENU_HEADER_OPACITY), /* Deprecated */
MENU_LABEL(MATERIALUI_MENU_FOOTER_OPACITY), MENU_LABEL(MATERIALUI_MENU_FOOTER_OPACITY), /* Deprecated */
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE, MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE,
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY, MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_BLUE_GREY,
MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED, MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME_RED,
@ -1658,6 +1658,7 @@ enum msg_hash_enums
MENU_LABEL(MENU_XMB_TITLE_MARGIN), MENU_LABEL(MENU_XMB_TITLE_MARGIN),
MENU_LABEL(MENU_XMB_TITLE_MARGIN_HORIZONTAL_OFFSET), MENU_LABEL(MENU_XMB_TITLE_MARGIN_HORIZONTAL_OFFSET),
MENU_LABEL(MENU_THUMBNAIL_UPSCALE_THRESHOLD), MENU_LABEL(MENU_THUMBNAIL_UPSCALE_THRESHOLD),
MENU_LABEL(MENU_THUMBNAIL_BACKGROUND_ENABLE),
MENU_LABEL(MENU_RGUI_INLINE_THUMBNAILS), MENU_LABEL(MENU_RGUI_INLINE_THUMBNAILS),
MENU_LABEL(MENU_RGUI_SWAP_THUMBNAILS), MENU_LABEL(MENU_RGUI_SWAP_THUMBNAILS),
MENU_LABEL(MENU_RGUI_THUMBNAIL_DOWNSCALER), MENU_LABEL(MENU_RGUI_THUMBNAIL_DOWNSCALER),