[Scummvm-git-logs] scummvm master -> b31d5ac2b9efe04fa717f6c39b4ce1526b55fd19

moralrecordings code at moral.net.au
Sat Jan 11 03:27:46 UTC 2020


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c565847240 DIRECTOR: LINGO: Allow b_length to cast from reference
b31d5ac2b9 DIRECTOR: Align fill patterns to global origin


Commit: c56584724049a609a31f49890c5dd9bec2a085b4
    https://github.com/scummvm/scummvm/commit/c56584724049a609a31f49890c5dd9bec2a085b4
Author: Scott Percival (code at moral.net.au)
Date: 2020-01-11T11:25:23+08:00

Commit Message:
DIRECTOR: LINGO: Allow b_length to cast from reference

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/sprite.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index b7c32dd..e02ac63 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -495,6 +495,8 @@ void LB::b_hilite(int nargs) {
 
 void LB::b_length(int nargs) {
 	Datum d = g_lingo->pop();
+	if (d.type == REFERENCE)
+		d.toString();
 
 	if (d.type != STRING)
 		error("Incorrect type for 'length' function: %s", d.type2str());
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 4a741c3..d953eba 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -129,7 +129,7 @@ uint16 Sprite::getPattern() {
 			warning("Sprite::getPattern(): Unhandled cast type: %d", _cast->_type);
 			break;
 		}
-
+		// fallthrough
 	default:
 		return 0;
 	}


Commit: b31d5ac2b9efe04fa717f6c39b4ce1526b55fd19
    https://github.com/scummvm/scummvm/commit/b31d5ac2b9efe04fa717f6c39b4ce1526b55fd19
Author: Scott Percival (code at moral.net.au)
Date: 2020-01-11T11:27:21+08:00

Commit Message:
DIRECTOR: Align fill patterns to global origin

Changed paths:
    engines/director/frame.cpp
    engines/director/score.cpp
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 28be1c5..71bbc34 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -727,8 +727,8 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
 	tmpSurface.clear(255);
 
 	// No minus one on the pattern here! MacPlotData will do that for us!
-	//Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), 1, 1, sp->_backColor);
-	Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), sp->getPattern(), lineSize, backColor);
+	//Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), 1, 0, 0, 1, sp->_backColor);
+	Graphics::MacPlotData pd(&tmpSurface, &_vm->getPatterns(), sp->getPattern(), -shapeRect.left, -shapeRect.top, lineSize, backColor);
 	Common::Rect fillRect(MAX((int)shapeRect.width() - lineSize, 0), MAX((int)shapeRect.height() - lineSize, 0));
 
 	switch (spriteType) {
@@ -797,7 +797,7 @@ void Frame::renderButton(Graphics::ManagedSurface &surface, uint16 spriteId) {
 		break;
 	case kTypeButton: {
 			_rect = Common::Rect(x, y, x + width, y + height + 3);
-			Graphics::MacPlotData pd(&surface, &_vm->getMacWindowManager()->getPatterns(), Graphics::MacGUIConstants::kPatternSolid, 1, invert ? Graphics::kColorBlack : Graphics::kColorWhite);
+			Graphics::MacPlotData pd(&surface, &_vm->getMacWindowManager()->getPatterns(), Graphics::MacGUIConstants::kPatternSolid, 0, 0, 1, invert ? Graphics::kColorBlack : Graphics::kColorWhite);
 
 			Graphics::drawRoundRect(_rect, 4, 0, invert, Graphics::macDrawPixel, &pd);
 			addDrawRect(spriteId, _rect);
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 9cdc069..8b600e5 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1518,7 +1518,7 @@ void Score::renderZoomBox(bool redraw) {
 		end = MIN(start + 3 - box->step % 2, 8);
 	}
 
-	Graphics::MacPlotData pd(_surface, &_vm->_wm->getPatterns(), Graphics::kPatternCheckers, 1, 0);
+	Graphics::MacPlotData pd(_surface, &_vm->_wm->getPatterns(), Graphics::kPatternCheckers, 0, 0, 1, 0);
 
 	for (int i = start; i <= end; i++) {
 		Common::Rect r(box->start.left   + (box->end.left   - box->start.left)   * i / 8,
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 12cd391..1944805 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -295,7 +295,7 @@ void macDrawPixel(int x, int y, int color, void *data) {
 			uint yu = (uint)y;
 
 			*((byte *)p->surface->getBasePtr(xu, yu)) =
-				(pat[yu % 8] & (1 << (7 - xu % 8))) ?
+				(pat[(yu - p->fillOriginY) % 8] & (1 << (7 - (xu - p->fillOriginX) % 8))) ?
 					color : p->bgColor;
 		}
 	} else {
@@ -310,7 +310,7 @@ void macDrawPixel(int x, int y, int color, void *data) {
 					uint xu = (uint)x; // for letting compiler optimize it
 					uint yu = (uint)y;
 					*((byte *)p->surface->getBasePtr(xu, yu)) =
-						(pat[yu % 8] & (1 << (7 - xu % 8))) ?
+						(pat[(yu - p->fillOriginY) % 8] & (1 << (7 - (xu - p->fillOriginX) % 8))) ?
 							color : p->bgColor;
 				}
 	}
@@ -319,7 +319,7 @@ void macDrawPixel(int x, int y, int color, void *data) {
 void MacWindowManager::drawDesktop() {
 	Common::Rect r(_screen->getBounds());
 
-	MacPlotData pd(_screen, &_patterns, kPatternCheckers, 1, _colorWhite);
+	MacPlotData pd(_screen, &_patterns, kPatternCheckers, 0, 0, 1, _colorWhite);
 
 	Graphics::drawRoundRect(r, kDesktopArc, _colorBlack, true, macDrawPixel, &pd);
 
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index c412e64..5846bcb 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -83,11 +83,13 @@ struct MacPlotData {
 	Graphics::ManagedSurface *surface;
 	MacPatterns *patterns;
 	uint fillType;
+	int fillOriginX;
+	int fillOriginY;
 	int thickness;
 	uint bgColor;
 
-	MacPlotData(Graphics::ManagedSurface *s, MacPatterns *p, int f, int t, uint bg) :
-		surface(s), patterns(p), fillType(f), thickness(t), bgColor(bg) {
+	MacPlotData(Graphics::ManagedSurface *s, MacPatterns *p, uint f, int fx, int fy, int t, uint bg) :
+		surface(s), patterns(p), fillType(f), fillOriginX(fx), fillOriginY(fy), thickness(t), bgColor(bg) {
 	}
 };
 




More information about the Scummvm-git-logs mailing list