[Scummvm-git-logs] scummvm master -> 4236d93aae16bd5e5cf63256fd7617961da49204
sev-
sev at scummvm.org
Tue Jan 17 10:55:15 CET 2017
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b0e06b414d GRAPHICS: Added debug output to FOND loading
fd82fa5308 DIRECTOR: Added test for font loading
4236d93aae GRAPHICS: Fix FOND loading
Commit: b0e06b414dd5f4183bfe2b43d565405e46497f02
https://github.com/scummvm/scummvm/commit/b0e06b414dd5f4183bfe2b43d565405e46497f02
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-17T10:56:33+01:00
Commit Message:
GRAPHICS: Added debug output to FOND loading
Changed paths:
graphics/fonts/macfont.cpp
diff --git a/graphics/fonts/macfont.cpp b/graphics/fonts/macfont.cpp
index 57e7ad2..396ac0c 100644
--- a/graphics/fonts/macfont.cpp
+++ b/graphics/fonts/macfont.cpp
@@ -121,19 +121,37 @@ bool MacFont::loadFOND(Common::SeekableReadStream &stream) {
_ffKernOff = stream.readUint32BE(); // offset to kerning table
_ffStylOff = stream.readUint32BE(); // offset to style-mapping table
- for (int i = 0; i < 9; i++) // style properties info
+ debug(10, "flags: %x famid: %d first: %d last: %d", _ffFlags, _ffFamID, _ffFirstChar, _ffLastChar);
+ debug(10, "ascent: %g descent: %g, leading: %g, widmax: %g", _ffAscent / (double)(1<<12),
+ _ffDescent / (double)(1<<12), _ffLeading / (double)(1<<12), _ffWidMax / (double)(1<<12));
+
+ debug(10, "wtaboff: %d kernoff: %d styloff: %d", _ffWTabOff, _ffKernOff, _ffStylOff);
+
+ debugN(10, "Extra width: ");
+ for (int i = 0; i < 9; i++) { // style properties info
_ffProperty[i] = stream.readUint16BE();
+ debugN(10, "%d ", _ffProperty[i]);
+ }
+ debug(10, "");
_ffIntl[0] = stream.readUint16BE(); // for international use
_ffIntl[1] = stream.readUint16BE(); // for international use
_ffVersion = stream.readUint16BE(); // version number
+ debug(10, "version: %d", _ffVersion);
+
_ffNumAssoc = stream.readUint16BE(); // number of entries - 1
_ffAssocEntries.resize(_ffNumAssoc + 1);
+
+ debug(10, "association cnt: %d", _ffNumAssoc + 1);
+
for (uint i = 0; i <= _ffNumAssoc; i++) {
_ffAssocEntries[i]._fontSize = stream.readUint16BE(); // point size of font
- _ffAssocEntries[i]._fontStyle = stream.readUint16BE(); // style of font
+ _ffAssocEntries[i]._fontSize = stream.readUint16BE(); // style of font
_ffAssocEntries[i]._fontID = stream.readUint16BE(); // font resource ID
+
+ debug(10, "size: %d style: %d id: %d", _ffAssocEntries[i]._fontSize, _ffAssocEntries[i]._fontSize,
+ _ffAssocEntries[i]._fontID);
}
if (_ffWTabOff || _ffStylOff || _ffKernOff) {
Commit: fd82fa5308a53f47bc5c7209fb756074ac579dc2
https://github.com/scummvm/scummvm/commit/fd82fa5308a53f47bc5c7209fb756074ac579dc2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-17T10:56:33+01:00
Commit Message:
DIRECTOR: Added test for font loading
Changed paths:
engines/director/director.cpp
engines/director/director.h
engines/director/score.cpp
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 83708e0..4eb7d55 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -24,6 +24,9 @@
#include "common/debug-channels.h"
#include "common/error.h"
+#include "common/macresman.h"
+#include "graphics/fonts/macfont.h"
+
#include "graphics/macgui/macwindowmanager.h"
#include "director/director.h"
@@ -116,6 +119,8 @@ Common::Error DirectorEngine::run() {
_mainArchive = nullptr;
_currentScore = nullptr;
+ testFonts();
+
_lingo->runTests();
return Common::kNoError;
@@ -125,7 +130,7 @@ Common::Error DirectorEngine::run() {
//_mainArchive = new RIFFArchive();
//_mainArchive->openFile("bookshelf_example.mmm");
- //testFont();
+ //testFontScaling();
if (getPlatform() == Common::kPlatformWindows)
_sharedCastFile = "SHARDCST.MMM";
@@ -190,4 +195,22 @@ void DirectorEngine::setPalette(byte *palette, uint16 count) {
_currentPaletteLength = count;
}
+void DirectorEngine::testFonts() {
+ Common::String fontName("San Francisco");
+
+ Common::MacResManager *fontFile = new Common::MacResManager();
+ if (!fontFile->open(fontName))
+ error("Could not open %s as a resource fork", fontName.c_str());
+
+ Common::MacResIDArray fonds = fontFile->getResIDArray(MKTAG('F','O','N','D'));
+ if (fonds.size() > 0) {
+ for (Common::Array<uint16>::iterator iterator = fonds.begin(); iterator != fonds.end(); ++iterator) {
+ Common::SeekableReadStream *stream = fontFile->getResource(MKTAG('F', 'O', 'N', 'D'), *iterator);
+
+ Graphics::MacFont font;
+ font.loadFOND(*stream);
+ }
+ }
+}
+
} // End of namespace Director
diff --git a/engines/director/director.h b/engines/director/director.h
index a2cc1fa..8d5f6b5 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -142,7 +142,8 @@ private:
Common::String _sharedCastFile;
private:
- void testFont();
+ void testFontScaling();
+ void testFonts();
};
extern DirectorEngine *g_director;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index d8c21d6..18cfd53 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -91,7 +91,7 @@ static byte defaultPalette[768] = {
204, 51, 255, 204, 102, 255, 204, 153, 255, 204, 204, 255, 204, 255, 255, 255,
0, 255, 255, 51, 255, 255, 102, 255, 255, 153, 255, 255, 204, 255, 255, 255 };
-void DirectorEngine::testFont() {
+void DirectorEngine::testFontScaling() {
int x = 10;
int y = 10;
int w = 640;
Commit: 4236d93aae16bd5e5cf63256fd7617961da49204
https://github.com/scummvm/scummvm/commit/4236d93aae16bd5e5cf63256fd7617961da49204
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-17T10:56:33+01:00
Commit Message:
GRAPHICS: Fix FOND loading
Changed paths:
graphics/fonts/macfont.cpp
graphics/fonts/macfont.h
diff --git a/graphics/fonts/macfont.cpp b/graphics/fonts/macfont.cpp
index 396ac0c..1b094c2 100644
--- a/graphics/fonts/macfont.cpp
+++ b/graphics/fonts/macfont.cpp
@@ -113,10 +113,10 @@ bool MacFont::loadFOND(Common::SeekableReadStream &stream) {
_ffFamID = stream.readUint16BE(); // family ID number
_ffFirstChar = stream.readUint16BE(); // ASCII code of first character
_ffLastChar = stream.readUint16BE(); // ASCII code of last character
- _ffAscent = stream.readUint16BE(); // maximum ascent for 1-pt font
- _ffDescent = stream.readUint16BE(); // maximum descent for 1-pt font
- _ffLeading = stream.readUint16BE(); // maximum leading for 1-pt font
- _ffWidMax = stream.readUint16BE(); // maximum glyph width for 1-pt font
+ _ffAscent = stream.readSint16BE(); // maximum ascent for 1-pt font
+ _ffDescent = stream.readSint16BE(); // maximum descent for 1-pt font
+ _ffLeading = stream.readSint16BE(); // maximum leading for 1-pt font
+ _ffWidMax = stream.readSint16BE(); // maximum glyph width for 1-pt font
_ffWTabOff = stream.readUint32BE(); // offset to family glyph-width table
_ffKernOff = stream.readUint32BE(); // offset to kerning table
_ffStylOff = stream.readUint32BE(); // offset to style-mapping table
@@ -150,24 +150,33 @@ bool MacFont::loadFOND(Common::SeekableReadStream &stream) {
_ffAssocEntries[i]._fontSize = stream.readUint16BE(); // style of font
_ffAssocEntries[i]._fontID = stream.readUint16BE(); // font resource ID
- debug(10, "size: %d style: %d id: %d", _ffAssocEntries[i]._fontSize, _ffAssocEntries[i]._fontSize,
+ debug(10, " size: %d style: %d id: %d", _ffAssocEntries[i]._fontSize, _ffAssocEntries[i]._fontSize,
_ffAssocEntries[i]._fontID);
}
if (_ffWTabOff || _ffStylOff || _ffKernOff) {
_ffNumOffsets = stream.readUint16BE(); // number of entries - 1
_ffOffsets = (uint32 *)calloc(_ffNumOffsets + 1, sizeof(uint32));
- for (uint i = 0; i <= _ffNumOffsets; i++)
+ debugN(10, "offset cnt: %d, OFF: ", _ffNumOffsets + 1);
+ for (uint i = 0; i <= _ffNumOffsets; i++) {
_ffOffsets[i] = stream.readUint32BE();
+ debugN(10, "%d ", _ffOffsets[i]);
+ }
+ debug(10, "");
_ffNumBBoxes = stream.readUint16BE(); // number of entries - 1
_ffBBoxes.resize(_ffNumBBoxes + 1);
+ debug(10, "num BBoxes: %d", _ffNumBBoxes + 1);
for (uint i = 0; i <= _ffNumBBoxes; i++) {
_ffBBoxes[i]._style = stream.readUint16BE();
- _ffBBoxes[i]._left = stream.readUint16BE();
- _ffBBoxes[i]._bottom = stream.readUint16BE();
- _ffBBoxes[i]._right = stream.readUint16BE();
- _ffBBoxes[i]._top = stream.readUint16BE();
+ _ffBBoxes[i]._left = stream.readSint16BE();
+ _ffBBoxes[i]._bottom = stream.readSint16BE();
+ _ffBBoxes[i]._right = stream.readSint16BE();
+ _ffBBoxes[i]._top = stream.readSint16BE();
+
+ debug(10, "style: %d left: %g bottom: %g rigth: %g top: %g", _ffBBoxes[i]._style,
+ _ffBBoxes[i]._left / (double)(1<<12), _ffBBoxes[i]._bottom / (double)(1<<12),
+ _ffBBoxes[i]._right / (double)(1<<12), _ffBBoxes[i]._top / (double)(1<<12));
}
}
@@ -185,15 +194,19 @@ bool MacFont::loadFOND(Common::SeekableReadStream &stream) {
_ffNumKerns = stream.readUint16BE(); // number of entries - 1
_ffKernEntries.resize(_ffNumKerns + 1);
+ debug(10, "kern entries: %d", _ffNumKerns + 1);
+
for (uint i = 0; i <= _ffNumKerns; i++) {
_ffKernEntries[i]._style = stream.readUint16BE();
_ffKernEntries[i]._entryLength = stream.readUint16BE();
- _ffKernEntries[i]._kernPairs.resize(_ffKernEntries[i]._entryLength / 4);
+ _ffKernEntries[i]._kernPairs.resize(_ffKernEntries[i]._entryLength);
+
+ debug(10, " style: %d kernpairs: %d", _ffKernEntries[i]._style, _ffKernEntries[i]._entryLength);
- for (uint j = 0; j < _ffKernEntries[i]._entryLength / 4; j++) {
+ for (uint j = 0; j < _ffKernEntries[i]._entryLength; j++) {
_ffKernEntries[i]._kernPairs[j]._firstChar = stream.readByte();
_ffKernEntries[i]._kernPairs[j]._secondChar = stream.readByte();
- _ffKernEntries[i]._kernPairs[j]._distance = stream.readUint16BE();
+ _ffKernEntries[i]._kernPairs[j]._distance = stream.readSint16BE();
}
}
}
diff --git a/graphics/fonts/macfont.h b/graphics/fonts/macfont.h
index 40a54f2..c357346 100644
--- a/graphics/fonts/macfont.h
+++ b/graphics/fonts/macfont.h
@@ -65,10 +65,10 @@ private:
uint16 _ffFamID;
uint16 _ffFirstChar;
uint16 _ffLastChar;
- uint16 _ffAscent;
- uint16 _ffDescent;
- uint16 _ffLeading;
- uint16 _ffWidMax;
+ int16 _ffAscent;
+ int16 _ffDescent;
+ int16 _ffLeading;
+ int16 _ffWidMax;
uint32 _ffWTabOff;
uint32 _ffKernOff;
uint32 _ffStylOff;
@@ -90,10 +90,10 @@ private:
struct BBoxEntry {
uint16 _style;
- uint16 _left;
- uint16 _bottom;
- uint16 _right;
- uint16 _top;
+ int16 _left;
+ int16 _bottom;
+ int16 _right;
+ int16 _top;
};
uint16 _ffNumBBoxes;
More information about the Scummvm-git-logs
mailing list