[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