aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/charset.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2007-02-03 05:50:35 +0000
committerTorbjörn Andersson2007-02-03 05:50:35 +0000
commitea4053567806ab80037fdd5060503731e6991362 (patch)
tree1405ea18dc820b2eca8bcc2f9a434e3d05e21a26 /engines/scumm/charset.cpp
parent5395c4a2f4463ec2f3f9fdcc42d6f0a37f085620 (diff)
downloadscummvm-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.cpp19
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)