[Scummvm-git-logs] scummvm master -> d3434050bf578964fdac364242c1a720bfb55e42
npjg
nathanael.gentrydb8 at gmail.com
Fri Jun 12 15:00:16 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:
d3434050bf DIRECTOR: Properly handle text cast background colour
Commit: d3434050bf578964fdac364242c1a720bfb55e42
https://github.com/scummvm/scummvm/commit/d3434050bf578964fdac364242c1a720bfb55e42
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-12T11:00:10-04:00
Commit Message:
DIRECTOR: Properly handle text cast background colour
Changed paths:
engines/director/cast.cpp
engines/director/cast.h
engines/director/ink.cpp
engines/director/score-loading.cpp
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index a6c39fcc94..d327e64a74 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -158,10 +158,9 @@ SoundCast::SoundCast(Common::ReadStreamEndian &stream, uint16 version) {
}
}
-TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcolor, bool asButton) {
+TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, bool asButton) {
_type = kCastText;
- _bgcolor = bgcolor;
_borderSize = kSizeNone;
_gutterSize = kSizeNone;
_boxShadow = kSizeNone;
@@ -175,7 +174,7 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcol
_textAlign = kTextAlignLeft;
_textShadow = kSizeNone;
_textSlant = 0;
- _palinfo1 = _palinfo2 = _palinfo3 = 0;
+ _bgpalinfo1 = _bgpalinfo2 = _bgpalinfo3 = 0;
if (version <= 3) {
_flags = stream.readByte(); // region: 0 - auto, 1 - matte, 2 - disabled
@@ -184,11 +183,9 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcol
_boxShadow = static_cast<SizeType>(stream.readByte());
byte pad1 = stream.readByte();
_textAlign = static_cast<TextAlignType>(stream.readUint16());
- _palinfo1 = stream.readUint16();
- _palinfo2 = stream.readUint16();
- _palinfo3 = stream.readUint16();
-
- _bgcolor = g_director->_wm->findBestColor(_palinfo1 & 0xff, _palinfo2 & 0xff, _palinfo3 & 0xff);
+ _bgpalinfo1 = stream.readUint16();
+ _bgpalinfo2 = stream.readUint16();
+ _bgpalinfo3 = stream.readUint16();
uint32 pad2;
uint16 pad3;
@@ -220,8 +217,8 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcol
debugC(2, kDebugLoading, "TextCast(): flags1: %d, border: %d gutter: %d shadow: %d pad1: %x align: %04x",
_flags, _borderSize, _gutterSize, _boxShadow, pad1, _textAlign);
- debugC(2, kDebugLoading, "TextCast(): rgb: 0x%04x 0x%04x 0x%04x, pad2: %x pad3: %d pad4: %d shadow: %d flags: %d totHeight: %d",
- _palinfo1, _palinfo2, _palinfo3, pad2, pad3, pad4, _textShadow, _textFlags, totalTextHeight);
+ debugC(2, kDebugLoading, "TextCast(): background rgb: 0x%04x 0x%04x 0x%04x, pad2: %x pad3: %d pad4: %d shadow: %d flags: %d totHeight: %d",
+ _bgpalinfo1, _bgpalinfo2, _bgpalinfo3, pad2, pad3, pad4, _textShadow, _textFlags, totalTextHeight);
if (debugChannelSet(2, kDebugLoading)) {
_initialRect.debugPrint(2, "TextCast(): rect:");
}
@@ -231,9 +228,9 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcol
_boxShadow = static_cast<SizeType>(stream.readByte());
_textType = static_cast<TextType>(stream.readByte());
_textAlign = static_cast<TextAlignType>(stream.readSint16()); // this is because 'right' is -1? or should that be 255?
- stream.readUint16();
- stream.readUint16();
- stream.readUint16();
+ _bgpalinfo1 = stream.readUint16();
+ _bgpalinfo2 = stream.readUint16();
+ _bgpalinfo3 = stream.readUint16();
stream.readUint16();
_fontId = 1; // this is in STXT
@@ -307,13 +304,21 @@ Graphics::TextAlign TextCast::getAlignment() {
}
}
+uint TextCast::getForeColor() {
+ return g_director->_wm->findBestColor(_fgpalinfo1 & 0xff, _fgpalinfo2 & 0xff, _fgpalinfo3 & 0xff);
+}
+
+uint TextCast::getBackColor() {
+ return g_director->_wm->findBestColor(_bgpalinfo1 & 0xff, _bgpalinfo2 & 0xff, _bgpalinfo3 & 0xff);
+}
+
void TextCast::importStxt(const Stxt *stxt) {
_fontId = stxt->_fontId;
_textSlant = stxt->_textSlant;
_fontSize = stxt->_fontSize;
- _palinfo1 = stxt->_palinfo1;
- _palinfo2 = stxt->_palinfo2;
- _palinfo3 = stxt->_palinfo3;
+ _fgpalinfo1 = stxt->_palinfo1;
+ _fgpalinfo2 = stxt->_palinfo2;
+ _fgpalinfo3 = stxt->_palinfo3;
_ftext = stxt->_ftext;
_ptext = stxt->_ptext;
}
@@ -321,19 +326,17 @@ void TextCast::importStxt(const Stxt *stxt) {
void TextCast::createWidget() {
Cast::createWidget();
- uint fgcolor = g_director->_wm->findBestColor(_palinfo1 & 0xff, _palinfo2 & 0xff, _palinfo3 & 0xff);
-
Graphics::MacFont *macFont = new Graphics::MacFont(_fontId, _fontSize, _textSlant);
switch (_type) {
case kCastText:
- _widget = new Graphics::MacEditableText(g_director->getCurrentScore()->_window, 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, fgcolor, _bgcolor, _initialRect.width(), getAlignment(), 1, _borderSize, _gutterSize, _boxShadow, _textShadow);
+ _widget = new Graphics::MacEditableText(g_director->getCurrentScore()->_window, 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, getForeColor(), getBackColor(), _initialRect.width(), getAlignment(), 1, _borderSize, _gutterSize, _boxShadow, _textShadow);
((Graphics::MacEditableText *)_widget)->draw();
break;
case kCastButton:
- _widget = new Graphics::MacButton(Graphics::MacButtonType(_buttonType), getAlignment(), g_director->getCurrentScore()->_window, 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, fgcolor, _bgcolor);
+ _widget = new Graphics::MacButton(Graphics::MacButtonType(_buttonType), getAlignment(), g_director->getCurrentScore()->_window, 0, 0, _initialRect.width(), _initialRect.height(), g_director->_wm, _ftext, macFont, getForeColor(), 0xff);
((Graphics::MacButton *)_widget)->draw();
_widget->_focusable = true;
@@ -518,7 +521,7 @@ ScriptCast::ScriptCast(Common::ReadStreamEndian &stream, uint16 version) {
}
}
-RTECast::RTECast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcolor) : TextCast(stream, version, bgcolor) {
+RTECast::RTECast(Common::ReadStreamEndian &stream, uint16 version) : TextCast(stream, version) {
_type = kCastRTE;
}
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 1080b0ce8e..1cc8a5484c 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -115,7 +115,7 @@ public:
class TextCast : public Cast {
public:
- TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcolor, bool asButton = false);
+ TextCast(Common::ReadStreamEndian &stream, uint16 version, bool asButton = false);
void setText(const char *text);
virtual void createWidget() override;
@@ -125,6 +125,9 @@ public:
virtual bool setEditable(bool editable) override;
Graphics::TextAlign getAlignment();
+ uint getBackColor();
+ uint getForeColor();
+
SizeType _borderSize;
SizeType _gutterSize;
SizeType _boxShadow;
@@ -137,8 +140,8 @@ public:
SizeType _textShadow;
byte _textSlant;
byte _textFlags;
- uint16 _palinfo1, _palinfo2, _palinfo3;
- int32 _bgcolor;
+ uint16 _bgpalinfo1, _bgpalinfo2, _bgpalinfo3;
+ uint16 _fgpalinfo1, _fgpalinfo2, _fgpalinfo3;
ButtonType _buttonType;
Common::String _ftext;
@@ -159,7 +162,7 @@ public:
class RTECast : public TextCast {
public:
- RTECast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcolor);
+ RTECast(Common::ReadStreamEndian &stream, uint16 version);
void loadChunks();
};
diff --git a/engines/director/ink.cpp b/engines/director/ink.cpp
index 9c2dfccacf..52a71e8a09 100644
--- a/engines/director/ink.cpp
+++ b/engines/director/ink.cpp
@@ -66,7 +66,7 @@ void Score::inkBasedBlit(Graphics::ManagedSurface *maskSurface, const Graphics::
void Score::drawBackgndTransSprite(const Graphics::Surface &sprite, Common::Rect &drawRect, int spriteId) {
byte skipColor = _sprites[spriteId]->_backColor;
if (_sprites[spriteId]->_castType == kCastText && _sprites[spriteId]->_cast) {
- skipColor = ((TextCast *)_sprites[spriteId]->_cast)->_bgcolor;
+ skipColor = ((TextCast *)_sprites[spriteId]->_cast)->getBackColor();
}
Common::Rect srcRect(sprite.w, sprite.h);
diff --git a/engines/director/score-loading.cpp b/engines/director/score-loading.cpp
index 8006429277..8c2bfe87eb 100644
--- a/engines/director/score-loading.cpp
+++ b/engines/director/score-loading.cpp
@@ -648,7 +648,7 @@ void Score::loadCastDataVWCR(Common::SeekableSubReadStreamEndian &stream) {
break;
case kCastText:
debugC(3, kDebugLoading, "Score::loadCastDataVWCR(): CastTypes id: %d(%s) TextCast", id, numToCastNum(id));
- _loadedCast->setVal(id, new TextCast(stream, _vm->getVersion(), _stageColor));
+ _loadedCast->setVal(id, new TextCast(stream, _vm->getVersion()));
break;
case kCastShape:
debugC(3, kDebugLoading, "Score::loadCastDataVWCR(): CastTypes id: %d(%s) ShapeCast", id, numToCastNum(id));
@@ -656,7 +656,7 @@ void Score::loadCastDataVWCR(Common::SeekableSubReadStreamEndian &stream) {
break;
case kCastButton:
debugC(3, kDebugLoading, "Score::loadCastDataVWCR(): CastTypes id: %d(%s) ButtonCast", id, numToCastNum(id));
- _loadedCast->setVal(id, new TextCast(stream, _vm->getVersion(), 0xff, true));
+ _loadedCast->setVal(id, new TextCast(stream, _vm->getVersion(), true));
break;
default:
warning("Score::loadCastDataVWCR(): Unhandled cast id: %d(%s), type: %d, %d bytes", id, numToCastNum(id), castType, size);
@@ -764,7 +764,7 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id,
break;
case kCastText:
debugC(3, kDebugLoading, "Score::loadCastData(): loading kCastText (%d children)", res->children.size());
- _loadedCast->setVal(id, new TextCast(castStream, _vm->getVersion(), _stageColor));
+ _loadedCast->setVal(id, new TextCast(castStream, _vm->getVersion()));
break;
case kCastShape:
debugC(3, kDebugLoading, "Score::loadCastData(): loading kCastShape (%d children)", res->children.size());
@@ -772,7 +772,7 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id,
break;
case kCastButton:
debugC(3, kDebugLoading, "Score::loadCastData(): loading kCastButton (%d children)", res->children.size());
- _loadedCast->setVal(id, new TextCast(castStream, _vm->getVersion(), 0xff, true));
+ _loadedCast->setVal(id, new TextCast(castStream, _vm->getVersion(), true));
break;
case kCastLingoScript:
debugC(3, kDebugLoading, "Score::loadCastData(): loading kCastLingoScript");
@@ -780,7 +780,7 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream, uint16 id,
break;
case kCastRTE:
debugC(3, kDebugLoading, "Score::loadCastData(): loading kCastRTE (%d children)", res->children.size());
- _loadedCast->setVal(id, new RTECast(castStream, _vm->getVersion(), _stageColor));
+ _loadedCast->setVal(id, new RTECast(castStream, _vm->getVersion()));
break;
case kCastFilmLoop:
warning("STUB: Score::loadCastData(): kCastFilmLoop (%d children)", res->children.size());
More information about the Scummvm-git-logs
mailing list