diff options
Diffstat (limited to 'gui/options.cpp')
-rw-r--r-- | gui/options.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gui/options.cpp b/gui/options.cpp index ae88781b71..5b62d493c4 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -159,6 +159,9 @@ void OptionsDialog::init() { _fullscreenCheckbox = 0; _filteringCheckbox = 0; _aspectCheckbox = 0; + _enableShaderSettings = false; + _shaderPopUpDesc = 0; + _shaderPopUp = 0; _enableAudioSettings = false; _midiPopUp = 0; _midiPopUpDesc = 0; @@ -315,6 +318,14 @@ void OptionsDialog::build() { } + // Shader options + if (g_system->hasFeature(OSystem::kFeatureShader)) { + if (_shaderPopUp) { + int value = ConfMan.getInt("shader", _domain); + _shaderPopUp->setSelected(value); + } + } + // Audio options if (!loadMusicDeviceSetting(_midiPopUp, "music_driver")) _midiPopUp->setSelected(0); @@ -549,6 +560,18 @@ void OptionsDialog::apply() { } } + // Shader options + if (_enableShaderSettings) { + if (g_system->hasFeature(OSystem::kFeatureShader)) { + if (_shaderPopUp) { + if (ConfMan.getInt("shader", _domain) != _shaderPopUp->getSelectedTag()) { + ConfMan.setInt("shader", _shaderPopUp->getSelectedTag(), _domain); + g_system->setShader(_shaderPopUp->getSelectedTag()); + } + } + } + } + // Control options if (_enableControlSettings) { if (g_system->hasFeature(OSystem::kFeatureOnScreenControl)) { @@ -967,6 +990,23 @@ void OptionsDialog::addControlControls(GuiObject *boss, const Common::String &pr _enableControlSettings = true; } +void OptionsDialog::addShaderControls(GuiObject *boss, const Common::String &prefix) { + // Shader selector + if (g_system->hasFeature(OSystem::kFeatureShader)) { + if (g_system->getOverlayWidth() > 320) + _shaderPopUpDesc = new StaticTextWidget(boss, prefix + "grShaderPopUpDesc", _("HW Shader:"), _("Different hardware shaders give different visual effects")); + else + _shaderPopUpDesc = new StaticTextWidget(boss, prefix + "grShaderPopUpDesc", _c("HW Shader:", "lowres"), _("Different hardware shaders give different visual effects")); + _shaderPopUp = new PopUpWidget(boss, prefix + "grShaderPopUp", _("Different shaders give different visual effects")); + const OSystem::GraphicsMode *p = g_system->getSupportedShaders(); + while (p->name) { + _shaderPopUp->appendEntry(p->name, p->id); + p++; + } + } + _enableShaderSettings = true; +} + void OptionsDialog::addGraphicControls(GuiObject *boss, const Common::String &prefix) { const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes(); Common::String context; @@ -1422,6 +1462,15 @@ void GlobalOptionsDialog::build() { addGraphicControls(tab, "GlobalOptions_Graphics."); // + // The shader tab (currently visible only for Vita platform), visibility checking by features + // + + if (g_system->hasFeature(OSystem::kFeatureShader)) { + tab->addTab(_("Shader")); + addShaderControls(tab, "GlobalOptions_Shader."); + } + + // // The control tab (currently visible only for AndroidSDL, SDL, and Vita platform, visibility checking by features // if (g_system->hasFeature(OSystem::kFeatureTouchpadMode) || |