[Scummvm-git-logs] scummvm master -> 39ffd5b7847f3661415937f082676180423ff438
djsrv
dservilla at gmail.com
Mon Jul 5 18:36:38 UTC 2021
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:
39ffd5b784 DIRECTOR: Implement Fmap
Commit: 39ffd5b7847f3661415937f082676180423ff438
https://github.com/scummvm/scummvm/commit/39ffd5b7847f3661415937f082676180423ff438
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-05T14:34:33-04:00
Commit Message:
DIRECTOR: Implement Fmap
Changed paths:
engines/director/cast.cpp
engines/director/cast.h
engines/director/fonts.cpp
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 4b050703d3..bb53e8008f 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -339,6 +339,12 @@ void Cast::loadCast() {
delete r;
}
+ // Font Mapping V4
+ if (_castArchive->hasResource(MKTAG('F', 'm', 'a', 'p'), -1)) {
+ loadFontMapV4(*(r = _castArchive->getFirstResource(MKTAG('F', 'm', 'a', 'p'))));
+ delete r;
+ }
+
// Cross-Platform Font Mapping
if (_castArchive->hasResource(MKTAG('F', 'X', 'm', 'p'), -1)) {
loadFXmp(*(r = _castArchive->getFirstResource(MKTAG('F', 'X', 'm', 'p'))));
diff --git a/engines/director/cast.h b/engines/director/cast.h
index bde07e0a35..32236bbf90 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -93,6 +93,7 @@ private:
PaletteV4 loadPalette(Common::SeekableReadStreamEndian &stream);
void loadScriptText(Common::SeekableReadStreamEndian &stream, uint16 id);
void loadFontMap(Common::SeekableReadStreamEndian &stream);
+ void loadFontMapV4(Common::SeekableReadStreamEndian &stream);
void loadFXmp(Common::SeekableReadStreamEndian &stream);
bool readFXmpLine(Common::SeekableReadStreamEndian &stream);
Common::String getString(Common::String str);
diff --git a/engines/director/fonts.cpp b/engines/director/fonts.cpp
index 9d6d4e183e..8b43de1363 100644
--- a/engines/director/fonts.cpp
+++ b/engines/director/fonts.cpp
@@ -69,6 +69,55 @@ void Cast::loadFontMap(Common::SeekableReadStreamEndian &stream) {
}
}
+void Cast::loadFontMapV4(Common::SeekableReadStreamEndian &stream) {
+ debugC(2, kDebugLoading, "****** Loading FontMap Fmap");
+
+ uint32 mapLength = stream.readUint32();
+ /* uint32 namesLength = */ stream.readUint32();
+ uint32 bodyStart = stream.pos();
+ uint32 namesStart = bodyStart + mapLength;
+
+ /* uint32 unk1 = */ stream.readUint32();
+ /* uint32 unk2 = */ stream.readUint32();
+ uint32 entriesUsed = stream.readUint32();
+ /* uint32 entriesTotal = */ stream.readUint32();
+ /* uint32 unk3 = */ stream.readUint32();
+ /* uint32 unk4 = */ stream.readUint32();
+ /* uint32 unk5 = */ stream.readUint32();
+
+ for (uint32 i = 0; i < entriesUsed; i++) {
+ uint32 nameOffset = stream.readUint32();
+
+ uint32 returnPos = stream.pos();
+ stream.seek(namesStart + nameOffset);
+ uint32 nameLength = stream.readUint32();
+ Common::String name = stream.readString(0, nameLength);
+ stream.seek(returnPos);
+
+ uint16 platform = stream.readUint16();
+ uint16 id = stream.readUint16();
+
+ Common::String platformName;
+ switch (platform) {
+ case 1:
+ platformName = "Mac";
+ break;
+ case 2:
+ platformName = "Win";
+ break;
+ default:
+ warning("Cast::loadFontMap: Unknown platform ID %d", platform);
+ platformName = "UNK";
+ break;
+ }
+
+ // Map cast font ID to window manager font ID
+ _fontMap[id] = _vm->_wm->_fontMan->registerFontName(name);
+
+ debugC(3, kDebugLoading, "Cast::loadFontMapV4: Mapping %s font %d (%s) to %d", platformName.c_str(), id, name.c_str(), _fontMap[id]);
+ }
+}
+
enum FXmpTokenType {
FXMP_TOKEN_WORD,
FXMP_TOKEN_INT,
More information about the Scummvm-git-logs
mailing list