diff --git a/configuration.c b/configuration.c index dc1a83b172..21ddf04a67 100644 --- a/configuration.c +++ b/configuration.c @@ -609,6 +609,7 @@ static void config_set_defaults(void) settings->menu.timedate_enable = true; settings->menu.core_enable = true; settings->menu.dynamic_wallpaper_enable = false; + settings->menu.wallpaper.opacity = 0.5f; settings->menu.thumbnails = menu_thumbnails_default; settings->menu.show_advanced_settings = show_advanced_settings; settings->menu.entry_normal_color = menu_entry_normal_color; @@ -1328,6 +1329,7 @@ static bool config_load_file(const char *path, bool set_defaults) "menu_core_enable"); CONFIG_GET_BOOL_BASE(conf, settings, menu.dynamic_wallpaper_enable, "menu_dynamic_wallpaper_enable"); + CONFIG_GET_FLOAT_BASE(conf, settings, menu.wallpaper.opacity, "menu_wallpaper_opacity"); CONFIG_GET_INT_BASE(conf, settings, menu.thumbnails, "menu_thumbnails"); CONFIG_GET_BOOL_BASE(conf, settings, menu.navigation.wraparound.enable, @@ -2707,6 +2709,8 @@ bool config_save_file(const char *path) #ifdef HAVE_MENU config_set_path(conf, "menu_wallpaper", settings->path.menu_wallpaper); + config_set_float(conf, "menu_wallpaper_opacity", + settings->menu.wallpaper.opacity); #endif config_set_string(conf, "video_filter", settings->path.softfilter_plugin); diff --git a/configuration.h b/configuration.h index bf1def2a36..602c1ca400 100644 --- a/configuration.h +++ b/configuration.h @@ -121,6 +121,11 @@ typedef struct settings unsigned thumbnails; bool throttle; + struct + { + float opacity; + } wallpaper; + struct { bool enable; diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index a35e7dbb51..64d5786775 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -2086,6 +2086,8 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) return "use_builtin_image_viewer"; case MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR: return "input_poll_type_behavior"; + case MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY: + return "menu_wallpaper_opacity"; default: break; } @@ -3534,6 +3536,8 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg) return "Title Screens"; case MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS: return "Boxarts"; + case MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY: + return "Wallpaper opacity"; default: #if 0 RARCH_LOG("Unimplemented: [%d]\n", msg); diff --git a/menu/menu_display.c b/menu/menu_display.c index c588d2e1f0..179fe3f9a3 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -507,6 +507,12 @@ void menu_display_draw_bg(menu_display_ctx_draw_t *draw) draw->coords = &coords; + if (!menu_display_libretro_running()) + { + settings_t *settings = config_get_ptr(); + menu_display_set_alpha(draw->color, settings->menu.wallpaper.opacity); + } + if (!draw->texture) draw->texture = menu_display_white_texture; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 3d4d0d5525..16b13b961f 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4378,6 +4378,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_DYNAMIC_WALLPAPER, PARSE_ONLY_BOOL, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY, + PARSE_ONLY_FLOAT, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_PAUSE_LIBRETRO, PARSE_ONLY_BOOL, false); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 6521adf6e9..688643e4f0 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6592,6 +6592,21 @@ static bool setting_append_list( menu_settings_list_current_add_values(list, list_info, "png"); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_WALLPAPER); + CONFIG_FLOAT( + list, list_info, + &settings->menu.wallpaper.opacity, + msg_hash_to_str(MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY), + 0.5f, + "%.3f %", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.010, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY); + CONFIG_BOOL( list, list_info, &settings->menu.dynamic_wallpaper_enable, diff --git a/msg_hash.h b/msg_hash.h index 5e675acfb2..58b8ca7341 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -284,6 +284,9 @@ enum msg_hash_enums MSG_EXTRACTING_FILE, MSG_NO_CONTENT_STARTING_DUMMY_CORE, + MENU_ENUM_LABEL_MENU_WALLPAPER_OPACITY, + MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER_OPACITY, + MENU_ENUM_LABEL_PLAYLIST_COLLECTION_ENTRY, MENU_ENUM_LABEL_CHEEVOS_UNLOCKED_ENTRY, MENU_ENUM_LABEL_CHEEVOS_LOCKED_ENTRY,