(XMB) Reorganize some more settings in struct

This commit is contained in:
twinaphex 2015-02-12 19:27:13 +01:00
parent 2252e47028
commit 9c29348305
1 changed files with 87 additions and 79 deletions

View File

@ -89,16 +89,24 @@ typedef struct xmb_handle
int depth;
int old_depth;
char box_message[PATH_MAX_LENGTH];
struct xmb_texture_item textures[XMB_TEXTURE_LAST];
float x;
float alpha;
float arrow_alpha;
float hspacing;
float vspacing;
float margin_left;
float margin_top;
float setting_margin_left;
struct
{
struct
{
float alpha;
} arrow;
struct xmb_texture_item list[XMB_TEXTURE_LAST];
} textures;
struct
{
float item;
@ -164,6 +172,7 @@ typedef struct xmb_handle
float alpha;
float factor;
} active;
struct
{
float zoom;
@ -405,10 +414,10 @@ static void xmb_render_background(gl_t *gl, xmb_handle_t *xmb,
if ((g_settings.menu.pause_libretro
|| !g_extern.main_is_init || g_extern.libretro_dummy)
&& !force_transparency
&& xmb->textures[XMB_TEXTURE_BG].id)
&& xmb->textures.list[XMB_TEXTURE_BG].id)
{
coords.color = color;
glBindTexture(GL_TEXTURE_2D, xmb->textures[XMB_TEXTURE_BG].id);
glBindTexture(GL_TEXTURE_2D, xmb->textures.list[XMB_TEXTURE_BG].id);
}
else
{
@ -787,13 +796,13 @@ static void xmb_list_switch(menu_handle_t *menu, xmb_handle_t *xmb)
case 1:
menu_animation_push(menu->animation, XMB_DELAY, xmb->icon.size * -(xmb->depth*2-2),
&xmb->x, EASING_IN_OUT_QUAD, NULL);
menu_animation_push(menu->animation, XMB_DELAY, 0, &xmb->arrow_alpha,
menu_animation_push(menu->animation, XMB_DELAY, 0, &xmb->textures.arrow.alpha,
EASING_IN_OUT_QUAD, NULL);
break;
case 2:
menu_animation_push(menu->animation, XMB_DELAY,
xmb->icon.size * -(xmb->depth*2-2), &xmb->x, EASING_IN_OUT_QUAD, NULL);
menu_animation_push(menu->animation, XMB_DELAY, 1, &xmb->arrow_alpha,
menu_animation_push(menu->animation, XMB_DELAY, 1, &xmb->textures.arrow.alpha,
EASING_IN_OUT_QUAD, NULL);
break;
}
@ -888,56 +897,56 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl,
switch(type)
{
case MENU_FILE_DIRECTORY:
icon = xmb->textures[XMB_TEXTURE_FOLDER].id;
icon = xmb->textures.list[XMB_TEXTURE_FOLDER].id;
break;
case MENU_FILE_PLAIN:
icon = xmb->textures[XMB_TEXTURE_FILE].id;
icon = xmb->textures.list[XMB_TEXTURE_FILE].id;
break;
case MENU_FILE_PLAYLIST_ENTRY:
icon = xmb->textures[XMB_TEXTURE_FILE].id;
icon = xmb->textures.list[XMB_TEXTURE_FILE].id;
break;
case MENU_FILE_CONTENTLIST_ENTRY:
icon = xmb->textures[XMB_TEXTURE_FILE].id;
icon = xmb->textures.list[XMB_TEXTURE_FILE].id;
if (core_node)
icon = core_node->content_icon;
break;
case MENU_FILE_CARCHIVE:
icon = xmb->textures[XMB_TEXTURE_ZIP].id;
icon = xmb->textures.list[XMB_TEXTURE_ZIP].id;
break;
case MENU_FILE_CORE:
icon = xmb->textures[XMB_TEXTURE_CORE].id;
icon = xmb->textures.list[XMB_TEXTURE_CORE].id;
break;
case MENU_FILE_RDB:
icon = xmb->textures[XMB_TEXTURE_RDB].id;
icon = xmb->textures.list[XMB_TEXTURE_RDB].id;
break;
case MENU_FILE_CURSOR:
icon = xmb->textures[XMB_TEXTURE_CURSOR].id;
icon = xmb->textures.list[XMB_TEXTURE_CURSOR].id;
break;
case MENU_SETTING_ACTION_RUN:
icon = xmb->textures[XMB_TEXTURE_RUN].id;
icon = xmb->textures.list[XMB_TEXTURE_RUN].id;
break;
case MENU_SETTING_ACTION_SAVESTATE:
icon = xmb->textures[XMB_TEXTURE_SAVESTATE].id;
icon = xmb->textures.list[XMB_TEXTURE_SAVESTATE].id;
break;
case MENU_SETTING_ACTION_LOADSTATE:
icon = xmb->textures[XMB_TEXTURE_LOADSTATE].id;
icon = xmb->textures.list[XMB_TEXTURE_LOADSTATE].id;
break;
case MENU_SETTING_ACTION_SCREENSHOT:
icon = xmb->textures[XMB_TEXTURE_SCREENSHOT].id;
icon = xmb->textures.list[XMB_TEXTURE_SCREENSHOT].id;
break;
case MENU_SETTING_ACTION_RESET:
icon = xmb->textures[XMB_TEXTURE_RELOAD].id;
icon = xmb->textures.list[XMB_TEXTURE_RELOAD].id;
break;
case MENU_SETTING_ACTION:
icon = xmb->textures[XMB_TEXTURE_SETTING].id;
icon = xmb->textures.list[XMB_TEXTURE_SETTING].id;
if (xmb->depth == 3)
icon = xmb->textures[XMB_TEXTURE_SUBSETTING].id;
icon = xmb->textures.list[XMB_TEXTURE_SUBSETTING].id;
break;
case MENU_SETTING_GROUP:
icon = xmb->textures[XMB_TEXTURE_SETTING].id;
icon = xmb->textures.list[XMB_TEXTURE_SETTING].id;
break;
default:
icon = xmb->textures[XMB_TEXTURE_SUBSETTING].id;
icon = xmb->textures.list[XMB_TEXTURE_SUBSETTING].id;
break;
}
@ -964,9 +973,9 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl,
&& strcmp(type_str, "ON")
&& strcmp(type_str, "OFF"))
|| ((!strcmp(type_str, "ON")
&& !xmb->textures[XMB_TEXTURE_SWITCH_ON].id)
&& !xmb->textures.list[XMB_TEXTURE_SWITCH_ON].id)
|| (!strcmp(type_str, "OFF")
&& !xmb->textures[XMB_TEXTURE_SWITCH_OFF].id)))
&& !xmb->textures.list[XMB_TEXTURE_SWITCH_OFF].id)))
xmb_draw_text(gl, xmb, value,
node->x + xmb->margin_left + xmb->hspacing +
xmb->label.margin.left + xmb->setting_margin_left,
@ -975,8 +984,8 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl,
node->label_alpha,
0);
if (!strcmp(type_str, "ON") && xmb->textures[XMB_TEXTURE_SWITCH_ON].id)
xmb_draw_icon(gl, xmb, xmb->textures[XMB_TEXTURE_SWITCH_ON].id,
if (!strcmp(type_str, "ON") && xmb->textures.list[XMB_TEXTURE_SWITCH_ON].id)
xmb_draw_icon(gl, xmb, xmb->textures.list[XMB_TEXTURE_SWITCH_ON].id,
node->x + xmb->margin_left + xmb->hspacing
+ xmb->icon.size / 2.0 + xmb->setting_margin_left,
xmb->margin_top + node->y + xmb->icon.size / 2.0,
@ -984,8 +993,8 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl,
0,
1);
if (!strcmp(type_str, "OFF") && xmb->textures[XMB_TEXTURE_SWITCH_OFF].id)
xmb_draw_icon(gl, xmb, xmb->textures[XMB_TEXTURE_SWITCH_OFF].id,
if (!strcmp(type_str, "OFF") && xmb->textures.list[XMB_TEXTURE_SWITCH_OFF].id)
xmb_draw_icon(gl, xmb, xmb->textures.list[XMB_TEXTURE_SWITCH_OFF].id,
node->x + xmb->margin_left + xmb->hspacing
+ xmb->icon.size / 2.0 + xmb->setting_margin_left,
xmb->margin_top + node->y + xmb->icon.size / 2.0,
@ -1032,7 +1041,7 @@ static void xmb_frame(menu_handle_t *menu)
timedate, gl->win_width - xmb->title.margin.left - xmb->icon.size / 4,
xmb->title.margin.top, 1, 1, 1);
xmb_draw_icon(gl, xmb, xmb->textures[XMB_TEXTURE_CLOCK].id,
xmb_draw_icon(gl, xmb, xmb->textures.list[XMB_TEXTURE_CLOCK].id,
gl->win_width - xmb->icon.size, xmb->icon.size, 1, 0, 1);
}
@ -1048,10 +1057,10 @@ static void xmb_frame(menu_handle_t *menu)
xmb_draw_text(gl, xmb, title_msg, xmb->title.margin.left,
gl->win_height - xmb->title.margin.bottom, 1, 1, 0);
xmb_draw_icon(gl, xmb, xmb->textures[XMB_TEXTURE_ARROW].id,
xmb_draw_icon(gl, xmb, xmb->textures.list[XMB_TEXTURE_ARROW].id,
xmb->x + xmb->margin_left + xmb->hspacing - xmb->icon.size / 2.0 + xmb->icon.size,
xmb->margin_top + xmb->icon.size / 2.0 + xmb->vspacing * xmb->item.active.factor,
xmb->arrow_alpha, 0, 1);
xmb->textures.arrow.alpha, 0, 1);
depth = file_list_get_size(menu->menu_list->menu_stack);
@ -1158,8 +1167,7 @@ static void *xmb_init(void)
xmb->categories.active.idx_old = 0;
xmb->x = 0;
xmb->categories.x_pos = 0;
xmb->alpha = 1.0f;
xmb->arrow_alpha = 0;
xmb->textures.arrow.alpha = 0;
xmb->depth = 1;
xmb->old_depth = 1;
xmb->alpha = 0;
@ -1302,55 +1310,55 @@ static void xmb_context_reset(menu_handle_t *menu)
xmb_font_init_first(&gl->font_driver, &xmb->font.buf, gl, fontpath, xmb->font.size);
if (*g_settings.menu.wallpaper)
strlcpy(xmb->textures[XMB_TEXTURE_BG].path, g_settings.menu.wallpaper,
sizeof(xmb->textures[XMB_TEXTURE_BG].path));
strlcpy(xmb->textures.list[XMB_TEXTURE_BG].path, g_settings.menu.wallpaper,
sizeof(xmb->textures.list[XMB_TEXTURE_BG].path));
else
fill_pathname_join(xmb->textures[XMB_TEXTURE_BG].path, iconpath,
"bg.png", sizeof(xmb->textures[XMB_TEXTURE_BG].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SETTINGS].path, iconpath,
"settings.png", sizeof(xmb->textures[XMB_TEXTURE_SETTINGS].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SETTING].path, iconpath,
"setting.png", sizeof(xmb->textures[XMB_TEXTURE_SETTING].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SUBSETTING].path, iconpath,
"subsetting.png", sizeof(xmb->textures[XMB_TEXTURE_SUBSETTING].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_ARROW].path, iconpath,
"arrow.png", sizeof(xmb->textures[XMB_TEXTURE_ARROW].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_RUN].path, iconpath,
"run.png", sizeof(xmb->textures[XMB_TEXTURE_RUN].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_RESUME].path, iconpath,
"resume.png", sizeof(xmb->textures[XMB_TEXTURE_RESUME].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SAVESTATE].path, iconpath,
"savestate.png", sizeof(xmb->textures[XMB_TEXTURE_SAVESTATE].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_LOADSTATE].path, iconpath,
"loadstate.png", sizeof(xmb->textures[XMB_TEXTURE_LOADSTATE].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SCREENSHOT].path, iconpath,
"screenshot.png", sizeof(xmb->textures[XMB_TEXTURE_SCREENSHOT].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_RELOAD].path, iconpath,
"reload.png", sizeof(xmb->textures[XMB_TEXTURE_RELOAD].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_FILE].path, iconpath,
"file.png", sizeof(xmb->textures[XMB_TEXTURE_FILE].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_FOLDER].path, iconpath,
"folder.png", sizeof(xmb->textures[XMB_TEXTURE_FOLDER].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_ZIP].path, iconpath,
"zip.png", sizeof(xmb->textures[XMB_TEXTURE_ZIP].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_CORE].path, iconpath,
"core.png", sizeof(xmb->textures[XMB_TEXTURE_CORE].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_RDB].path, iconpath,
"database.png", sizeof(xmb->textures[XMB_TEXTURE_RDB].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_CURSOR].path, iconpath,
"cursor.png", sizeof(xmb->textures[XMB_TEXTURE_CURSOR].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SWITCH_ON].path, iconpath,
"on.png", sizeof(xmb->textures[XMB_TEXTURE_SWITCH_ON].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_SWITCH_OFF].path, iconpath,
"off.png", sizeof(xmb->textures[XMB_TEXTURE_SWITCH_OFF].path));
fill_pathname_join(xmb->textures[XMB_TEXTURE_CLOCK].path, iconpath,
"clock.png", sizeof(xmb->textures[XMB_TEXTURE_CLOCK].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_BG].path, iconpath,
"bg.png", sizeof(xmb->textures.list[XMB_TEXTURE_BG].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SETTINGS].path, iconpath,
"settings.png", sizeof(xmb->textures.list[XMB_TEXTURE_SETTINGS].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SETTING].path, iconpath,
"setting.png", sizeof(xmb->textures.list[XMB_TEXTURE_SETTING].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SUBSETTING].path, iconpath,
"subsetting.png", sizeof(xmb->textures.list[XMB_TEXTURE_SUBSETTING].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_ARROW].path, iconpath,
"arrow.png", sizeof(xmb->textures.list[XMB_TEXTURE_ARROW].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_RUN].path, iconpath,
"run.png", sizeof(xmb->textures.list[XMB_TEXTURE_RUN].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_RESUME].path, iconpath,
"resume.png", sizeof(xmb->textures.list[XMB_TEXTURE_RESUME].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SAVESTATE].path, iconpath,
"savestate.png", sizeof(xmb->textures.list[XMB_TEXTURE_SAVESTATE].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_LOADSTATE].path, iconpath,
"loadstate.png", sizeof(xmb->textures.list[XMB_TEXTURE_LOADSTATE].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SCREENSHOT].path, iconpath,
"screenshot.png", sizeof(xmb->textures.list[XMB_TEXTURE_SCREENSHOT].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_RELOAD].path, iconpath,
"reload.png", sizeof(xmb->textures.list[XMB_TEXTURE_RELOAD].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_FILE].path, iconpath,
"file.png", sizeof(xmb->textures.list[XMB_TEXTURE_FILE].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_FOLDER].path, iconpath,
"folder.png", sizeof(xmb->textures.list[XMB_TEXTURE_FOLDER].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_ZIP].path, iconpath,
"zip.png", sizeof(xmb->textures.list[XMB_TEXTURE_ZIP].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_CORE].path, iconpath,
"core.png", sizeof(xmb->textures.list[XMB_TEXTURE_CORE].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_RDB].path, iconpath,
"database.png", sizeof(xmb->textures.list[XMB_TEXTURE_RDB].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_CURSOR].path, iconpath,
"cursor.png", sizeof(xmb->textures.list[XMB_TEXTURE_CURSOR].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SWITCH_ON].path, iconpath,
"on.png", sizeof(xmb->textures.list[XMB_TEXTURE_SWITCH_ON].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_SWITCH_OFF].path, iconpath,
"off.png", sizeof(xmb->textures.list[XMB_TEXTURE_SWITCH_OFF].path));
fill_pathname_join(xmb->textures.list[XMB_TEXTURE_CLOCK].path, iconpath,
"clock.png", sizeof(xmb->textures.list[XMB_TEXTURE_CLOCK].path));
for (k = 0; k < XMB_TEXTURE_LAST; k++)
xmb->textures[k].id = menu_texture_load(xmb->textures[k].path,
xmb->textures.list[k].id = menu_texture_load(xmb->textures.list[k].path,
TEXTURE_BACKEND_OPENGL, TEXTURE_FILTER_MIPMAP_LINEAR);
xmb->settings_node.icon = xmb->textures[XMB_TEXTURE_SETTINGS].id;
xmb->settings_node.icon = xmb->textures.list[XMB_TEXTURE_SETTINGS].id;
xmb->settings_node.alpha = xmb->categories.active.alpha;
xmb->settings_node.zoom = xmb->categories.active.zoom;
@ -1563,7 +1571,7 @@ static void xmb_context_destroy(menu_handle_t *menu)
return;
for (i = 0; i < XMB_TEXTURE_LAST; i++)
glDeleteTextures(1, &xmb->textures[i].id);
glDeleteTextures(1, &xmb->textures.list[i].id);
for (i = 1; i < menu->categories.size; i++)
{