(Menu) Refactor MENU_SETTINGS_SHADER_OPTIONS

This commit is contained in:
twinaphex 2014-09-04 19:34:28 +02:00
parent 1404dd42d7
commit b98c74bf25
7 changed files with 49 additions and 84 deletions

View File

@ -1843,9 +1843,7 @@ static int menu_action_ok(const char *dir,
driver.menu->shader,
gfx_shader_parse_type(shader_path, RARCH_SHADER_NONE),
shader_path);
/* Pop stack until we hit shader manager again. */
menu_flush_stack_type(driver.menu->menu_stack,
MENU_SETTINGS_SHADER_OPTIONS);
menu_flush_stack_label(driver.menu->menu_stack, "Shader Options");
}
else if (!strcmp(menu_label, "video_shader_pass")
&& type == MENU_FILE_PLAIN)
@ -1857,9 +1855,7 @@ static int menu_action_ok(const char *dir,
/* This will reset any changed parameters. */
gfx_shader_resolve_parameters(NULL, driver.menu->shader);
/* Pop stack until we hit shader manager again. */
menu_flush_stack_type(driver.menu->menu_stack,
MENU_SETTINGS_SHADER_OPTIONS);
menu_flush_stack_label(driver.menu->menu_stack, "Shader Options");
}
#endif
else if (!strcmp(menu_label, "deferred_core_list")

View File

@ -362,17 +362,7 @@ static void rgui_render(void)
if (type >= MENU_SETTINGS_SHADER_FILTER &&
type <= MENU_SETTINGS_SHADER_LAST)
{
/* HACK. Work around that we're using the menu_type as dir type
* to propagate state correctly. */
if ((menu_type_is == MENU_SETTINGS_SHADER_OPTIONS)
&& (menu_type_is == MENU_SETTINGS_SHADER_OPTIONS))
{
type = MENU_FILE_DIRECTORY;
strlcpy(type_str, "(DIR)", sizeof(type_str));
w = 5;
}
else if (
type == MENU_SETTINGS_SHADER_OPTIONS ||
if (
type == MENU_SETTINGS_SHADER_PRESET ||
type == MENU_SETTINGS_SHADER_PARAMETERS ||
type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS)

View File

@ -231,17 +231,7 @@ static void rmenu_render(void)
if (type >= MENU_SETTINGS_SHADER_FILTER &&
type <= MENU_SETTINGS_SHADER_LAST)
{
/* HACK. Work around that we're using the menu_type as
* dir type to propagate state correctly. */
if ((menu_type_is == MENU_SETTINGS_SHADER_OPTIONS)
&& (menu_type_is == MENU_SETTINGS_SHADER_OPTIONS))
{
type = MENU_FILE_DIRECTORY;
strlcpy(type_str, "(DIR)", sizeof(type_str));
w = 5;
}
else if (
type == MENU_SETTINGS_SHADER_OPTIONS ||
if (
type == MENU_SETTINGS_SHADER_PRESET ||
type == MENU_SETTINGS_SHADER_PARAMETERS ||
type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS)

View File

@ -442,17 +442,7 @@ static void rmenu_xui_render(void)
if (type >= MENU_SETTINGS_SHADER_FILTER &&
type <= MENU_SETTINGS_SHADER_LAST)
{
/* HACK. Work around that we're using the menu_type as
* dir type to propagate state correctly. */
if ((menu_type_is == MENU_SETTINGS_SHADER_OPTIONS)
&& (menu_type_is == MENU_SETTINGS_SHADER_OPTIONS))
{
type = MENU_FILE_DIRECTORY;
strlcpy(type_str, "(DIR)", sizeof(type_str));
w = 5;
}
else if (type == MENU_SETTINGS_SHADER_OPTIONS ||
type == MENU_SETTINGS_SHADER_PRESET)
if (type == MENU_SETTINGS_SHADER_PRESET)
strlcpy(type_str, "...", sizeof(type_str));
else if (type == MENU_SETTINGS_SHADER_FILTER)
snprintf(type_str, sizeof(type_str), "%s",

View File

@ -37,9 +37,9 @@ static void get_title(const char *label, const char *dir,
strlcpy(title, "FRONTEND PERFORMANCE COUNTERS", sizeof_title);
else if (!strcmp(label, "core_counters"))
strlcpy(title, "CORE PERFORMANCE COUNTERS", sizeof_title);
#ifdef HAVE_SHADER_MANAGER
else if (menu_type == MENU_SETTINGS_SHADER_OPTIONS)
else if (!strcmp(label, "Shader Options"))
strlcpy(title, "SHADER OPTIONS", sizeof_title);
#ifdef HAVE_SHADER_MANAGER
else if (menu_type == MENU_SETTINGS_SHADER_PARAMETERS)
strlcpy(title, "SHADER PARAMETERS (CURRENT)", sizeof_title);
else if (menu_type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS)

View File

@ -640,7 +640,7 @@ unsigned menu_common_type_is(const char *label, unsigned type)
!strcmp(label, "core_information") ||
!strcmp(label, "Video Options") ||
!strcmp(label, "Font Options") ||
type == MENU_SETTINGS_SHADER_OPTIONS ||
!strcmp(label, "Shader Options") ||
type == MENU_SETTINGS_SHADER_PARAMETERS ||
type == MENU_SETTINGS_SHADER_PRESET_PARAMETERS ||
!strcmp(label, "Audio Options") ||

View File

@ -441,7 +441,7 @@ int menu_entries_push_list(menu_handle_t *menu,
add_setting_entry(menu,list,"Driver Options", MENU_FILE_SWITCH, setting_data);
add_setting_entry(menu,list,"General Options", MENU_FILE_SWITCH, setting_data);
add_setting_entry(menu,list,"Video Options", MENU_FILE_SWITCH, setting_data);
add_setting_entry(menu,list,"Shader Options", MENU_SETTINGS_SHADER_OPTIONS, setting_data);
add_setting_entry(menu,list,"Shader Options", MENU_FILE_SWITCH, setting_data);
add_setting_entry(menu,list,"Font Options", MENU_FILE_SWITCH, setting_data);
add_setting_entry(menu,list,"Audio Options", MENU_FILE_SWITCH, setting_data);
add_setting_entry(menu,list,"Input Options", MENU_FILE_SWITCH, setting_data);
@ -479,6 +479,46 @@ int menu_entries_push_list(menu_handle_t *menu,
add_setting_entry(menu,list,"joypad_autoconfig_dir", 0, setting_data);
add_setting_entry(menu,list,"extraction_directory", 0, setting_data);
}
else if (!strcmp(label, "Shader Options"))
{
struct gfx_shader *shader = (struct gfx_shader*)menu->shader;
if (!shader)
return -1;
file_list_clear(list);
file_list_push(list, "Apply Shader Changes", "shader_apply_changes",
MENU_FILE_SWITCH, 0);
file_list_push(list, "Default Filter", "",
MENU_SETTINGS_SHADER_FILTER, 0);
file_list_push(list, "Load Shader Preset", "",
MENU_SETTINGS_SHADER_PRESET, 0);
file_list_push(list, "Save As Shader Preset", "",
MENU_SETTINGS_SHADER_PRESET_SAVE, 0);
file_list_push(list, "Parameters (Current)", "",
MENU_SETTINGS_SHADER_PARAMETERS, 0);
file_list_push(list, "Parameters (Menu)", "",
MENU_SETTINGS_SHADER_PRESET_PARAMETERS, 0);
file_list_push(list, "Shader Passes", "",
MENU_SETTINGS_SHADER_PASSES, 0);
for (i = 0; i < shader->passes; i++)
{
char buf[64];
snprintf(buf, sizeof(buf), "Shader #%u", i);
file_list_push(list, buf, "",
MENU_SETTINGS_SHADER_0 + 3 * i, 0);
snprintf(buf, sizeof(buf), "Shader #%u Filter", i);
file_list_push(list, buf, "",
MENU_SETTINGS_SHADER_0_FILTER + 3 * i, 0);
snprintf(buf, sizeof(buf), "Shader #%u Scale", i);
file_list_push(list, buf, "",
MENU_SETTINGS_SHADER_0_SCALE + 3 * i, 0);
}
}
else
{
switch (menu_type)
@ -497,47 +537,6 @@ int menu_entries_push_list(menu_handle_t *menu,
shader->parameters[i].desc, "",
MENU_SETTINGS_SHADER_PARAMETER_0 + i, 0);
menu->parameter_shader = shader;
break;
}
case MENU_SETTINGS_SHADER_OPTIONS:
{
struct gfx_shader *shader = (struct gfx_shader*)menu->shader;
if (!shader)
return -1;
file_list_clear(list);
file_list_push(list, "Apply Shader Changes", "shader_apply_changes",
MENU_FILE_SWITCH, 0);
file_list_push(list, "Default Filter", "",
MENU_SETTINGS_SHADER_FILTER, 0);
file_list_push(list, "Load Shader Preset", "",
MENU_SETTINGS_SHADER_PRESET, 0);
file_list_push(list, "Save As Shader Preset", "",
MENU_SETTINGS_SHADER_PRESET_SAVE, 0);
file_list_push(list, "Parameters (Current)", "",
MENU_SETTINGS_SHADER_PARAMETERS, 0);
file_list_push(list, "Parameters (Menu)", "",
MENU_SETTINGS_SHADER_PRESET_PARAMETERS, 0);
file_list_push(list, "Shader Passes", "",
MENU_SETTINGS_SHADER_PASSES, 0);
for (i = 0; i < shader->passes; i++)
{
char buf[64];
snprintf(buf, sizeof(buf), "Shader #%u", i);
file_list_push(list, buf, "",
MENU_SETTINGS_SHADER_0 + 3 * i, 0);
snprintf(buf, sizeof(buf), "Shader #%u Filter", i);
file_list_push(list, buf, "",
MENU_SETTINGS_SHADER_0_FILTER + 3 * i, 0);
snprintf(buf, sizeof(buf), "Shader #%u Scale", i);
file_list_push(list, buf, "",
MENU_SETTINGS_SHADER_0_SCALE + 3 * i, 0);
}
}
break;
case MENU_SETTINGS_DISK_OPTIONS: