[Scummvm-cvs-logs] SF.net SVN: scummvm:[34867] scummvm/trunk/gui
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Wed Oct 29 21:45:28 CET 2008
Revision: 34867
http://scummvm.svn.sourceforge.net/scummvm/?rev=34867&view=rev
Author: lordhoto
Date: 2008-10-29 20:45:28 +0000 (Wed, 29 Oct 2008)
Log Message:
-----------
Store names for renderer configuration in config file instead of integers.
Modified Paths:
--------------
scummvm/trunk/gui/ThemeEngine.cpp
scummvm/trunk/gui/ThemeEngine.h
scummvm/trunk/gui/newgui.cpp
scummvm/trunk/gui/options.cpp
Modified: scummvm/trunk/gui/ThemeEngine.cpp
===================================================================
--- scummvm/trunk/gui/ThemeEngine.cpp 2008-10-29 20:05:59 UTC (rev 34866)
+++ scummvm/trunk/gui/ThemeEngine.cpp 2008-10-29 20:45:28 UTC (rev 34867)
@@ -45,15 +45,41 @@
using namespace Graphics;
-const char *ThemeEngine::rendererModeLabels[] = {
- "Disabled GFX",
- "Standard Renderer (16bpp)",
+const ThemeEngine::Renderer ThemeEngine::_rendererModes[] = {
+ { "Disabled GFX", "none", kGfxDisabled },
+ { "Standard Renderer (16bpp)", "normal_16bpp", kGfxStandard16bit },
#ifndef DISABLE_FANCY_THEMES
- "Antialiased Renderer (16bpp)"
+ { "Antialiased Renderer (16bpp)", "aa_16bpp", kGfxAntialias16bit }
#endif
};
+const uint ThemeEngine::_rendererModesSize = ARRAYSIZE(ThemeEngine::_rendererModes);
+const ThemeEngine::GraphicsMode ThemeEngine::_defaultRendererMode =
+#ifndef DISABLE_FANCY_THEMES
+ ThemeEngine::kGfxAntialias16bit;
+#else
+ ThemeEngine::kGfxStandard16bit;
+#endif
+
+ThemeEngine::GraphicsMode ThemeEngine::findMode(const Common::String &cfg) {
+ for (uint i = 0; i < _rendererModesSize; ++i) {
+ if (cfg.equalsIgnoreCase(_rendererModes[i].cfg))
+ return _rendererModes[i].mode;
+ }
+
+ return kGfxDisabled;
+}
+
+const char *ThemeEngine::findModeConfigName(GraphicsMode mode) {
+ for (uint i = 0; i < _rendererModesSize; ++i) {
+ if (mode == _rendererModes[i].mode)
+ return _rendererModes[i].cfg;
+ }
+
+ return findModeConfigName(kGfxDisabled);
+}
+
/**********************************************************
* ThemeItem functions for drawing queues.
*********************************************************/
Modified: scummvm/trunk/gui/ThemeEngine.h
===================================================================
--- scummvm/trunk/gui/ThemeEngine.h 2008-10-29 20:05:59 UTC (rev 34866)
+++ scummvm/trunk/gui/ThemeEngine.h 2008-10-29 20:45:28 UTC (rev 34867)
@@ -238,16 +238,25 @@
enum GraphicsMode {
kGfxDisabled = 0, /** No GFX */
kGfxStandard16bit, /** 2BPP with the standard (aliased) renderer. */
-#ifndef DISABLE_FANCY_THEMES
- kGfxAntialias16bit, /** 2BPP with the optimized AA renderer. */
-#endif
- kGfxMAX
+ kGfxAntialias16bit /** 2BPP with the optimized AA renderer. */
};
/** Constant value to expand dirty rectangles, to make sure they are fully copied */
static const int kDirtyRectangleThreshold = 1;
- static const char *rendererModeLabels[];
+ struct Renderer {
+ const char *name;
+ const char *cfg;
+ GraphicsMode mode;
+ };
+
+ static const Renderer _rendererModes[];
+ static const uint _rendererModesSize;
+
+ static const GraphicsMode _defaultRendererMode;
+
+ static GraphicsMode findMode(const Common::String &cfg);
+ static const char *findModeConfigName(GraphicsMode mode);
/** Default constructor */
ThemeEngine(Common::String fileName, GraphicsMode mode);
Modified: scummvm/trunk/gui/newgui.cpp
===================================================================
--- scummvm/trunk/gui/newgui.cpp 2008-10-29 20:05:59 UTC (rev 34866)
+++ scummvm/trunk/gui/newgui.cpp 2008-10-29 20:45:28 UTC (rev 34867)
@@ -93,12 +93,8 @@
if (themefile.compareToIgnoreCase("default") == 0)
themefile = "builtin";
-#ifndef DISABLE_FANCY_THEMES
- ConfMan.registerDefault("gui_renderer", 2);
-#else
- ConfMan.registerDefault("gui_renderer", 1);
-#endif
- ThemeEngine::GraphicsMode gfxMode = (ThemeEngine::GraphicsMode)ConfMan.getInt("gui_renderer");
+ ConfMan.registerDefault("gui_renderer", ThemeEngine::findModeConfigName(ThemeEngine::_defaultRendererMode));
+ ThemeEngine::GraphicsMode gfxMode = (ThemeEngine::GraphicsMode)ThemeEngine::findMode(ConfMan.get("gui_renderer"));
loadNewTheme(themefile, gfxMode);
_themeChange = false;
@@ -115,7 +111,7 @@
Common::String oldTheme = (_theme != 0) ? _theme->getThemeFileName() : "";
if (gfx == ThemeEngine::kGfxDisabled)
- gfx = (ThemeEngine::GraphicsMode)ConfMan.getInt("gui_renderer");
+ gfx = ThemeEngine::_defaultRendererMode;
if (_theme)
_theme->disable();
Modified: scummvm/trunk/gui/options.cpp
===================================================================
--- scummvm/trunk/gui/options.cpp 2008-10-29 20:05:59 UTC (rev 34866)
+++ scummvm/trunk/gui/options.cpp 2008-10-29 20:45:28 UTC (rev 34867)
@@ -736,9 +736,8 @@
_rendererPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.Renderer", "GUI Renderer:", labelWidth);
- for (int i = 1; i < GUI::ThemeEngine::kGfxMAX; ++i) {
- _rendererPopUp->appendEntry(GUI::ThemeEngine::rendererModeLabels[i], i);
- }
+ for (uint i = 1; i < GUI::ThemeEngine::_rendererModesSize; ++i)
+ _rendererPopUp->appendEntry(GUI::ThemeEngine::_rendererModes[i].name, GUI::ThemeEngine::_rendererModes[i].mode);
_autosavePeriodPopUp = new PopUpWidget(tab, "GlobalOptions_Misc.AutosavePeriod", "Autosave:", labelWidth);
@@ -813,7 +812,10 @@
_autosavePeriodPopUp->setSelected(i);
}
- _rendererPopUp->setSelected(ConfMan.getInt("gui_renderer") - 1);
+ ThemeEngine::GraphicsMode mode = ThemeEngine::findMode(ConfMan.get("gui_renderer"));
+ if (mode == ThemeEngine::kGfxDisabled)
+ mode = ThemeEngine::_defaultRendererMode;
+ _rendererPopUp->setSelectedTag(mode);
}
void GlobalOptionsDialog::close() {
@@ -844,9 +846,11 @@
ConfMan.setInt("autosave_period", _autosavePeriodPopUp->getSelectedTag(), _domain);
- if ((int)_rendererPopUp->getSelectedTag() != ConfMan.getInt("gui_renderer")) {
- g_gui.loadNewTheme(g_gui.theme()->getThemeFileName(), (GUI::ThemeEngine::GraphicsMode)_rendererPopUp->getSelectedTag());
- ConfMan.setInt("gui_renderer", _rendererPopUp->getSelectedTag(), _domain);
+ GUI::ThemeEngine::GraphicsMode selected = (GUI::ThemeEngine::GraphicsMode)_rendererPopUp->getSelectedTag();
+ const char *cfg = GUI::ThemeEngine::findModeConfigName(selected);
+ if (!ConfMan.get("gui_renderer").equalsIgnoreCase(cfg)) {
+ g_gui.loadNewTheme(g_gui.theme()->getThemeFileName(), selected);
+ ConfMan.set("gui_renderer", cfg, _domain);
}
}
OptionsDialog::close();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list