[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