Config: Add support for enums
This makes it possible to use enums as the config type.
Default values are now clearer and there's no need for casts
when calling Config::Get/Set anymore.
In order to add support for enums, the common code was updated to
handle enums by using the underlying type when loading/saving settings.
A copy constructor is also provided for conversions from
`ConfigInfo<Enum>` to `ConfigInfo<underlying_type<Enum>>`
so that enum settings can still easily work with code that doesn't care
about the actual enum values (like Graphics{Choice,Radio} in DolphinQt2
which only treat the setting as an integer).
This commit is contained in:
@@ -1441,9 +1441,9 @@ void CFrame::ParseHotkeys()
|
||||
{
|
||||
show_msg(OSDMessage::ARToggled);
|
||||
// Toggle aspect ratio
|
||||
int aspect_ratio = Config::Get(Config::GFX_ASPECT_RATIO);
|
||||
int aspect_ratio = static_cast<int>(Config::Get(Config::GFX_ASPECT_RATIO));
|
||||
aspect_ratio = (aspect_ratio + 1) & 3;
|
||||
Config::SetCurrent(Config::GFX_ASPECT_RATIO, aspect_ratio);
|
||||
Config::SetCurrent(Config::GFX_ASPECT_RATIO, static_cast<AspectMode>(aspect_ratio));
|
||||
}
|
||||
if (IsHotkey(HK_TOGGLE_EFBCOPIES))
|
||||
{
|
||||
@@ -1526,11 +1526,11 @@ void CFrame::ParseHotkeys()
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_ENHANCE_POST_SHADER, "");
|
||||
}
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::SBS));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::SBS);
|
||||
}
|
||||
else
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::Off));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Off);
|
||||
}
|
||||
}
|
||||
if (IsHotkey(HK_TOGGLE_STEREO_TAB))
|
||||
@@ -1541,11 +1541,11 @@ void CFrame::ParseHotkeys()
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_ENHANCE_POST_SHADER, "");
|
||||
}
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::TAB));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::TAB);
|
||||
}
|
||||
else
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::Off));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Off);
|
||||
}
|
||||
}
|
||||
if (IsHotkey(HK_TOGGLE_STEREO_ANAGLYPH))
|
||||
@@ -1554,12 +1554,12 @@ void CFrame::ParseHotkeys()
|
||||
{
|
||||
// Setting the anaglyph mode also requires a specific
|
||||
// post-processing shader to be activated.
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::Anaglyph));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Anaglyph);
|
||||
Config::SetCurrent(Config::GFX_ENHANCE_POST_SHADER, "dubois");
|
||||
}
|
||||
else
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::Off));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Off);
|
||||
Config::SetCurrent(Config::GFX_ENHANCE_POST_SHADER, "");
|
||||
}
|
||||
}
|
||||
@@ -1571,11 +1571,11 @@ void CFrame::ParseHotkeys()
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_ENHANCE_POST_SHADER, "");
|
||||
}
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::Nvidia3DVision));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Nvidia3DVision);
|
||||
}
|
||||
else
|
||||
{
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, static_cast<int>(StereoMode::Off));
|
||||
Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Off);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -465,7 +465,8 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
||||
{
|
||||
szr_shader_compilation->Add(
|
||||
CreateRadioButton(page_general, modes[i].first, modes[i].second,
|
||||
Config::GFX_SHADER_COMPILATION_MODE, static_cast<int>(i)),
|
||||
Config::GFX_SHADER_COMPILATION_MODE,
|
||||
static_cast<ShaderCompilationMode>(i)),
|
||||
wxGBPosition(static_cast<int>(i / 2), static_cast<int>(i % 2)), wxDefaultSpan,
|
||||
wxALIGN_CENTER_VERTICAL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user