aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2016-10-18 11:31:28 +0200
committerEugene Sandulenko2016-10-18 11:50:12 +0200
commit6ef67b9186535f8058dabfbbd181ad3ad032e079 (patch)
tree2bae7cf4c9f2c6d413992adb5899d634211d22f3
parente19cb159430d4672c16865263c729a689e9e98cf (diff)
downloadscummvm-rg350-6ef67b9186535f8058dabfbbd181ad3ad032e079.tar.gz
scummvm-rg350-6ef67b9186535f8058dabfbbd181ad3ad032e079.tar.bz2
scummvm-rg350-6ef67b9186535f8058dabfbbd181ad3ad032e079.zip
DIRECTOR: Further work on text cast loading and rendering
-rw-r--r--engines/director/frame.cpp6
-rw-r--r--engines/director/score.cpp8
-rw-r--r--engines/director/score.h2
3 files changed, 13 insertions, 3 deletions
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 53b7502779..0ce7f2be9b 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -599,7 +599,9 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteID) {
text += ch;
}
- debugC(3, kDebugText, "renderText: unk1: %d strLen: %d dataLen: %d textlen: %d", unk1, strLen, dataLen, text.size());
+ debugC(3, kDebugText, "renderText: unk1: %d strLen: %d dataLen: %d textlen: %u", unk1, strLen, dataLen, text.size());
+ if (strLen < 200)
+ debugC(3, kDebugText, "text: '%s'", text.c_str());
uint32 rectLeft = static_cast<TextCast *>(_sprites[spriteID]->_cast)->initialRect.left;
uint32 rectTop = static_cast<TextCast *>(_sprites[spriteID]->_cast)->initialRect.top;
@@ -618,6 +620,8 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteID) {
const Graphics::Font *font = _vm->_wm->_fontMan->getFont(macFont);
+ debugC(3, kDebugText, "renderText: x: %d y: %d w: %d h: %d font: '%s'", x, y, width, height, _vm->_wm->_fontMan->getFontName(macFont));
+
font->drawString(&surface, text, x, y, width, 0);
if (textCast->borderSize != kSizeNone) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index c95aae1121..5c594c20fc 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -714,13 +714,15 @@ BitmapCast::BitmapCast(Common::SeekableSubReadStreamEndian &stream) {
}
TextCast::TextCast(Common::SeekableSubReadStreamEndian &stream) {
- /*byte flags =*/ stream.readByte();
+ flags1 = stream.readByte();
borderSize = static_cast<SizeType>(stream.readByte());
gutterSize = static_cast<SizeType>(stream.readByte());
boxShadow = static_cast<SizeType>(stream.readByte());
textType = static_cast<TextType>(stream.readByte());
textAlign = static_cast<TextAlignType>(stream.readUint16());
- stream.skip(6); //palinfo
+ palinfo1 = stream.readUint16();
+ palinfo2 = stream.readUint16();
+ palinfo3 = stream.readUint16();
int t = stream.readUint32();
assert(t == 0); // So far we saw only 0 here
@@ -734,6 +736,8 @@ TextCast::TextCast(Common::SeekableSubReadStreamEndian &stream) {
textFlags.push_back(kTextFlagAutoTab);
if (flags & 0x4)
textFlags.push_back(kTextFlagDoNotWrap);
+ if (flags & 0xf8)
+ warning("Unproxessed text cast flags: %x", flags & 0xf8);
// TODO: FIXME: guesswork
fontId = stream.readByte();
diff --git a/engines/director/score.h b/engines/director/score.h
index ad07b6defc..b5c66d1d61 100644
--- a/engines/director/score.h
+++ b/engines/director/score.h
@@ -132,12 +132,14 @@ struct TextCast : Cast {
SizeType gutterSize;
SizeType boxShadow;
+ byte flags1;
uint32 fontId;
uint16 fontSize;
TextType textType;
TextAlignType textAlign;
SizeType textShadow;
Common::Array<TextFlag> textFlags;
+ int16 palinfo1, palinfo2, palinfo3;
};
enum ButtonType {