[Scummvm-git-logs] scummvm master -> 0ca34f6e926b71130e81fd92d4ffcadb3048290a

sev- sev at scummvm.org
Mon Jun 1 17:00:36 UTC 2020


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

Summary:
2bd118086b DIRECTOR: Relocate shape copy ink check
d82a37ab0d DIRECTOR: Fix setCast member condition
31f008b772 DIRECTOR: Fix segfault in MacWindowManager::pauseEngine
6cb1c92e23 GRAPHICS: MACGUI: Add fullscreen menu-on-demand mode
3e5c119639 DIRECTOR: Use WM menu-on-demand fullscreen mode
84cb2c9955 DIRECTOR: Do not clip drawRect to maskSurface
0ca34f6e92 DIRECTOR: Account for null cast in drawReverseSprite


Commit: 2bd118086b886eb2b063bfbb7c9fb637aeff393a
    https://github.com/scummvm/scummvm/commit/2bd118086b886eb2b063bfbb7c9fb637aeff393a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
DIRECTOR: Relocate shape copy ink check

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 6b43e6c3d6..0bac00cba2 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1833,10 +1833,6 @@ void Score::renderShape(uint16 spriteId) {
 					lineSize = sc->_lineThickness;
 					ink = sc->_ink;
 				}
-				// shapes should be rendered with transparency by default
-				if (ink == kInkTypeCopy) {
-					ink = kInkTypeTransparent;
-				}
 			}
 			break;
 		default:
@@ -1845,6 +1841,11 @@ void Score::renderShape(uint16 spriteId) {
 		}
 	}
 
+	// shapes should be rendered with transparency by default
+	if (ink == kInkTypeCopy) {
+		ink = kInkTypeTransparent;
+	}
+
 	// for outlined shapes, line thickness of 1 means invisible.
 	lineSize -= 1;
 


Commit: d82a37ab0d1ae2c17a00137fb701370591a01cd1
    https://github.com/scummvm/scummvm/commit/d82a37ab0d1ae2c17a00137fb701370591a01cd1
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
DIRECTOR: Fix setCast member condition

