mirror of
https://github.com/libretro/RetroArch
synced 2025-04-07 13:23:32 +00:00
(XMB) Gradient switching
This commit is contained in:
parent
989823691e
commit
a4308640a2
@ -511,6 +511,7 @@ static bool default_block_config_read = true;
|
|||||||
static unsigned xmb_scale_factor = 100;
|
static unsigned xmb_scale_factor = 100;
|
||||||
static unsigned xmb_alpha_factor = 75;
|
static unsigned xmb_alpha_factor = 75;
|
||||||
static unsigned xmb_theme = 0;
|
static unsigned xmb_theme = 0;
|
||||||
|
static unsigned xmb_gradient = 0;
|
||||||
static bool xmb_shadows_enable = false;
|
static bool xmb_shadows_enable = false;
|
||||||
static bool xmb_ribbon_enable = false;
|
static bool xmb_ribbon_enable = false;
|
||||||
|
|
||||||
|
@ -483,6 +483,7 @@ static void config_set_defaults(void)
|
|||||||
settings->menu.xmb_scale_factor = xmb_scale_factor;
|
settings->menu.xmb_scale_factor = xmb_scale_factor;
|
||||||
settings->menu.xmb_alpha_factor = xmb_alpha_factor;
|
settings->menu.xmb_alpha_factor = xmb_alpha_factor;
|
||||||
settings->menu.xmb_theme = xmb_theme;
|
settings->menu.xmb_theme = xmb_theme;
|
||||||
|
settings->menu.xmb_gradient = xmb_gradient;
|
||||||
settings->menu.xmb_shadows_enable = xmb_shadows_enable;
|
settings->menu.xmb_shadows_enable = xmb_shadows_enable;
|
||||||
settings->menu.xmb_ribbon_enable = xmb_ribbon_enable;
|
settings->menu.xmb_ribbon_enable = xmb_ribbon_enable;
|
||||||
settings->menu.xmb_font[0] = '\0';
|
settings->menu.xmb_font[0] = '\0';
|
||||||
@ -1542,6 +1543,7 @@ static bool config_load_file(const char *path, bool set_defaults)
|
|||||||
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_scale_factor, "xmb_scale_factor");
|
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");
|
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_alpha_factor, "xmb_alpha_factor");
|
||||||
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_theme, "xmb_theme");
|
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_theme, "xmb_theme");
|
||||||
|
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_gradient, "xmb_gradient");
|
||||||
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_shadows_enable, "xmb_shadows_enable");
|
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_shadows_enable, "xmb_shadows_enable");
|
||||||
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_ribbon_enable, "xmb_ribbon_enable");
|
CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb_ribbon_enable, "xmb_ribbon_enable");
|
||||||
config_get_path(conf, "xmb_font", settings->menu.xmb_font, sizeof(settings->menu.xmb_font));
|
config_get_path(conf, "xmb_font", settings->menu.xmb_font, sizeof(settings->menu.xmb_font));
|
||||||
@ -2775,6 +2777,7 @@ bool config_save_file(const char *path)
|
|||||||
config_set_int(conf, "xmb_scale_factor", settings->menu.xmb_scale_factor);
|
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_int(conf, "xmb_alpha_factor", settings->menu.xmb_alpha_factor);
|
||||||
config_set_int(conf, "xmb_theme", settings->menu.xmb_theme);
|
config_set_int(conf, "xmb_theme", settings->menu.xmb_theme);
|
||||||
|
config_set_int(conf, "xmb_gradient", settings->menu.xmb_gradient);
|
||||||
config_set_bool(conf, "xmb_shadows_enable", settings->menu.xmb_shadows_enable);
|
config_set_bool(conf, "xmb_shadows_enable", settings->menu.xmb_shadows_enable);
|
||||||
config_set_bool(conf, "xmb_ribbon_enable", settings->menu.xmb_ribbon_enable);
|
config_set_bool(conf, "xmb_ribbon_enable", settings->menu.xmb_ribbon_enable);
|
||||||
config_set_path(conf, "xmb_font",
|
config_set_path(conf, "xmb_font",
|
||||||
|
@ -167,6 +167,7 @@ typedef struct settings
|
|||||||
unsigned xmb_scale_factor;
|
unsigned xmb_scale_factor;
|
||||||
unsigned xmb_alpha_factor;
|
unsigned xmb_alpha_factor;
|
||||||
unsigned xmb_theme;
|
unsigned xmb_theme;
|
||||||
|
unsigned xmb_gradient;
|
||||||
bool xmb_shadows_enable;
|
bool xmb_shadows_enable;
|
||||||
bool xmb_ribbon_enable;
|
bool xmb_ribbon_enable;
|
||||||
char xmb_font[PATH_MAX_LENGTH];
|
char xmb_font[PATH_MAX_LENGTH];
|
||||||
|
@ -619,6 +619,39 @@ static void menu_action_setting_disp_set_label_xmb_theme(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void menu_action_setting_disp_set_label_xmb_gradient(
|
||||||
|
file_list_t* list,
|
||||||
|
unsigned *w, unsigned type, unsigned i,
|
||||||
|
const char *label,
|
||||||
|
char *s, size_t len,
|
||||||
|
const char *entry_label,
|
||||||
|
const char *path,
|
||||||
|
char *s2, size_t len2)
|
||||||
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
if (!settings)
|
||||||
|
return;
|
||||||
|
|
||||||
|
strlcpy(s2, path, len2);
|
||||||
|
*w = 19;
|
||||||
|
switch (settings->menu.xmb_gradient)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
snprintf(s, len, "%s", "Pomegranate");
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
snprintf(s, len, "%s", "Volcano");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
snprintf(s, len, "%s", "Midnight Blue");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
snprintf(s, len, "%s", "Wisteria");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void menu_action_setting_disp_set_label_thumbnails(
|
static void menu_action_setting_disp_set_label_thumbnails(
|
||||||
file_list_t* list,
|
file_list_t* list,
|
||||||
unsigned *w, unsigned type, unsigned i,
|
unsigned *w, unsigned type, unsigned i,
|
||||||
@ -1209,6 +1242,10 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
|
|||||||
BIND_ACTION_GET_VALUE(cbs,
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
menu_action_setting_disp_set_label_xmb_theme);
|
menu_action_setting_disp_set_label_xmb_theme);
|
||||||
break;
|
break;
|
||||||
|
case MENU_LABEL_XMB_GRADIENT:
|
||||||
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
|
menu_action_setting_disp_set_label_xmb_gradient);
|
||||||
|
break;
|
||||||
case MENU_LABEL_THUMBNAILS:
|
case MENU_LABEL_THUMBNAILS:
|
||||||
BIND_ACTION_GET_VALUE(cbs,
|
BIND_ACTION_GET_VALUE(cbs,
|
||||||
menu_action_setting_disp_set_label_thumbnails);
|
menu_action_setting_disp_set_label_thumbnails);
|
||||||
|
@ -231,6 +231,34 @@ typedef struct xmb_handle
|
|||||||
gfx_font_raster_block_t raster_block;
|
gfx_font_raster_block_t raster_block;
|
||||||
} xmb_handle_t;
|
} xmb_handle_t;
|
||||||
|
|
||||||
|
float gradient_volcano[16] = {
|
||||||
|
1, 0, 0.1, 1,
|
||||||
|
1, 0.1, 0, 1,
|
||||||
|
0.05, 0, 0.05, 1,
|
||||||
|
0.05, 0, 0.05, 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
float gradient_midnight_blue[16] = {
|
||||||
|
44/255.0, 62/255.0, 80/255.0, 1.0,
|
||||||
|
44/255.0, 62/255.0, 80/255.0, 1.0,
|
||||||
|
44/255.0, 62/255.0, 80/255.0, 1.0,
|
||||||
|
44/255.0, 62/255.0, 80/255.0, 1.0,
|
||||||
|
};
|
||||||
|
|
||||||
|
float gradient_wisteria[16] = {
|
||||||
|
142/255.0, 68/255.0, 173/255.0, 1.0,
|
||||||
|
142/255.0, 68/255.0, 173/255.0, 1.0,
|
||||||
|
142/255.0, 68/255.0, 173/255.0, 1.0,
|
||||||
|
142/255.0, 68/255.0, 173/255.0, 1.0,
|
||||||
|
};
|
||||||
|
|
||||||
|
float gradient_pomegranate[16] = {
|
||||||
|
192/255.0, 57/255.0, 43/255.0, 1.0,
|
||||||
|
192/255.0, 57/255.0, 43/255.0, 1.0,
|
||||||
|
192/255.0, 57/255.0, 43/255.0, 1.0,
|
||||||
|
192/255.0, 57/255.0, 43/255.0, 1.0,
|
||||||
|
};
|
||||||
|
|
||||||
static const char *xmb_theme_ident(void)
|
static const char *xmb_theme_ident(void)
|
||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
@ -270,6 +298,26 @@ static const char *xmb_thumbnails_ident(void)
|
|||||||
return "OFF";
|
return "OFF";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static float *xmb_gradient_ident(void)
|
||||||
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
switch (settings->menu.xmb_gradient)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return &gradient_volcano[0];
|
||||||
|
case 2:
|
||||||
|
return &gradient_midnight_blue[0];
|
||||||
|
case 3:
|
||||||
|
return &gradient_wisteria[0];
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return &gradient_pomegranate[0];
|
||||||
|
}
|
||||||
|
|
||||||
static void xmb_fill_default_background_path(xmb_handle_t *xmb,
|
static void xmb_fill_default_background_path(xmb_handle_t *xmb,
|
||||||
char *path, size_t size)
|
char *path, size_t size)
|
||||||
{
|
{
|
||||||
@ -1830,6 +1878,9 @@ static void xmb_draw_bg(
|
|||||||
|
|
||||||
if (settings->menu.xmb_ribbon_enable)
|
if (settings->menu.xmb_ribbon_enable)
|
||||||
{
|
{
|
||||||
|
draw.color = xmb_gradient_ident();
|
||||||
|
menu_display_set_alpha(draw.color, coord_color[3]);
|
||||||
|
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_GRADIENT, &draw);
|
||||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_RIBBON, &draw);
|
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_RIBBON, &draw);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -300,6 +300,8 @@ static const char *menu_hash_to_str_us_label(uint32_t hash)
|
|||||||
return "xmb_font";
|
return "xmb_font";
|
||||||
case MENU_LABEL_XMB_THEME:
|
case MENU_LABEL_XMB_THEME:
|
||||||
return "xmb_theme";
|
return "xmb_theme";
|
||||||
|
case MENU_LABEL_XMB_GRADIENT:
|
||||||
|
return "xmb_gradient";
|
||||||
case MENU_LABEL_XMB_SHADOWS_ENABLE:
|
case MENU_LABEL_XMB_SHADOWS_ENABLE:
|
||||||
return "xmb_shadows_enable";
|
return "xmb_shadows_enable";
|
||||||
case MENU_LABEL_XMB_RIBBON_ENABLE:
|
case MENU_LABEL_XMB_RIBBON_ENABLE:
|
||||||
@ -1060,6 +1062,8 @@ const char *menu_hash_to_str_us(uint32_t hash)
|
|||||||
return "XMB Font";
|
return "XMB Font";
|
||||||
case MENU_LABEL_VALUE_XMB_THEME:
|
case MENU_LABEL_VALUE_XMB_THEME:
|
||||||
return "XMB Theme";
|
return "XMB Theme";
|
||||||
|
case MENU_LABEL_VALUE_XMB_GRADIENT:
|
||||||
|
return "XMB Gradient";
|
||||||
case MENU_LABEL_VALUE_XMB_SHADOWS_ENABLE:
|
case MENU_LABEL_VALUE_XMB_SHADOWS_ENABLE:
|
||||||
return "XMB Shadows Enable";
|
return "XMB Shadows Enable";
|
||||||
case MENU_LABEL_VALUE_XMB_RIBBON_ENABLE:
|
case MENU_LABEL_VALUE_XMB_RIBBON_ENABLE:
|
||||||
|
@ -522,19 +522,7 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
|||||||
case MENU_DISPLAY_CTL_DRAW_GRADIENT:
|
case MENU_DISPLAY_CTL_DRAW_GRADIENT:
|
||||||
{
|
{
|
||||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||||
float bg[16] = {
|
|
||||||
1, 0, 0.1, 1,
|
|
||||||
1, 0.1, 0, 1,
|
|
||||||
0.05, 0, 0.05, 1,
|
|
||||||
0.05, 0, 0.05, 1
|
|
||||||
};
|
|
||||||
|
|
||||||
bg[3] = draw->color[3];
|
|
||||||
bg[7] = draw->color[7];
|
|
||||||
bg[11] = draw->color[11];
|
|
||||||
bg[15] = draw->color[15];
|
|
||||||
|
|
||||||
draw->color = bg;
|
|
||||||
draw->texture = 0;
|
draw->texture = 0;
|
||||||
draw->x = 0;
|
draw->x = 0;
|
||||||
draw->y = 0;
|
draw->y = 0;
|
||||||
@ -552,8 +540,6 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
|||||||
|
|
||||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
||||||
|
|
||||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_GRADIENT, draw);
|
|
||||||
|
|
||||||
draw->x = 0;
|
draw->x = 0;
|
||||||
draw->y = 0;
|
draw->y = 0;
|
||||||
draw->coords = (struct gfx_coords*)(&ca->coords);
|
draw->coords = (struct gfx_coords*)(&ca->coords);
|
||||||
|
@ -388,6 +388,8 @@ extern "C" {
|
|||||||
#define MENU_LABEL_VALUE_XMB_FONT 0x0020337E7
|
#define MENU_LABEL_VALUE_XMB_FONT 0x0020337E7
|
||||||
#define MENU_LABEL_XMB_THEME 0x824c5a7eU
|
#define MENU_LABEL_XMB_THEME 0x824c5a7eU
|
||||||
#define MENU_LABEL_VALUE_XMB_THEME 0x3603f65fU
|
#define MENU_LABEL_VALUE_XMB_THEME 0x3603f65fU
|
||||||
|
#define MENU_LABEL_XMB_GRADIENT 0x18e63099U
|
||||||
|
#define MENU_LABEL_VALUE_XMB_GRADIENT 0x8a520681U
|
||||||
#define MENU_LABEL_XMB_SHADOWS_ENABLE 0xd0fcc82aU
|
#define MENU_LABEL_XMB_SHADOWS_ENABLE 0xd0fcc82aU
|
||||||
#define MENU_LABEL_VALUE_XMB_SHADOWS_ENABLE 0x5982498cU
|
#define MENU_LABEL_VALUE_XMB_SHADOWS_ENABLE 0x5982498cU
|
||||||
#define MENU_LABEL_XMB_RIBBON_ENABLE 0x8e89c3edU
|
#define MENU_LABEL_XMB_RIBBON_ENABLE 0x8e89c3edU
|
||||||
|
@ -5902,6 +5902,19 @@ static bool setting_append_list(
|
|||||||
parent_group,
|
parent_group,
|
||||||
general_write_handler,
|
general_write_handler,
|
||||||
general_read_handler);
|
general_read_handler);
|
||||||
|
|
||||||
|
CONFIG_UINT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->menu.xmb_gradient,
|
||||||
|
menu_hash_to_str(MENU_LABEL_XMB_GRADIENT),
|
||||||
|
menu_hash_to_str(MENU_LABEL_VALUE_XMB_GRADIENT),
|
||||||
|
xmb_gradient,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG_BOOL(
|
CONFIG_BOOL(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user