diff --git a/config.def.h b/config.def.h index 5adb889f2d..ab489b6631 100644 --- a/config.def.h +++ b/config.def.h @@ -508,6 +508,9 @@ static const bool overlay_hide_in_menu = true; #ifdef HAVE_MENU static bool default_block_config_read = true; +static unsigned xmb_scale_factor = 100; +static unsigned xmb_alpha_factor = 75; + static bool show_advanced_settings = true; static const uint32_t menu_entry_normal_color = 0xffffffff; static const uint32_t menu_entry_hover_color = 0xff64ff64; diff --git a/configuration.c b/configuration.c index a9f418c654..f5088e3e16 100644 --- a/configuration.c +++ b/configuration.c @@ -475,6 +475,8 @@ static void config_set_defaults(void) if (def_menu) strlcpy(settings->menu.driver, def_menu, sizeof(settings->menu.driver)); + settings->menu.xmb_scale_factor = xmb_scale_factor; + settings->menu.xmb_alpha_factor = xmb_alpha_factor; #endif settings->history_list_enable = def_history_list_enable; @@ -1513,6 +1515,8 @@ static bool config_load_file(const char *path, bool set_defaults) config_get_array(conf, "location_driver", settings->location.driver, sizeof(settings->location.driver)); #ifdef HAVE_MENU config_get_array(conf, "menu_driver", settings->menu.driver, sizeof(settings->menu.driver)); + CONFIG_GET_INT_BASE(conf, settings, menu.xmb_scale_factor, "xmb_scale_factor"); + CONFIG_GET_INT_BASE(conf, settings, menu.xmb_alpha_factor, "xmb_alpha_factor"); #endif config_get_array(conf, "video_context_driver", settings->video.context_driver, sizeof(settings->video.context_driver)); config_get_array(conf, "audio_driver", settings->audio.driver, sizeof(settings->audio.driver)); @@ -2724,6 +2728,8 @@ bool config_save_file(const char *path) *settings->playlist_directory ? settings->playlist_directory : "default"); #ifdef HAVE_MENU + config_set_int(conf, "xmb_scale_factor", settings->menu.xmb_scale_factor); + config_set_int(conf, "xmb_alpha_factor", settings->menu.xmb_alpha_factor); config_set_path(conf, "rgui_browser_directory", *settings->menu_content_directory ? settings->menu_content_directory : "default"); diff --git a/configuration.h b/configuration.h index 21b2fde2b7..73149cea3f 100644 --- a/configuration.h +++ b/configuration.h @@ -164,6 +164,9 @@ typedef struct settings unsigned entry_normal_color; unsigned entry_hover_color; unsigned title_color; + unsigned xmb_scale_factor; + unsigned xmb_alpha_factor; + } menu; #endif diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 692d6d986a..b02ad12a56 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1727,8 +1727,9 @@ static void xmb_frame(void *data) } /* set alpha components of colors */ - coord_color[3] = coord_color[7] = coord_color[11] = coord_color[15] = - (0.75f > xmb->alpha) ? xmb->alpha : 0.75f; + coord_color[3] = coord_color[7] = coord_color[11] = coord_color[15] = + ((float)settings->menu.xmb_alpha_factor/100 > xmb->alpha) ? + xmb->alpha : (float)settings->menu.xmb_alpha_factor/100; coord_color2[3] = coord_color2[7] = coord_color2[11] = coord_color2[15] = xmb->alpha; @@ -1890,13 +1891,14 @@ static void xmb_layout(xmb_handle_t *xmb) float scale_factor; unsigned width, height, i, current, end, new_header_height; file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); + settings_t *settings = config_get_ptr(); if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection)) return; video_driver_get_size(&width, &height); - scale_factor = width / 1920.0; + scale_factor = (settings->menu.xmb_scale_factor * width) / (1920.0 * 100); new_font_size = 32.0 * scale_factor; new_header_height = 128.0 * scale_factor; diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index f99800eac0..0c61e1eeb5 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -284,6 +284,10 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "dpi_override_enable"; case MENU_LABEL_DPI_OVERRIDE_VALUE: return "dpi_override_value"; + case MENU_LABEL_XMB_SCALE_FACTOR: + return "xmb_scale_factor"; + case MENU_LABEL_XMB_ALPHA_FACTOR: + return "xmb_alpha_factor"; case MENU_LABEL_SUSPEND_SCREENSAVER_ENABLE: return "suspend_screensaver_enable"; case MENU_LABEL_VIDEO_DISABLE_COMPOSITION: @@ -1014,6 +1018,10 @@ const char *menu_hash_to_str_us(uint32_t hash) return "DPI Override Enable"; case MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE: return "DPI Override"; + case MENU_LABEL_VALUE_XMB_SCALE_FACTOR: + return "XMB Scale Factor"; + case MENU_LABEL_VALUE_XMB_ALPHA_FACTOR: + return "XMB Alpha Factor"; case MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE: return "Suspend Screensaver"; case MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION: diff --git a/menu/menu_hash.h b/menu/menu_hash.h index a449c21b35..0feaff3155 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -373,6 +373,10 @@ extern "C" { #define MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE 0xd535f449U #define MENU_LABEL_DPI_OVERRIDE_VALUE 0x543a3efdU #define MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE 0x1462aba2U +#define MENU_LABEL_XMB_SCALE_FACTOR 0x0177E8DF1 +#define MENU_LABEL_VALUE_XMB_SCALE_FACTOR 0x0DCDBDB13 +#define MENU_LABEL_XMB_ALPHA_FACTOR 0x01049C5CF +#define MENU_LABEL_VALUE_XMB_ALPHA_FACTOR 0x0D5A712F1 #define MENU_LABEL_VOLUME_UP 0xa66e9681U #define MENU_LABEL_VOLUME_DOWN 0xfc64f3d4U #define MENU_LABEL_LOG_VERBOSITY 0x6648c96dU diff --git a/menu/menu_setting.c b/menu/menu_setting.c index fa5802b1d4..a6513d4ab2 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5815,32 +5815,65 @@ static bool setting_append_list_menu_options( START_SUB_GROUP(list, list_info, "Display", &group_info, &subgroup_info, parent_group); - CONFIG_BOOL( - list, list_info, - &settings->menu.dpi.override_enable, - menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE), - menu_dpi_override_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); + /* only glui uses these values, don't show them on other drivers */ + if (!strcmp(settings->menu.driver,"glui")) + { + CONFIG_BOOL( + list, list_info, + &settings->menu.dpi.override_enable, + menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_ENABLE), + menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE), + menu_dpi_override_enable, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); - CONFIG_UINT( - list, list_info, - &settings->menu.dpi.override_value, - menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_VALUE), - menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE), - menu_dpi_override_value, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); + CONFIG_UINT( + list, list_info, + &settings->menu.dpi.override_value, + menu_hash_to_str(MENU_LABEL_DPI_OVERRIDE_VALUE), + menu_hash_to_str(MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE), + menu_dpi_override_value, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); + } + /* only XMB uses these values, don't show them on other drivers */ + if (!strcmp(settings->menu.driver,"xmb")) + { + CONFIG_UINT( + list, list_info, + &settings->menu.xmb_alpha_factor, + menu_hash_to_str(MENU_LABEL_XMB_ALPHA_FACTOR), + menu_hash_to_str(MENU_LABEL_VALUE_XMB_ALPHA_FACTOR), + xmb_alpha_factor, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + + CONFIG_UINT( + list, list_info, + &settings->menu.xmb_scale_factor, + menu_hash_to_str(MENU_LABEL_XMB_SCALE_FACTOR), + menu_hash_to_str(MENU_LABEL_VALUE_XMB_SCALE_FACTOR), + xmb_scale_factor, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + } CONFIG_BOOL( list, list_info,