Changed paths:
    engines/director/score.cpp
    engines/director/sprite.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 0bac00cba2..cbde468928 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1759,7 +1759,7 @@ void Score::unrenderSprite(uint16 spriteId) {
 void Score::renderSprite(uint16 id) {
 	Sprite *sprite = _sprites[id];
 
-	if (!sprite)
+	if (!sprite || !sprite->_enabled)
 		return;
 
 	CastType castType = sprite->_castType;
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 5ec801e90b..9e59f869f0 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -120,54 +120,64 @@ void Sprite::setPattern(uint16 pattern) {
 
 void Sprite::setCast(uint16 castId) {
 	Cast *member = g_director->getCastMember(castId);
-	if (member) {
+	_castType = kCastTypeNull;
+	_castId = castId;
+
+	if (castId == 0)
+		return;
+
+	if (member)
 		_cast = member;
-		_castId = castId;
-		_castType = kCastTypeNull;
+	else
+		warning("Sprite::setCast: Cast id %d has null member", castId);
 
-		if (g_director->getVersion() < 4) {
-			switch (_spriteType) {
-			case kBitmapSprite:
-				_castType = kCastBitmap;
-				break;
-			case kRectangleSprite:
-			case kRoundedRectangleSprite:
-			case kOvalSprite:
-			case kLineTopBottomSprite:
-			case kLineBottomTopSprite:
-			case kOutlinedRectangleSprite:
-			case kOutlinedRoundedRectangleSprite:
-			case kOutlinedOvalSprite:
-			case kCastMemberSprite:
-				if (_cast != nullptr) {
-					switch (_cast->_type) {
-					case kCastButton:
-						_castType = kCastButton;
-						break;
-					default:
-						_castType = kCastShape;
-						break;
-					}
-				} else {
+	if (g_director->getVersion() < 4) {
+		switch (_spriteType) {
+		case kBitmapSprite:
+			_castType = kCastBitmap;
+			break;
+		case kRectangleSprite:
+		case kRoundedRectangleSprite:
+		case kOvalSprite:
+		case kLineTopBottomSprite:
+		case kLineBottomTopSprite:
+		case kOutlinedRectangleSprite:
+		case kOutlinedRoundedRectangleSprite:
+		case kOutlinedOvalSprite:
+		case kCastMemberSprite:
+			if (_cast != nullptr) {
+				switch (_cast->_type) {
+				case kCastButton:
+					_castType = kCastButton;
+					break;
+				default:
 					_castType = kCastShape;
+					break;
 				}
-				break;
-			case kTextSprite:
-				_castType = kCastText;
-				break;
-			case kButtonSprite:
-			case kCheckboxSprite:
-			case kRadioButtonSprite:
-				_castType = kCastButton;
-				break;
-			default:
-				warning("Sprite::setCast(): Unhandled sprite type %d", _spriteType);
-				break;
+			} else {
+				_castType = kCastShape;
 			}
+			break;
+		case kTextSprite:
+			_castType = kCastText;
+			break;
+		case kButtonSprite:
+		case kCheckboxSprite:
+		case kRadioButtonSprite:
+			_castType = kCastButton;
+			break;
+		default:
+			warning("Sprite::setCast(): Unhandled sprite type %d", _spriteType);
+			break;
+		}
+	} else {
+		if (!member) {
+			debugC(1, kDebugImages, "Sprite::setCast(): Cast id %d not found", _castId);
 		} else {
 			_castType = member->_type;
 		}
 	}
+
 	_dirty = true;
 }
 
@@ -186,6 +196,9 @@ Common::Rect Sprite::getBbox() {
 		break;
 	case kCastRTE:
 	case kCastText: {
+		if (!_cast)
+			return result;
+
 		TextCast *textCast = (TextCast*)_cast;
 		int x = _currentPoint.x; // +rectLeft;
 		int y = _currentPoint.y; // +rectTop;
@@ -210,6 +223,9 @@ Common::Rect Sprite::getBbox() {
 	case kCastButton: {
 		// This may not be a button cast. It could be a textcast with the
 		// channel forcing it to be a checkbox or radio button!
+		if (!_cast)
+			return result;
+
 		ButtonCast *button = (ButtonCast *)_cast;
 
 		// Sometimes, at least in the D3 Workshop Examples, these buttons are
@@ -263,6 +279,9 @@ Common::Rect Sprite::getBbox() {
 		break;
 	}
 	case kCastBitmap: {
+		if (!_cast)
+			return result;
+
 		BitmapCast *bc = (BitmapCast *)_cast;
 
 		int32 regX = bc->_regX;
@@ -283,7 +302,7 @@ Common::Rect Sprite::getBbox() {
 		break;
 	}
 	default:
-		warning("Sprite::getBbox(): Unhandled cast type: %d", _castType);
+		warning("Sprite::getBbox(): Unhandled cast type: %d : castId: %d", _castType, _castId);
 	}
 	return result;
 }


Commit: 31f008b772c567f0702c30402a9120580b422e7a
    https://github.com/scummvm/scummvm/commit/31f008b772c567f0702c30402a9120580b422e7a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
DIRECTOR: Fix segfault in MacWindowManager::pauseEngine

Changed paths:
    engines/director/director.cpp


diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 5f1004d519..2ef78e897b 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -136,6 +136,7 @@ Common::Error DirectorEngine::run() {
 
 	_wm = new Graphics::MacWindowManager(Graphics::kWMModalMenuMode | Graphics::kWMModeNoDesktop
 							| Graphics::kWMModeManualDrawWidgets);
+	_wm->setEngine(this);
 
 	_lingo = new Lingo(this);
 	_soundManager = new DirectorSound();


Commit: 6cb1c92e23c62430c08862bc0edcc289825f8c2c
    https://github.com/scummvm/scummvm/commit/6cb1c92e23c62430c08862bc0edcc289825f8c2c
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
GRAPHICS: MACGUI: Add fullscreen menu-on-demand mode

Changed paths:
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index bc5643a16c..c9662e315b 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -397,7 +397,7 @@ void MacWindowManager::draw() {
 	}
 
 	// Menu is drawn on top of everything and always
-	if (_menu)
+	if (_menu && !(_mode & kWMModeFullscreen))
 		_menu->draw(_screen, _fullRefresh);
 
 	_fullRefresh = false;
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 31c4137b73..70cd0de4aa 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -65,7 +65,8 @@ enum {
 	kWMModalMenuMode 		= (1 << 2),
 	kWMModeForceBuiltinFonts= (1 << 3),
 	kWMModeUnicode			= (1 << 4),
-	kWMModeManualDrawWidgets= (1 << 5)
+	kWMModeManualDrawWidgets= (1 << 5),
+	kWMModeFullscreen       = (1 << 6)
 };
 
 }


Commit: 3e5c119639b2becafb73426082fa99c8d6a77260
    https://github.com/scummvm/scummvm/commit/3e5c119639b2becafb73426082fa99c8d6a77260
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
DIRECTOR: Use WM menu-on-demand fullscreen mode

Changed paths:
    engines/director/director.cpp


diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 2ef78e897b..d765e4555f 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -135,7 +135,7 @@ Common::Error DirectorEngine::run() {
 	_soundManager = nullptr;
 
 	_wm = new Graphics::MacWindowManager(Graphics::kWMModalMenuMode | Graphics::kWMModeNoDesktop
-							| Graphics::kWMModeManualDrawWidgets);
+																			 | Graphics::kWMModeManualDrawWidgets | Graphics::kWMModeFullscreen);
 	_wm->setEngine(this);
 
 	_lingo = new Lingo(this);


Commit: 84cb2c995558326b633811f63dc980f884088334
    https://github.com/scummvm/scummvm/commit/84cb2c995558326b633811f63dc980f884088334
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
DIRECTOR: Do not clip drawRect to maskSurface

Changed paths:
    engines/director/ink.cpp


diff --git a/engines/director/ink.cpp b/engines/director/ink.cpp
index 8fb195541b..117229bf76 100644
--- a/engines/director/ink.cpp
+++ b/engines/director/ink.cpp
@@ -41,9 +41,6 @@ void Score::inkBasedBlit(Graphics::ManagedSurface *maskSurface, const Graphics::
 		maskSurface->clear(0);
 	}
 
-	drawRect.clip(Common::Rect(_maskSurface->w, _maskSurface->h));
-
-
 	if (drawRect.isEmpty()) {
 		warning("Score::inkBasedBlit(): empty drawRect");
 		return;


Commit: 0ca34f6e926b71130e81fd92d4ffcadb3048290a
    https://github.com/scummvm/scummvm/commit/0ca34f6e926b71130e81fd92d4ffcadb3048290a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00

Commit Message:
DIRECTOR: Account for null cast in drawReverseSprite

Changed paths:
    engines/director/ink.cpp


diff --git a/engines/director/ink.cpp b/engines/director/ink.cpp
index 117229bf76..80a1d5b575 100644
--- a/engines/director/ink.cpp
+++ b/engines/director/ink.cpp
@@ -138,7 +138,7 @@ void Score::drawReverseSprite(const Graphics::Surface &sprite, Common::Rect &dra
 		byte srcColor = *src;
 
 		for (int j = 0; j < drawRect.width(); j++) {
-			if (_sprites[spriteId]->_cast->_type == kCastShape)
+			if (!_sprites[spriteId]->_cast || _sprites[spriteId]->_cast->_type == kCastShape)
 				srcColor = 0x0;
 			else
 				srcColor = *src;
@@ -147,7 +147,7 @@ void Score::drawReverseSprite(const Graphics::Surface &sprite, Common::Rect &dra
 				// TODO: This entire reverse colour attempt needs a lot more testing on
 				// a lot more colour depths.
 				if (srcColor != skipColor) {
-					if (_sprites[targetSprite]->_cast->_type != kCastBitmap) {
+					if (!_sprites[targetSprite]->_cast || _sprites[targetSprite]->_cast->_type != kCastBitmap) {
 						if (*dst == 0 || *dst == 255) {
 							*dst = _vm->transformColor(*dst);
 						} else if (srcColor == 255 || srcColor == 0) {




More information about the Scummvm-git-logs mailing list