[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