[Scummvm-cvs-logs] CVS: scummvm/gui ThemeNew.cpp,1.17,1.18 theme.h,1.5,1.6

Johannes Schickel lordhoto at users.sourceforge.net
Tue Jan 31 13:32:05 CET 2006


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27687

Modified Files:
	ThemeNew.cpp theme.h 
Log Message:
Fixes color bugs with the new theme when switching to fullscreen on Mac OS X.


Index: ThemeNew.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/ThemeNew.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- ThemeNew.cpp	31 Jan 2006 19:35:33 -0000	1.17
+++ ThemeNew.cpp	31 Jan 2006 21:31:30 -0000	1.18
@@ -59,7 +59,7 @@
 
 namespace GUI {
 ThemeNew::ThemeNew(OSystem *system, Common::String stylefile) : Theme(), _system(system), _screen(), _initOk(false),
-_forceRedraw(false), _font(0), _imageHandles(0), _images(0), _colors(), _gradientFactors() {
+_lastUsedBitMask(0), _forceRedraw(false), _font(0), _imageHandles(0), _images(0), _colors(), _gradientFactors() {
 	_initOk = false;
 	memset(&_screen, 0, sizeof(_screen));
 	memset(&_dialog, 0, sizeof(_dialog));
@@ -179,45 +179,7 @@
 	_configFile.getKey("button_bkgd", "pixmaps", imageHandlesTable[kButtonBkgd]);
 	
 	// load the colors from the config file
-	getColorFromConfig(_configFile, "main_dialog_start", _colors[kMainDialogStart]);
-	getColorFromConfig(_configFile, "main_dialog_end", _colors[kMainDialogEnd]);
-	
-	getColorFromConfig(_configFile, "dialog_start", _colors[kDialogStart]);
-	getColorFromConfig(_configFile, "dialog_end", _colors[kDialogEnd]);
-	
-	getColorFromConfig(_configFile, "color_state_disabled", _colors[kColorStateDisabled]);
-	getColorFromConfig(_configFile, "color_state_highlight", _colors[kColorStateHighlight]);
-	getColorFromConfig(_configFile, "color_state_enabled", _colors[kColorStateEnabled]);
-	getColorFromConfig(_configFile, "color_transparency", _colors[kColorTransparency]);
-	
-	getColorFromConfig(_configFile, "text_inverted_background", _colors[kTextInvertedBackground]);
-	getColorFromConfig(_configFile, "text_inverted_color", _colors[kTextInvertedColor]);
-	
-	getColorFromConfig(_configFile, "widget_bkgd_start", _colors[kWidgetBackgroundStart]);
-	getColorFromConfig(_configFile, "widget_bkgd_end", _colors[kWidgetBackgroundEnd]);
-	getColorFromConfig(_configFile, "widget_bkgd_small_start", _colors[kWidgetBackgroundSmallStart]);
-	getColorFromConfig(_configFile, "widget_bkgd_small_end", _colors[kWidgetBackgroundSmallEnd]);
-	
-	getColorFromConfig(_configFile, "button_bkgd_start", _colors[kButtonBackgroundStart]);
-	getColorFromConfig(_configFile, "button_bkgd_end", _colors[kButtonBackgroundEnd]);
-	getColorFromConfig(_configFile, "button_text_enabled", _colors[kButtonTextEnabled]);
-	getColorFromConfig(_configFile, "button_text_disabled", _colors[kButtonTextDisabled]);
-	getColorFromConfig(_configFile, "button_text_highlight", _colors[kButtonTextHighlight]);
-	
-	getColorFromConfig(_configFile, "slider_background_start", _colors[kSliderBackgroundStart]);
-	getColorFromConfig(_configFile, "slider_background_end", _colors[kSliderBackgroundEnd]);
-	getColorFromConfig(_configFile, "slider_start", _colors[kSliderStart]);
-	getColorFromConfig(_configFile, "slider_end", _colors[kSliderEnd]);
-	
-	getColorFromConfig(_configFile, "tab_background_start", _colors[kTabBackgroundStart]);
-	getColorFromConfig(_configFile, "tab_background_end", _colors[kTabBackgroundEnd]);
-	
-	getColorFromConfig(_configFile, "scrollbar_background_start", _colors[kScrollbarBackgroundStart]);
-	getColorFromConfig(_configFile, "scrollbar_background_end", _colors[kScrollbarBackgroundEnd]);
-	getColorFromConfig(_configFile, "scrollbar_button_start", _colors[kScrollbarButtonStart]);
-	getColorFromConfig(_configFile, "scrollbar_button_end", _colors[kScrollbarButtonEnd]);
-	getColorFromConfig(_configFile, "scrollbar_slider_start", _colors[kScrollbarSliderStart]);
-	getColorFromConfig(_configFile, "scrollbar_slider_end", _colors[kScrollbarSliderEnd]);
+	setupColors();
 	
 	getColorFromConfig(_configFile, "caret_color", _colors[kCaretColor]);
 	
@@ -248,6 +210,8 @@
 		ImageMan.registerSurface(_imageHandles[i], 0);
 		_images[i] = ImageMan.getSurface(_imageHandles[i]);
 	}
+	
+	_lastUsedBitMask = gBitFormat;
 }
 
 ThemeNew::~ThemeNew() {
@@ -295,11 +259,13 @@
 
 void ThemeNew::refresh() {
 	init();
+	resetupGuiRenderer();
 	_system->showOverlay();
 }
 
 void ThemeNew::enable() {
 	init();
+	resetupGuiRenderer();
 	resetDrawArea();
 	_system->showOverlay();
 	clearAll();
@@ -896,4 +862,66 @@
 	return _colors[kColorStateEnabled];
 }
 
+void ThemeNew::resetupGuiRenderer() {
+	if (_lastUsedBitMask == gBitFormat || !_initOk) {
+		// ok same format no need to reload
+		return;
+	}
+	
+	_lastUsedBitMask = gBitFormat;
+	
+	for (int i = 0; i < kImageHandlesMax; ++i) {
+		ImageMan.unregisterSurface(_imageHandles[i]);
+	}
+	
+	for (int i = 0; i < kImageHandlesMax; ++i) {
+		ImageMan.registerSurface(_imageHandles[i], 0);
+		_images[i] = ImageMan.getSurface(_imageHandles[i]);
+	}
+	
+	setupColors();
+}
+
+void ThemeNew::setupColors() {
+	// load the colors from the config file
+	getColorFromConfig(_configFile, "main_dialog_start", _colors[kMainDialogStart]);
+	getColorFromConfig(_configFile, "main_dialog_end", _colors[kMainDialogEnd]);
+	
+	getColorFromConfig(_configFile, "dialog_start", _colors[kDialogStart]);
+	getColorFromConfig(_configFile, "dialog_end", _colors[kDialogEnd]);
+	
+	getColorFromConfig(_configFile, "color_state_disabled", _colors[kColorStateDisabled]);
+	getColorFromConfig(_configFile, "color_state_highlight", _colors[kColorStateHighlight]);
+	getColorFromConfig(_configFile, "color_state_enabled", _colors[kColorStateEnabled]);
+	getColorFromConfig(_configFile, "color_transparency", _colors[kColorTransparency]);
+	
+	getColorFromConfig(_configFile, "text_inverted_background", _colors[kTextInvertedBackground]);
+	getColorFromConfig(_configFile, "text_inverted_color", _colors[kTextInvertedColor]);
+	
+	getColorFromConfig(_configFile, "widget_bkgd_start", _colors[kWidgetBackgroundStart]);
+	getColorFromConfig(_configFile, "widget_bkgd_end", _colors[kWidgetBackgroundEnd]);
+	getColorFromConfig(_configFile, "widget_bkgd_small_start", _colors[kWidgetBackgroundSmallStart]);
+	getColorFromConfig(_configFile, "widget_bkgd_small_end", _colors[kWidgetBackgroundSmallEnd]);
+	
+	getColorFromConfig(_configFile, "button_bkgd_start", _colors[kButtonBackgroundStart]);
+	getColorFromConfig(_configFile, "button_bkgd_end", _colors[kButtonBackgroundEnd]);
+	getColorFromConfig(_configFile, "button_text_enabled", _colors[kButtonTextEnabled]);
+	getColorFromConfig(_configFile, "button_text_disabled", _colors[kButtonTextDisabled]);
+	getColorFromConfig(_configFile, "button_text_highlight", _colors[kButtonTextHighlight]);
+	
+	getColorFromConfig(_configFile, "slider_background_start", _colors[kSliderBackgroundStart]);
+	getColorFromConfig(_configFile, "slider_background_end", _colors[kSliderBackgroundEnd]);
+	getColorFromConfig(_configFile, "slider_start", _colors[kSliderStart]);
+	getColorFromConfig(_configFile, "slider_end", _colors[kSliderEnd]);
+	
+	getColorFromConfig(_configFile, "tab_background_start", _colors[kTabBackgroundStart]);
+	getColorFromConfig(_configFile, "tab_background_end", _colors[kTabBackgroundEnd]);
+	
+	getColorFromConfig(_configFile, "scrollbar_background_start", _colors[kScrollbarBackgroundStart]);
+	getColorFromConfig(_configFile, "scrollbar_background_end", _colors[kScrollbarBackgroundEnd]);
+	getColorFromConfig(_configFile, "scrollbar_button_start", _colors[kScrollbarButtonStart]);
+	getColorFromConfig(_configFile, "scrollbar_button_end", _colors[kScrollbarButtonEnd]);
+	getColorFromConfig(_configFile, "scrollbar_slider_start", _colors[kScrollbarSliderStart]);
+	getColorFromConfig(_configFile, "scrollbar_slider_end", _colors[kScrollbarSliderEnd]);
+}
 } // end of namespace GUI 

Index: theme.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/theme.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- theme.h	31 Jan 2006 20:19:47 -0000	1.5
+++ theme.h	31 Jan 2006 21:31:31 -0000	1.6
@@ -286,6 +286,10 @@
 
 	bool _initOk;
 	bool _forceRedraw;
+	
+	int _lastUsedBitMask;
+	void resetupGuiRenderer();
+	void setupColors();
 
 	void restoreBackground(Common::Rect r);
 	OverlayColor getColor(kState state);





More information about the Scummvm-git-logs mailing list