[Scummvm-git-logs] scummvm master -> 8e2c8ee2d419687819cec9416e78063ffc42e6fb
djsrv
dservilla at gmail.com
Sun Jul 4 14:12:15 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a611f674c5 DIRECTOR: Improve loadFontMap logging
8e2c8ee2d4 DIRECTOR: Map fonts in FontStyle::read
Commit: a611f674c53432b68164dae2a10c4a12894cba62
https://github.com/scummvm/scummvm/commit/a611f674c53432b68164dae2a10c4a12894cba62
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-04T10:07:27-04:00
Commit Message:
DIRECTOR: Improve loadFontMap logging
Changed paths:
engines/director/fonts.cpp
diff --git a/engines/director/fonts.cpp b/engines/director/fonts.cpp
index 500f45853a..b90b3edd38 100644
--- a/engines/director/fonts.cpp
+++ b/engines/director/fonts.cpp
@@ -56,7 +56,7 @@ void Cast::loadFontMap(Common::SeekableReadStreamEndian &stream) {
// Map cast font ID to window manager font ID
_fontMap[id] = _vm->_wm->_fontMan->registerFontName(font);
- debugC(3, kDebugLoading, "Fontmap. ID %d Font %s", id, font.c_str());
+ debugC(3, kDebugLoading, "Cast::loadFontMap: Mapping font %d (%s) to %d", id, font.c_str(), _fontMap[id]);
currentRawPosition = stream.pos();
stream.seek(positionInfo);
}
Commit: 8e2c8ee2d419687819cec9416e78063ffc42e6fb
https://github.com/scummvm/scummvm/commit/8e2c8ee2d419687819cec9416e78063ffc42e6fb
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-04T10:07:27-04:00
Commit Message:
DIRECTOR: Map fonts in FontStyle::read
The previous place I was mapping the font IDs didn't catch everything,
breaking text with more than one style.
Changed paths:
engines/director/cast.cpp
engines/director/cast.h
engines/director/castmember.cpp
engines/director/fonts.cpp
engines/director/stxt.cpp
engines/director/stxt.h
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 16af8bad7d..4b050703d3 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1117,7 +1117,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
int16 count = entryStream->readUint16();
for (int16 i = 0; i < count; i++)
- ci->scriptStyle.read(*entryStream);
+ ci->scriptStyle.read(*entryStream, this);
delete entryStream;
}
// fallthrough
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 014cc81f18..bde07e0a35 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -87,6 +87,8 @@ public:
void dumpScript(const char *script, ScriptType type, uint16 id);
+ uint16 mapFont(uint16 id);
+
private:
PaletteV4 loadPalette(Common::SeekableReadStreamEndian &stream);
void loadScriptText(Common::SeekableReadStreamEndian &stream, uint16 id);
diff --git a/engines/director/castmember.cpp b/engines/director/castmember.cpp
index f5a6286b5f..68ec6ec93c 100644
--- a/engines/director/castmember.cpp
+++ b/engines/director/castmember.cpp
@@ -679,17 +679,7 @@ Graphics::TextAlign TextCastMember::getAlignment() {
}
void TextCastMember::importStxt(const Stxt *stxt) {
- if (_cast->_version < kFileVer400) {
- if (_cast->_fontMap.contains(stxt->_style.fontId)) {
- _fontId = _cast->_fontMap[stxt->_style.fontId];
- } else {
- _fontId = 1; // fall back to Geneva
- }
- } else {
- // FIXME: This should use the font map.
- // D4 font maps are not implemented yet, so just use the unmapped ID.
- _fontId = stxt->_style.fontId;
- }
+ _fontId = stxt->_style.fontId;
_textSlant = stxt->_style.textSlant;
_fontSize = stxt->_style.fontSize;
_fgpalinfo1 = stxt->_style.r;
diff --git a/engines/director/fonts.cpp b/engines/director/fonts.cpp
index b90b3edd38..9d6d4e183e 100644
--- a/engines/director/fonts.cpp
+++ b/engines/director/fonts.cpp
@@ -30,6 +30,13 @@
namespace Director {
+uint16 Cast::mapFont(uint16 id) {
+ if (_fontMap.contains(id)) {
+ return _fontMap[id];
+ }
+ return id;
+}
+
void Cast::loadFontMap(Common::SeekableReadStreamEndian &stream) {
if (stream.size() == 0)
return;
diff --git a/engines/director/stxt.cpp b/engines/director/stxt.cpp
index dbec705993..48f9cadca2 100644
--- a/engines/director/stxt.cpp
+++ b/engines/director/stxt.cpp
@@ -23,6 +23,7 @@
#include "common/substream.h"
#include "director/director.h"
+#include "director/cast.h"
#include "director/stxt.h"
namespace Director {
@@ -68,7 +69,7 @@ Stxt::Stxt(Cast *cast, Common::SeekableReadStreamEndian &textStream) : _cast(cas
while (formattingCount) {
debugC(3, kDebugText, "Stxt init: formattingCount: %u", formattingCount);
- _style.read(textStream);
+ _style.read(textStream, _cast);
assert(prevPos <= _style.formatStartOffset); // If this is triggered, we have to implement sorting
@@ -110,12 +111,12 @@ FontStyle::FontStyle() {
r = g = b = 0;
}
-void FontStyle::read(Common::ReadStreamEndian &stream) {
+void FontStyle::read(Common::ReadStreamEndian &stream, Cast *cast) {
formatStartOffset = stream.readUint32();
height = stream.readUint16();
ascent = stream.readUint16();
- fontId = stream.readUint16();
+ fontId = cast->mapFont(stream.readUint16());
textSlant = stream.readByte();
stream.readByte(); // padding
fontSize = stream.readUint16();
diff --git a/engines/director/stxt.h b/engines/director/stxt.h
index 94e82298cb..0a2b2278ca 100644
--- a/engines/director/stxt.h
+++ b/engines/director/stxt.h
@@ -29,6 +29,8 @@ class ReadStreamEndian;
namespace Director {
+class Cast;
+
struct FontStyle {
uint32 formatStartOffset;
uint16 height;
@@ -42,7 +44,7 @@ struct FontStyle {
uint16 r, g, b;
FontStyle();
- void read(Common::ReadStreamEndian &textStream);
+ void read(Common::ReadStreamEndian &textStream, Cast *cast);
};
class Stxt {
More information about the Scummvm-git-logs
mailing list