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

sev- sev at scummvm.org
Sun Apr 12 21:22:13 UTC 2020


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

Summary:
f0fb9652a8 DIRECTOR: Refactored Frame::renderBitmap() for consistency


Commit: f0fb9652a8eb12f7273a3cac6f27d71ee1246606
    https://github.com/scummvm/scummvm/commit/f0fb9652a8eb12f7273a3cac6f27d71ee1246606
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-12T23:21:44+02:00

Commit Message:
DIRECTOR: Refactored Frame::renderBitmap() for consistency

Changed paths:
    engines/director/frame.cpp
    engines/director/frame.h


diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index ea64f04783..943457edef 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -571,7 +571,7 @@ void Frame::renderSprites(Graphics::ManagedSurface &surface, bool renderTrail) {
 			case kOvalSprite:
 			case kLineTopBottomSprite:
 			case kLineBottomTopSprite:
-			case kOutlinedRectangleSprite:	// this is actually a mouse-over shape? I don't think it's a real button.
+			case kOutlinedRectangleSprite:
 			case kOutlinedRoundedRectangleSprite:
 			case kOutlinedOvalSprite:
 			case kCastMemberSprite:
@@ -633,26 +633,8 @@ void Frame::renderSprites(Graphics::ManagedSurface &surface, bool renderTrail) {
 				warning("Frame::renderSprites(): No cast surface for sprite %d", i);
 				continue;
 			}
-			InkType ink;
-			if (i == _vm->getCurrentScore()->_currentMouseDownSpriteId)
-				ink = kInkTypeReverse;
-			else
-				ink = _sprites[i]->_ink;
-
-			BitmapCast *bc = (BitmapCast *)_sprites[i]->_cast;
-
-			int32 regX = bc->_regX;
-			int32 regY = bc->_regY;
-			int32 rectLeft = bc->_initialRect.left;
-			int32 rectTop = bc->_initialRect.top;
-
-			int x = _sprites[i]->_startPoint.x - regX + rectLeft;
-			int y = _sprites[i]->_startPoint.y - regY + rectTop;
-			int height = _sprites[i]->_height;
-			int width = _vm->getVersion() > 4 ? bc->_initialRect.width() : _sprites[i]->_width;
-			Common::Rect drawRect(x, y, x + width, y + height);
-			addDrawRect(i, drawRect);
-			inkBasedBlit(surface, *(bc->_surface), ink, drawRect, i);
+
+			renderBitmap(surface, i);
 		}
 	}
 }
@@ -1039,6 +1021,31 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
 	inkBasedBlit(surface, textWithFeatures, ink, Common::Rect(x, y, x + width, y + height), spriteId);
 }
 
+void Frame::renderBitmap(Graphics::ManagedSurface &surface, uint16 spriteId) {
+	InkType ink;
+	Sprite *sprite = _sprites[spriteId];
+
+	if (spriteId == _vm->getCurrentScore()->_currentMouseDownSpriteId)
+		ink = kInkTypeReverse;
+	else
+		ink = sprite->_ink;
+
+	BitmapCast *bc = (BitmapCast *)sprite->_cast;
+
+	int32 regX = bc->_regX;
+	int32 regY = bc->_regY;
+	int32 rectLeft = bc->_initialRect.left;
+	int32 rectTop = bc->_initialRect.top;
+
+	int x = sprite->_startPoint.x - regX + rectLeft;
+	int y = sprite->_startPoint.y - regY + rectTop;
+	int height = sprite->_height;
+	int width = _vm->getVersion() > 4 ? bc->_initialRect.width() : sprite->_width;
+	Common::Rect drawRect(x, y, x + width, y + height);
+	addDrawRect(spriteId, drawRect);
+	inkBasedBlit(surface, *(bc->_surface), ink, drawRect, spriteId);
+}
+
 void Frame::inkBasedBlit(Graphics::ManagedSurface &targetSurface, const Graphics::Surface &spriteSurface, InkType ink, Common::Rect drawRect, uint spriteId) {
 	// drawRect could be bigger than the spriteSurface. Clip it
 	Common::Rect t(spriteSurface.w, spriteSurface.h);
diff --git a/engines/director/frame.h b/engines/director/frame.h
index 1205daef5d..6edd246c44 100644
--- a/engines/director/frame.h
+++ b/engines/director/frame.h
@@ -86,6 +86,7 @@ private:
 	void renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Common::Rect *textSize);
 	void renderShape(Graphics::ManagedSurface &surface, uint16 spriteId);
 	void renderButton(Graphics::ManagedSurface &surface, uint16 spriteId);
+	void renderBitmap(Graphics::ManagedSurface &surface, uint16 spriteId);
 	void readPaletteInfo(Common::SeekableSubReadStreamEndian &stream);
 	void readSprite(Common::SeekableSubReadStreamEndian &stream, uint16 offset, uint16 size);
 	void readMainChannels(Common::SeekableSubReadStreamEndian &stream, uint16 offset, uint16 size);




More information about the Scummvm-git-logs mailing list