aboutsummaryrefslogtreecommitdiff
path: root/engines/director
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director')
-rw-r--r--engines/director/frame.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 24a0be8f00..672e856b97 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -208,7 +208,7 @@ void Frame::readChannels(Common::ReadStreamEndian *stream) {
else
sprite._trails = 0;
- sprite._lineSize = (sprite._flags >> 8) & 0x03;
+ sprite._lineSize = ((sprite._flags >> 8) & 0x03) + 1;
sprite._castId = stream->readUint16();
sprite._startPoint.y = stream->readUint16();
@@ -664,7 +664,7 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
byte spriteType = sp->_spriteType;
byte foreColor = sp->_foreColor;
byte backColor = sp->_backColor;
- int lineSize = sp->_lineSize - 1;
+ int lineSize = sp->_lineSize;
if (spriteType == kCastMemberSprite && sp->_cast != NULL) {
switch (sp->_cast->_type) {
case kCastShape:
@@ -688,7 +688,7 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
}
foreColor = sc->_fgCol;
backColor = sc->_bgCol;
- lineSize = sc->_lineThickness - 1;
+ lineSize = sc->_lineThickness;
ink = sc->_ink;
// shapes should be rendered with transparency by default
if (ink == kInkTypeCopy) {
@@ -702,6 +702,16 @@ void Frame::renderShape(Graphics::ManagedSurface &surface, uint16 spriteId) {
}
}
+ // for outlined shapes, line thickness of 1 means invisible.
+ // filled shapes need at least a line thickness of 1 for MacPlot to render them
+ if (spriteType == kOutlinedRectangleSprite ||
+ spriteType == kOutlinedRoundedRectangleSprite ||
+ spriteType == kOutlinedOvalSprite ||
+ spriteType == kLineBottomTopSprite ||
+ spriteType == kLineTopBottomSprite) {
+ lineSize -= 1;
+ }
+
Common::Rect shapeRect = Common::Rect(sp->_startPoint.x,
sp->_startPoint.y,
sp->_startPoint.x + sp->_width,