(Menu) Refactor shader pass string representation

This commit is contained in:
twinaphex 2014-09-05 00:41:03 +02:00
parent 082b22e670
commit 9913edc365
4 changed files with 58 additions and 105 deletions

View File

@ -280,90 +280,6 @@ static int menu_info_screen_iterate(unsigned action)
snprintf(msg, sizeof(msg),
" -- Toggles menu.");
break;
case MENU_SETTINGS_SHADER_0_FILTER + (0 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (1 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (2 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (3 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (4 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (5 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (6 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (7 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (8 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (9 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (10 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (11 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (12 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (13 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (14 * 3):
case MENU_SETTINGS_SHADER_0_FILTER + (15 * 3):
snprintf(msg, sizeof(msg),
" -- Hardware filter for this pass. \n"
" \n"
"If 'Don't Care' is set, 'Default \n"
"Filter' will be used."
);
break;
case MENU_SETTINGS_SHADER_0 + (0 * 3):
case MENU_SETTINGS_SHADER_0 + (1 * 3):
case MENU_SETTINGS_SHADER_0 + (2 * 3):
case MENU_SETTINGS_SHADER_0 + (3 * 3):
case MENU_SETTINGS_SHADER_0 + (4 * 3):
case MENU_SETTINGS_SHADER_0 + (5 * 3):
case MENU_SETTINGS_SHADER_0 + (6 * 3):
case MENU_SETTINGS_SHADER_0 + (7 * 3):
case MENU_SETTINGS_SHADER_0 + (8 * 3):
case MENU_SETTINGS_SHADER_0 + (9 * 3):
case MENU_SETTINGS_SHADER_0 + (10 * 3):
case MENU_SETTINGS_SHADER_0 + (11 * 3):
case MENU_SETTINGS_SHADER_0 + (12 * 3):
case MENU_SETTINGS_SHADER_0 + (13 * 3):
case MENU_SETTINGS_SHADER_0 + (14 * 3):
case MENU_SETTINGS_SHADER_0 + (15 * 3):
snprintf(msg, sizeof(msg),
" -- Path to shader. \n"
" \n"
"All shaders must be of the same \n"
"type (i.e. CG, GLSL or HLSL). \n"
" \n"
"Set Shader Directory to set where \n"
"the browser starts to look for \n"
"shaders."
);
break;
case MENU_SETTINGS_SHADER_0_SCALE + (0 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (1 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (2 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (3 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (4 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (5 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (6 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (7 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (8 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (9 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (10 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (11 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (12 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (13 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (14 * 3):
case MENU_SETTINGS_SHADER_0_SCALE + (15 * 3):
snprintf(msg, sizeof(msg),
" -- Scale for this pass. \n"
" \n"
"The scale factor accumulates, i.e. 2x \n"
"for first pass and 2x for second pass \n"
"will give you a 4x total scale. \n"
" \n"
"If there is a scale factor for last \n"
"pass, the result is stretched to \n"
"screen with the filter specified in \n"
"'Default Filter'. \n"
" \n"
"If 'Don't Care' is set, either 1x \n"
"scale or stretch to fullscreen will \n"
"be used depending if it's not the last \n"
"pass or not."
);
break;
default:
snprintf(msg, sizeof(msg),
"-- No info on this item available. --\n");

View File

@ -321,6 +321,10 @@ static int menu_common_shader_manager_setting_toggle(
return 0;
}
#if 1
RARCH_LOG("shader label: %s\n", label);
#endif
rarch_setting_t *current_setting = NULL;
rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list();
@ -376,13 +380,6 @@ static int menu_common_shader_manager_setting_toggle(
menu_setting_set(id, label, action);
else if (!strcmp(label, "video_shader_preset"))
{
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;
struct gfx_shader_pass *pass = NULL;
dist_shader /= 3;
if (shader)
pass = &shader->pass[dist_shader];
switch (action)
{
case MENU_ACTION_OK:
@ -393,15 +390,13 @@ static int menu_common_shader_manager_setting_toggle(
break;
case MENU_ACTION_START:
if (pass)
*pass->source.path = '\0';
break;
default:
break;
}
}
else if ((dist_shader % 3) == 0)
else if (!strcmp(label, "video_shader_pass"))
{
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;
@ -423,7 +418,7 @@ static int menu_common_shader_manager_setting_toggle(
break;
}
}
else if ((dist_filter % 3) == 0)
else if (!strcmp(label, "video_shader_filter_pass"))
{
dist_filter /= 3;
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;
@ -451,7 +446,7 @@ static int menu_common_shader_manager_setting_toggle(
break;
}
}
else if ((dist_scale % 3) == 0)
else if (!strcmp(label, "video_shader_scale_pass"))
{
dist_scale /= 3;
struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader;

View File

@ -634,12 +634,9 @@ void menu_build_scroll_indices(file_list_t *buf)
unsigned menu_common_type_is(const char *label, unsigned type)
{
if (
(
type >= MENU_SETTINGS_SHADER_0 &&
type <= MENU_SETTINGS_SHADER_LAST &&
(((type - MENU_SETTINGS_SHADER_0) % 3) == 0)
)
||
!strcmp(label, "video_shader_pass") ||
!strcmp(label, "video_shader_filter_pass") ||
!strcmp(label, "video_shader_scale_pass") ||
!strcmp(label, "video_shader_default_filter") ||
!strcmp(label, "video_shader_num_passes") ||
!strcmp(label, "video_shader_preset")

View File

@ -508,15 +508,15 @@ int menu_entries_push_list(menu_handle_t *menu,
char buf[64];
snprintf(buf, sizeof(buf), "Shader #%u", i);
file_list_push(list, buf, "",
file_list_push(list, buf, "video_shader_pass",
MENU_SETTINGS_SHADER_0 + 3 * i, 0);
snprintf(buf, sizeof(buf), "Shader #%u Filter", i);
file_list_push(list, buf, "",
file_list_push(list, buf, "video_shader_filter_pass",
MENU_SETTINGS_SHADER_0_FILTER + 3 * i, 0);
snprintf(buf, sizeof(buf), "Shader #%u Scale", i);
file_list_push(list, buf, "",
file_list_push(list, buf, "video_shader_scale_pass",
MENU_SETTINGS_SHADER_0_SCALE + 3 * i, 0);
}
}
@ -945,5 +945,50 @@ int menu_entries_get_description(const char *label,
);
return 0;
}
else if (!strcmp(label, "video_shader_pass"))
{
snprintf(msg, sizeof_msg,
" -- Path to shader. \n"
" \n"
"All shaders must be of the same \n"
"type (i.e. CG, GLSL or HLSL). \n"
" \n"
"Set Shader Directory to set where \n"
"the browser starts to look for \n"
"shaders."
);
return 0;
}
else if (!strcmp(label, "video_shader_filter_pass"))
{
snprintf(msg, sizeof_msg,
" -- Hardware filter for this pass. \n"
" \n"
"If 'Don't Care' is set, 'Default \n"
"Filter' will be used."
);
return 0;
}
else if (!strcmp(label, "video_shader_scale_pass"))
{
snprintf(msg, sizeof_msg,
" -- Scale for this pass. \n"
" \n"
"The scale factor accumulates, i.e. 2x \n"
"for first pass and 2x for second pass \n"
"will give you a 4x total scale. \n"
" \n"
"If there is a scale factor for last \n"
"pass, the result is stretched to \n"
"screen with the filter specified in \n"
"'Default Filter'. \n"
" \n"
"If 'Don't Care' is set, either 1x \n"
"scale or stretch to fullscreen will \n"
"be used depending if it's not the last \n"
"pass or not."
);
return 0;
}
return -1;
}