diff options
author | Torbjörn Andersson | 2007-02-03 05:50:35 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2007-02-03 05:50:35 +0000 |
commit | ea4053567806ab80037fdd5060503731e6991362 (patch) | |
tree | 1405ea18dc820b2eca8bcc2f9a434e3d05e21a26 /engines/scumm/charset.cpp | |
parent | 5395c4a2f4463ec2f3f9fdcc42d6f0a37f085620 (diff) | |
download | scummvm-rg350-ea4053567806ab80037fdd5060503731e6991362.tar.gz scummvm-rg350-ea4053567806ab80037fdd5060503731e6991362.tar.bz2 scummvm-rg350-ea4053567806ab80037fdd5060503731e6991362.zip |
Applied the revised NUT font renderer patch #1635584, which combines cyx's
patch for correct (not to mention more efficient) rendering of CMI's shadowed
letters, while retaining most of the memory savings of my original patch. This
time, SMUSH and INSANE fonts also benefit from it.
svn-id: r25345
Diffstat (limited to 'engines/scumm/charset.cpp')
-rw-r--r-- | engines/scumm/charset.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index 6fb1949ede..654a7fd6c3 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -1626,7 +1626,7 @@ void CharsetRendererNut::setCurID(byte id) { if (!_fr[id]) { char fontname[11]; sprintf(fontname, "font%d.nut", id); - _fr[id] = new NutRenderer(_vm, fontname, true); + _fr[id] = new NutRenderer(_vm, fontname); } _current = _fr[id]; assert(_current); @@ -1655,12 +1655,8 @@ void CharsetRendererNut::printChar(int chr, bool ignoreCharsetMask) { if (chr == '@') return; - shadow.left = _left - 1; - shadow.top = _top - 1; - - // Note that the character is drawn with a shadow, so it is slightly - // larger than the advertised dimensions. See drawShadowChar() for - // details. + shadow.left = _left; + shadow.top = _top; if (_firstChar) { _str.left = (shadow.left >= 0) ? shadow.left : 0; @@ -1676,8 +1672,8 @@ void CharsetRendererNut::printChar(int chr, bool ignoreCharsetMask) { if (chr >= 256 && _vm->_useCJKMode) width = _vm->_2byteWidth; - shadow.right = _left + width + 2; - shadow.bottom = _top + height + 2; + shadow.right = _left + width; + shadow.bottom = _top + height; Graphics::Surface s; if (!ignoreCharsetMask) { @@ -1695,7 +1691,10 @@ void CharsetRendererNut::printChar(int chr, bool ignoreCharsetMask) { drawTop -= _vm->_screenTop; } - _current->drawShadowChar(s, chr, _left, drawTop, _color, _curId != 3); + if (chr >= 256 && _vm->_useCJKMode) + _current->draw2byte(s, chr, _left, drawTop, _color); + else + _current->drawChar(s, (byte)chr, _left, drawTop, _color); _vm->markRectAsDirty(kMainVirtScreen, shadow); if (_str.left > _left) |