mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
(Menu) Refactor overlay_scale/overlay_opacity
This commit is contained in:
parent
9f5ee4564d
commit
ef6d1453f5
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user