(Menu) Refactor overlay_scale/overlay_opacity

This commit is contained in:
twinaphex 2014-07-17 06:35:29 +02:00
parent 9f5ee4564d
commit ef6d1453f5
2 changed files with 44 additions and 37 deletions

View File

@ -396,8 +396,16 @@ static void menu_common_entries_init(void *data, unsigned menu_type)
file_list_clear(menu->selection_buf);
file_list_push(menu->selection_buf, "Overlay Enable", MENU_SETTINGS_OVERLAY_ENABLE, 0);
file_list_push(menu->selection_buf, "Overlay Preset", MENU_SETTINGS_OVERLAY_PRESET, 0);
file_list_push(menu->selection_buf, "Overlay Opacity", MENU_SETTINGS_OVERLAY_OPACITY, 0);
file_list_push(menu->selection_buf, "Overlay Scale", MENU_SETTINGS_OVERLAY_SCALE, 0);
if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "input_overlay_opacity")))
{
*current_setting->value.fraction = g_settings.input.overlay_opacity;
file_list_push(menu->selection_buf, current_setting->short_description, MENU_SETTINGS_OVERLAY_OPACITY, 0);
}
if ((current_setting = setting_data_find_setting(setting_data, "input_overlay_scale")))
{
*current_setting->value.fraction = g_settings.input.overlay_scale;
file_list_push(menu->selection_buf, current_setting->short_description, MENU_SETTINGS_OVERLAY_SCALE, 0);
}
break;
#ifdef HAVE_NETPLAY
case MENU_SETTINGS_NETPLAY_OPTIONS:
@ -3930,72 +3938,62 @@ static int menu_common_setting_set(unsigned setting, unsigned action)
break;
#ifdef HAVE_OVERLAY
case MENU_SETTINGS_OVERLAY_OPACITY:
if ((current_setting = setting_data_find_setting(setting_data, "input_overlay_opacity")))
{
bool changed = true;
switch (action)
{
case MENU_ACTION_LEFT:
g_settings.input.overlay_opacity -= 0.01f;
*current_setting->value.fraction = *current_setting->value.fraction - 0.01f;
if (g_settings.input.overlay_opacity < 0.0f)
g_settings.input.overlay_opacity = 0.0f;
if (*current_setting->value.fraction < current_setting->min)
*current_setting->value.fraction = current_setting->min;
break;
case MENU_ACTION_RIGHT:
case MENU_ACTION_OK:
g_settings.input.overlay_opacity += 0.01f;
*current_setting->value.fraction = *current_setting->value.fraction + 0.01f;
if (g_settings.input.overlay_opacity > 1.0f)
g_settings.input.overlay_opacity = 1.0f;
if (*current_setting->value.fraction > current_setting->max)
*current_setting->value.fraction = current_setting->max;
break;
case MENU_ACTION_START:
g_settings.input.overlay_opacity = 0.7f;
break;
default:
changed = false;
*current_setting->value.fraction = current_setting->default_value.fraction;
break;
}
if (changed && driver.overlay)
input_overlay_set_alpha_mod(driver.overlay,
g_settings.input.overlay_opacity);
if (current_setting->change_handler)
current_setting->change_handler(current_setting);
break;
}
case MENU_SETTINGS_OVERLAY_SCALE:
if ((current_setting = setting_data_find_setting(setting_data, "input_overlay_scale")))
{
bool changed = true;
switch (action)
{
case MENU_ACTION_LEFT:
g_settings.input.overlay_scale -= 0.01f;
*current_setting->value.fraction = *current_setting->value.fraction - 0.01f;
if (g_settings.input.overlay_scale < 0.01f) // Avoid potential divide by zero.
g_settings.input.overlay_scale = 0.01f;
if (*current_setting->value.fraction < current_setting->min)
*current_setting->value.fraction = current_setting->min;
break;
case MENU_ACTION_RIGHT:
case MENU_ACTION_OK:
g_settings.input.overlay_scale += 0.01f;
*current_setting->value.fraction = *current_setting->value.fraction + 0.01f;
if (g_settings.input.overlay_scale > 2.0f)
g_settings.input.overlay_scale = 2.0f;
if (*current_setting->value.fraction > current_setting->max)
*current_setting->value.fraction = current_setting->max;
break;
case MENU_ACTION_START:
g_settings.input.overlay_scale = 1.0f;
break;
default:
changed = false;
*current_setting->value.fraction = current_setting->default_value.fraction;
break;
}
if (changed && driver.overlay)
input_overlay_set_scale_factor(driver.overlay,
g_settings.input.overlay_scale);
if (current_setting->change_handler)
current_setting->change_handler(current_setting);
break;
}
#endif

View File

@ -501,7 +501,12 @@ static void general_change_handler(const void *data)
}
}
else if (!strcmp(setting->name, "input_overlay_opacity"))
{
g_settings.input.overlay_opacity = *setting->value.fraction;
if (driver.overlay)
input_overlay_set_alpha_mod(driver.overlay,
g_settings.input.overlay_opacity);
}
else if (!strcmp(setting->name, "audio_enable"))
g_settings.audio.enable = *setting->value.boolean;
else if (!strcmp(setting->name, "audio_sync"))
@ -598,12 +603,16 @@ static void general_change_handler(const void *data)
}
else if (!strcmp(setting->name, "input_overlay_scale"))
{
if (*setting->value.fraction < 0.01f) // Avoid potential divide by zero.
g_settings.input.overlay_scale = 0.01f;
else if (*setting->value.fraction > 2.0f)
g_settings.input.overlay_scale = 2.0f;
if (*setting->value.fraction < setting->min) // Avoid potential divide by zero.
g_settings.input.overlay_scale = setting->min;
else if (*setting->value.fraction > setting->max)
g_settings.input.overlay_scale = setting->max;
else
g_settings.input.overlay_scale = *setting->value.fraction;
if (driver.overlay)
input_overlay_set_scale_factor(driver.overlay,
g_settings.input.overlay_scale);
}
else if (!strcmp(setting->name, "video_allow_rotate"))
g_settings.video.allow_rotate = *setting->value.boolean;
@ -1007,7 +1016,7 @@ rarch_setting_t* setting_data_get_list(void)
CONFIG_BOOL(g_settings.input.overlay_enable, "input_overlay_enable", "Overlay Enable", default_overlay_enable, GROUP_NAME, SUBGROUP_NAME, general_change_handler)
CONFIG_PATH(g_settings.input.overlay, "input_overlay", "Overlay Preset", "", GROUP_NAME, SUBGROUP_NAME, general_change_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY) WITH_VALUES("cfg")
CONFIG_FLOAT(g_settings.input.overlay_opacity, "input_overlay_opacity", "Overlay Opacity", 0.7f, GROUP_NAME, SUBGROUP_NAME, general_change_handler) WITH_RANGE(0, 1)
CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, GROUP_NAME, SUBGROUP_NAME, general_change_handler)
CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, GROUP_NAME, SUBGROUP_NAME, general_change_handler) WITH_RANGE(0, 2)
END_SUB_GROUP()
END_GROUP()
#endif