aboutsummaryrefslogtreecommitdiff
path: root/gui/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/options.cpp')
-rw-r--r--gui/options.cpp49
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) ||