aboutsummaryrefslogtreecommitdiff
path: root/graphics/macgui/macwindow.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2016-09-04 00:33:38 +0200
committerTorbjörn Andersson2016-09-04 08:31:39 +0200
commit40c65540fac262fbd70478eb8017f260780fb1a4 (patch)
tree9866418945598f4b4c7e355d43969b30bc2303df /graphics/macgui/macwindow.cpp
parent29535c0a55410684a263b493b1c75112f352bab6 (diff)
downloadscummvm-rg350-40c65540fac262fbd70478eb8017f260780fb1a4.tar.gz
scummvm-rg350-40c65540fac262fbd70478eb8017f260780fb1a4.tar.bz2
scummvm-rg350-40c65540fac262fbd70478eb8017f260780fb1a4.zip
GRAPHICS: Add setBackgroundPattern() to MacWindow
Set a background pattern for the window surface. For instance, the exits window in the MacVenture engine should have a light gray background, rather than a white one, and this will allow it to get one without having to draw it by itself.
Diffstat (limited to 'graphics/macgui/macwindow.cpp')
-rw-r--r--graphics/macgui/macwindow.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/graphics/macgui/macwindow.cpp b/graphics/macgui/macwindow.cpp
index ea9a0a141d..2a6e191ded 100644
--- a/graphics/macgui/macwindow.cpp
+++ b/graphics/macgui/macwindow.cpp
@@ -44,6 +44,9 @@ MacWindow::MacWindow(int id, bool scrollable, bool resizable, bool editable, Mac
_active = false;
_borderIsDirty = true;
+ _pattern = 0;
+ _hasPattern = false;
+
_highlightedPart = kBorderNone;
_scrollPos = _scrollSize = 0.0;
@@ -83,6 +86,10 @@ void MacWindow::resize(int w, int h) {
_surface.free();
_surface.create(w, h, PixelFormat::createFormatCLUT8());
+
+ if (_hasPattern)
+ drawPattern();
+
_borderSurface.free();
_borderSurface.create(w, h, PixelFormat::createFormatCLUT8());
_composeSurface.free();
@@ -115,6 +122,13 @@ void MacWindow::setDimensions(const Common::Rect &r) {
_contentIsDirty = true;
}
+void MacWindow::setBackgroundPattern(int pattern) {
+ _pattern = pattern;
+ _hasPattern = true;
+ drawPattern();
+ _contentIsDirty = true;
+}
+
bool MacWindow::draw(ManagedSurface *g, bool forceRedraw) {
if (!_borderIsDirty && !_contentIsDirty && !forceRedraw)
return false;
@@ -273,6 +287,19 @@ void MacWindow::drawSimpleBorder(ManagedSurface *g) {
}
}
+void MacWindow::drawPattern() {
+ byte *pat = _wm->getPatterns()[_pattern - 1];
+ for (int y = 0; y < _surface.h; y++) {
+ for (int x = 0; x < _surface.w; x++) {
+ byte *dst = (byte *)_surface.getBasePtr(x, y);
+ if (pat[y % 8] & (1 << (7 - (x % 8))))
+ *dst = kColorBlack;
+ else
+ *dst = kColorWhite;
+ }
+ }
+}
+
void MacWindow::setHighlight(WindowClick highlightedPart) {
if (_highlightedPart == highlightedPart)
return;