aboutsummaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorJohannes Schickel2006-01-31 21:31:31 +0000
committerJohannes Schickel2006-01-31 21:31:31 +0000
commitda9b8d71ae5836263d9a4b84f72dbf7bc5afac7f (patch)
treee65d5c46ae109a8491096d8117b880e15b4d3b43 /gui
parent669f86705d18d08ab69c602925995b602617027d (diff)
downloadscummvm-rg350-da9b8d71ae5836263d9a4b84f72dbf7bc5afac7f.tar.gz
scummvm-rg350-da9b8d71ae5836263d9a4b84f72dbf7bc5afac7f.tar.bz2
scummvm-rg350-da9b8d71ae5836263d9a4b84f72dbf7bc5afac7f.zip
Fixes color bugs with the new theme when switching to fullscreen on Mac OS X.
svn-id: r20338
Diffstat (limited to 'gui')
-rw-r--r--gui/ThemeNew.cpp108
-rw-r--r--gui/theme.h4
2 files changed, 72 insertions, 40 deletions
diff --git a/gui/ThemeNew.cpp b/gui/ThemeNew.cpp
index 17d4e69e29..f0c59b42f0 100644
--- a/gui/ThemeNew.cpp
+++ b/gui/ThemeNew.cpp
@@ -59,7 +59,7 @@ static void getFactorFromConfig(const Common::ConfigFile &cfg, const Common::Str
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 @@ _forceRedraw(false), _font(0), _imageHandles(0), _images(0), _colors(), _gradien
_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 @@ _forceRedraw(false), _font(0), _imageHandles(0), _images(0), _colors(), _gradien
ImageMan.registerSurface(_imageHandles[i], 0);
_images[i] = ImageMan.getSurface(_imageHandles[i]);
}
+
+ _lastUsedBitMask = gBitFormat;
}
ThemeNew::~ThemeNew() {
@@ -295,11 +259,13 @@ void ThemeNew::deinit() {
void ThemeNew::refresh() {
init();
+ resetupGuiRenderer();
_system->showOverlay();
}
void ThemeNew::enable() {
init();
+ resetupGuiRenderer();
resetDrawArea();
_system->showOverlay();
clearAll();
@@ -896,4 +862,66 @@ OverlayColor ThemeNew::getColor(kState state) {
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
diff --git a/gui/theme.h b/gui/theme.h
index 3316c001eb..5b25978852 100644
--- a/gui/theme.h
+++ b/gui/theme.h
@@ -286,6 +286,10 @@ private:
bool _initOk;
bool _forceRedraw;
+
+ int _lastUsedBitMask;
+ void resetupGuiRenderer();
+ void setupColors();
void restoreBackground(Common::Rect r);
OverlayColor getColor(kState state);