aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeNew.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-04-18 18:40:33 +0000
committerJohannes Schickel2006-04-18 18:40:33 +0000
commit1ae205a2412eb0503e2ed26245f653e7047af982 (patch)
treef46a51592ebf59d043f47f7179c9909e8a74c509 /gui/ThemeNew.cpp
parent646a40b09b86e8977872128a5032f2882a78633d (diff)
downloadscummvm-rg350-1ae205a2412eb0503e2ed26245f653e7047af982.tar.gz
scummvm-rg350-1ae205a2412eb0503e2ed26245f653e7047af982.tar.bz2
scummvm-rg350-1ae205a2412eb0503e2ed26245f653e7047af982.zip
- adds own drawing function for (not expanded) popup widgets
- adds pixmaps, colorfades, and gradient factor for the (not expanded) popup widget in new theme - bumps themeconfig version svn-id: r22011
Diffstat (limited to 'gui/ThemeNew.cpp')
-rw-r--r--gui/ThemeNew.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/gui/ThemeNew.cpp b/gui/ThemeNew.cpp
index 36575c0e04..51080d160f 100644
--- a/gui/ThemeNew.cpp
+++ b/gui/ThemeNew.cpp
@@ -38,7 +38,7 @@
#define kShadowTr3 64
#define kShadowTr4 128
-#define THEME_VERSION 8
+#define THEME_VERSION 9
using Graphics::Surface;
@@ -211,6 +211,11 @@ _lastUsedBitMask(0), _forceRedraw(false), _fonts(), _imageHandles(0), _images(0)
_configFile.getKey("button_bkgd", "pixmaps", imageHandlesTable[kButtonBkgd]);
_configFile.getKey("theme_logo", "pixmaps", imageHandlesTable[kThemeLogo]);
+
+ _configFile.getKey("popupwidget_corner", "pixmaps", imageHandlesTable[kPopUpWidgetBkgdCorner]);
+ _configFile.getKey("popupwidget_top", "pixmaps", imageHandlesTable[kPopUpWidgetBkgdTop]);
+ _configFile.getKey("popupwidget_left", "pixmaps", imageHandlesTable[kPopUpWidgetBkgdLeft]);
+ _configFile.getKey("popupwidget_bkgd", "pixmaps", imageHandlesTable[kPopUpWidgetBkgd]);
// load the gradient factors from the config file
getFactorFromConfig(_configFile, "main_dialog", _gradientFactors[kMainDialogFactor]);
@@ -229,6 +234,8 @@ _lastUsedBitMask(0), _forceRedraw(false), _fonts(), _imageHandles(0), _images(0)
getFactorFromConfig(_configFile, "scrollbar", _gradientFactors[kScrollbarFactor]);
getFactorFromConfig(_configFile, "scrollbar_background", _gradientFactors[kScrollbarBkgdFactor]);
+
+ getFactorFromConfig(_configFile, "popupwidget", _gradientFactors[kPopUpWidgetFactor]);
// load values with default values from the config file
getExtraValueFromConfig(_configFile, "shadow_left_width", _shadowLeftWidth, 2);
@@ -616,6 +623,38 @@ void ThemeNew::drawSlider(const Common::Rect &r, int width, kState state) {
addDirtyRect(r);
}
+void ThemeNew::drawPopUpWidget(const Common::Rect &r, const Common::String &sel, int deltax, kState state, kTextAlign align) {
+ if (!_initOk)
+ return;
+
+ OverlayColor start = _colors[kPopUpWidgetStart], end = _colors[kPopUpWidgetEnd];
+ if (state == kStateHighlight) {
+ start = _colors[kPopUpWidgetHighlightStart];
+ end = _colors[kPopUpWidgetHighlightEnd];
+ }
+
+ drawRectMasked(r, surface(kPopUpWidgetBkgdCorner), surface(kPopUpWidgetBkgdTop), surface(kPopUpWidgetBkgdLeft), surface(kPopUpWidgetBkgd),
+ (state == kStateDisabled) ? -30 : 256, start, end, _gradientFactors[kPopUpWidgetFactor]);
+
+ const Graphics::Surface *arrow = surface(kWidgetArrow);
+ Common::Rect arrowRect(r.right - 4 - arrow->w, r.top + 4, r.right - 4, r.top + 4 + arrow->h);
+ arrowRect.clip(r);
+
+ drawSurface(arrowRect, arrow, false, false, (state == kStateDisabled) ? -30 : 256);
+
+ arrowRect.top += arrow->h + 1;
+ arrowRect.bottom += arrow->h + 1;
+ arrowRect.clip(r);
+ drawSurface(arrowRect, arrow, true, false, (state == kStateDisabled) ? -30 : 256);
+
+ if (sel != "") {
+ Common::Rect text(r.left + 2, r.top + 3, r.right - 4, r.top + 3 + getFont()->getFontHeight());
+ getFont()->drawString(&_screen, sel, text.left, text.top, text.width(), getColor(state), convertAligment(align), deltax, false);
+ }
+
+ addDirtyRect(r);
+}
+
void ThemeNew::drawCheckbox(const Common::Rect &r, const Common::String &str, bool checked, kState state) {
if (!_initOk)
return;
@@ -1236,6 +1275,11 @@ void ThemeNew::setupColors() {
getColorFromConfig(_configFile, "scrollbar_slider_highlight_end", _colors[kScrollbarSliderHighlightEnd]);
getColorFromConfig(_configFile, "caret_color", _colors[kCaretColor]);
+
+ getColorFromConfig(_configFile, "popupwidget_start", _colors[kPopUpWidgetStart]);
+ getColorFromConfig(_configFile, "pupupwidget_end", _colors[kPopUpWidgetEnd]);
+ getColorFromConfig(_configFile, "popupwidget_highlight_start", _colors[kPopUpWidgetHighlightStart]);
+ getColorFromConfig(_configFile, "popupwidget_highlight_end", _colors[kPopUpWidgetHighlightEnd]);
}
#define FONT_NAME_NORMAL "newgui_normal"