[Scummvm-cvs-logs] CVS: scummvm/scumm nut_renderer.cpp,1.44,1.45
Max Horn
fingolfin at users.sourceforge.net
Sun Apr 4 13:04:01 CEST 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm akos.cpp,1.117,1.118 costume.cpp,1.127,1.128
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm camera.cpp,2.23,2.24 charset.h,2.25,2.26 gfx.cpp,2.270,2.271 saveload.cpp,1.150,1.151 string.cpp,1.212,1.213
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3036
Modified Files:
nut_renderer.cpp
Log Message:
Added TODO/FIXME comment
Index: nut_renderer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/nut_renderer.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- nut_renderer.cpp 4 Apr 2004 18:07:26 -0000 1.44
+++ nut_renderer.cpp 4 Apr 2004 19:50:52 -0000 1.45
@@ -144,14 +144,29 @@
}
_nbChars = READ_LE_UINT16(dataSrc + 10);
- uint32 offset = READ_BE_UINT32(dataSrc + 4) + 8;
+ uint32 offset = 0;
int32 decoded_length;
+
for (int l = 0; l < _nbChars; l++) {
+ offset += READ_BE_UINT32(dataSrc + offset + 4) + 8;
+
+ // TODO/FIXME: The code checks for a "shift" in the FRME headers. Well, neither
+ // in my german nor in my english NUT fonts does that occur, but it's very typical
+ // for IFF style formats (like this here) to "pad" odd sized blocks. Hence, it might
+ // be a cleaner solution to insert this adjustment here:
+ // if (offset & 1)
+ // offset++;
+ // And then get rid of the hack for the shifted FRME. I'd do that right now, but since
+ // I have no way to test this (read: no data files where this issue occurs), I am
+ // deferring this job for now :-)
+
if ((READ_BE_UINT32(dataSrc + offset) == 'FRME') || (READ_BE_UINT32(dataSrc + offset + 1) == 'FRME')) {
- if (READ_BE_UINT32(dataSrc + offset) == 'FRME')
+ if (READ_BE_UINT32(dataSrc + offset) == 'FRME') {
offset += 8;
- else if (READ_BE_UINT32(dataSrc + offset + 1) == 'FRME') // hack for proper offset
+ } else { // hack for proper offset
offset += 9;
+ }
+
if (READ_BE_UINT32(dataSrc + offset) == 'FOBJ') {
int codec = READ_LE_UINT16(dataSrc + offset + 8);
_chars[l].xoffs = READ_LE_UINT16(dataSrc + offset + 10);
@@ -159,6 +174,7 @@
_chars[l].width = READ_LE_UINT16(dataSrc + offset + 14);
_chars[l].height = READ_LE_UINT16(dataSrc + offset + 16);
_chars[l].src = new byte[(_chars[l].width + 2) * _chars[l].height + 1000];
+
// If characters have transparency, then bytes just get skipped and
// so there may appear some garbage. That's why we have to fill it
// with zeroes first.
@@ -181,8 +197,6 @@
if (l == 134 && !strcmp(filename, "titlfnt.nut"))
_chars[l].width--;
}
-
- offset += READ_BE_UINT32(dataSrc + offset + 4) + 8;
} else {
warning("NutRenderer::loadFont(%s, %s) there is no FOBJ chunk in FRME chunk %d (offset %x)", filename, directory, l, offset);
break;
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm akos.cpp,1.117,1.118 costume.cpp,1.127,1.128
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm camera.cpp,2.23,2.24 charset.h,2.25,2.26 gfx.cpp,2.270,2.271 saveload.cpp,1.150,1.151 string.cpp,1.212,1.213
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list