diff options
author | Eugene Sandulenko | 2019-12-15 12:43:40 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-12-15 12:43:40 +0100 |
commit | 2dc8b845c1768fda50943f6e9a78a8e6c3c361b6 (patch) | |
tree | dac55f31b5c67ff9ec06fc817b94758e25b10748 | |
parent | 6862a4934cdc8d0845c2d6e9b89410115f118e32 (diff) | |
download | scummvm-rg350-2dc8b845c1768fda50943f6e9a78a8e6c3c361b6.tar.gz scummvm-rg350-2dc8b845c1768fda50943f6e9a78a8e6c3c361b6.tar.bz2 scummvm-rg350-2dc8b845c1768fda50943f6e9a78a8e6c3c361b6.zip |
DIRECTOR: Clip drawing rects before rendering.
-rw-r--r-- | engines/director/frame.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp index 45c25f78a0..5235342124 100644 --- a/engines/director/frame.cpp +++ b/engines/director/frame.cpp @@ -398,7 +398,7 @@ void Frame::readSprite(Common::SeekableSubReadStreamEndian &stream, uint16 offse break; } } - warning("%03d(%d)[%x,%x,%04x,%d/%d/%d/%d]", sprite._castId, sprite._enabled, x1, x2, sprite._flags, sprite._startPoint.x, sprite._startPoint.y, sprite._width, sprite._height); + warning("Frame::readSprite(): %03d(%d)[%x,%x,%04x,%d/%d/%d/%d]", sprite._castId, sprite._enabled, x1, x2, sprite._flags, sprite._startPoint.x, sprite._startPoint.y, sprite._width, sprite._height); } @@ -723,6 +723,11 @@ void Frame::renderButton(Graphics::ManagedSurface &surface, uint16 spriteId) { } void Frame::inkBasedBlit(Graphics::ManagedSurface &targetSurface, const Graphics::Surface &spriteSurface, uint16 spriteId, Common::Rect drawRect) { + // drawRect could be bigger than the spriteSurface. Clip it + Common::Rect t(spriteSurface.w, spriteSurface.h); + t.moveTo(drawRect.left, drawRect.top); + drawRect.clip(t); + switch (_sprites[spriteId]->_ink) { case kInkTypeCopy: targetSurface.blitFrom(spriteSurface, Common::Point(drawRect.left, drawRect.top)); |