aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/rendermode.cpp41
-rw-r--r--common/rendermode.h6
-rw-r--r--gui/options.cpp29
-rw-r--r--gui/options.h2
4 files changed, 49 insertions, 29 deletions
diff --git a/common/rendermode.cpp b/common/rendermode.cpp
index 62b67faee5..1ca67c1878 100644
--- a/common/rendermode.cpp
+++ b/common/rendermode.cpp
@@ -22,6 +22,7 @@
#include "common/rendermode.h"
+#include "common/gui_options.h"
#include "common/str.h"
#include "common/translation.h"
@@ -43,6 +44,26 @@ const RenderModeDescription g_renderModes[] = {
{0, 0, kRenderDefault}
};
+struct RenderGUIOMapping {
+ RenderMode id;
+ const char *guio;
+};
+
+// TODO: Merge s_renderGUIOMapping into g_renderModes? the kRenderDefault
+// could be used to indicate "any" mode when passed to renderMode2GUIO (if
+// we wanted to merge allRenderModesGUIOs back into)
+static const RenderGUIOMapping s_renderGUIOMapping[] = {
+ { kRenderHercG, GUIO_RENDERHERCGREEN },
+ { kRenderHercA, GUIO_RENDERHERCAMBER },
+ { kRenderCGA, GUIO_RENDERCGA },
+ { kRenderEGA, GUIO_RENDEREGA },
+ { kRenderVGA, GUIO_RENDERVGA },
+ { kRenderAmiga, GUIO_RENDERAMIGA },
+ { kRenderFMTowns, GUIO_RENDERFMTOWNS },
+ { kRenderPC9821, GUIO_RENDERPC9821 },
+ { kRenderPC9801, GUIO_RENDERPC9801 }
+};
+
DECLARE_TRANSLATION_ADDITIONAL_CONTEXT("Hercules Green", "lowres")
DECLARE_TRANSLATION_ADDITIONAL_CONTEXT("Hercules Amber", "lowres")
@@ -77,5 +98,25 @@ const char *getRenderModeDescription(RenderMode id) {
return 0;
}
+String renderMode2GUIO(RenderMode id) {
+ Common::String res;
+
+ for (int i = 0; i < ARRAYSIZE(s_renderGUIOMapping); i++) {
+ if (id == s_renderGUIOMapping[i].id)
+ res += s_renderGUIOMapping[i].guio;
+ }
+
+ return res;
+}
+
+String allRenderModesGUIOs() {
+ Common::String res;
+
+ for (int i = 0; i < ARRAYSIZE(s_renderGUIOMapping); i++) {
+ res += s_renderGUIOMapping[i].guio;
+ }
+
+ return res;
+}
} // End of namespace Common
diff --git a/common/rendermode.h b/common/rendermode.h
index c2fece77ee..945c4e7d9d 100644
--- a/common/rendermode.h
+++ b/common/rendermode.h
@@ -61,6 +61,12 @@ extern RenderMode parseRenderMode(const String &str);
extern const char *getRenderModeCode(RenderMode id);
extern const char *getRenderModeDescription(RenderMode id);
+// TODO: Rename the following to something better; also, document it
+extern String renderMode2GUIO(RenderMode id);
+
+// TODO: Rename the following to something better; also, document it
+extern String allRenderModesGUIOs();
+
} // End of namespace Common
diff --git a/gui/options.cpp b/gui/options.cpp
index 5085f9cdd9..39f8d9ccb6 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -750,7 +750,7 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const Common::String &pr
}
// RenderMode popup
- const Common::String allFlags = renderType2GUIO((uint32)-1);
+ const Common::String allFlags = Common::allRenderModesGUIOs();
bool renderingTypeDefined = (strpbrk(_guioptions.c_str(), allFlags.c_str()) != NULL);
_renderModePopUpDesc = new StaticTextWidget(boss, prefix + "grRenderPopupDesc", _("Render mode:"), _("Special dithering modes supported by some games"));
@@ -759,7 +759,7 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const Common::String &pr
_renderModePopUp->appendEntry("");
const Common::RenderModeDescription *rm = Common::g_renderModes;
for (; rm->code; ++rm) {
- Common::String renderGuiOption = renderType2GUIO(rm->id);
+ Common::String renderGuiOption = Common::renderMode2GUIO(rm->id);
if ((_domain == Common::ConfigManager::kApplicationDomain) || (_domain != Common::ConfigManager::kApplicationDomain && !renderingTypeDefined) || (_guioptions.contains(renderGuiOption)))
_renderModePopUp->appendEntry(_c(rm->description, context), rm->id);
}
@@ -1040,31 +1040,6 @@ void OptionsDialog::saveMusicDeviceSetting(PopUpWidget *popup, Common::String se
ConfMan.removeKey(setting, _domain);
}
-Common::String OptionsDialog::renderType2GUIO(uint32 renderType) {
- static const struct {
- Common::RenderMode type;
- const char *guio;
- } renderGUIOMapping[] = {
- { Common::kRenderHercG, GUIO_RENDERHERCGREEN },
- { Common::kRenderHercA, GUIO_RENDERHERCAMBER },
- { Common::kRenderCGA, GUIO_RENDERCGA },
- { Common::kRenderEGA, GUIO_RENDEREGA },
- { Common::kRenderVGA, GUIO_RENDERVGA },
- { Common::kRenderAmiga, GUIO_RENDERAMIGA },
- { Common::kRenderFMTowns, GUIO_RENDERFMTOWNS },
- { Common::kRenderPC9821, GUIO_RENDERPC9821 },
- { Common::kRenderPC9801, GUIO_RENDERPC9801 }
- };
- Common::String res;
-
- for (int i = 0; i < ARRAYSIZE(renderGUIOMapping); i++) {
- if (renderType == renderGUIOMapping[i].type || renderType == (uint32)-1)
- res += renderGUIOMapping[i].guio;
- }
-
- return res;
-}
-
int OptionsDialog::getSubtitleMode(bool subtitles, bool speech_mute) {
if (_guioptions.contains(GUIO_NOSUBTITLES))
return kSubtitlesSpeech; // Speech only
diff --git a/gui/options.h b/gui/options.h
index 83c9d60d59..05b3cac617 100644
--- a/gui/options.h
+++ b/gui/options.h
@@ -85,8 +85,6 @@ protected:
bool loadMusicDeviceSetting(PopUpWidget *popup, Common::String setting, MusicType preferredType = MT_AUTO);
void saveMusicDeviceSetting(PopUpWidget *popup, Common::String setting);
- Common::String renderType2GUIO(uint32 renderType);
-
TabWidget *_tabWidget;
int _graphicsTabId;
int _midiTabId;