SCUMM: (COMI/CJK) - fix smush font glyph shadows

I have confirmed that this type of shadow (one shadow pixel to the left, one to the right and one to the bottom) is drawn for all CJK characters in COMI.
This commit is contained in:
athrxx 2020-09-28 15:32:51 +02:00
parent e665730d3d
commit 1266fdeb0d

View File

@ -159,35 +159,17 @@ int SmushFont::draw2byte(byte *buffer, int dst_width, int x, int y, int idx) {
kNone,
kNormalShadowMode,
kCJKv7ShadowMode,
kKoreanV8ShadowMode
kCJKv8ShadowMode
};
ShadowMode shadowMode = kNone;
if (_vm->_useCJKMode) {
// TODO: Check Chinese and Japanese COMI
// For now the kKoreanV8ShadowMode is limited to Korean, because it isn't known yet
// how Chinese and Japanese COMI is supposed to look like (I suspect that this gets
// rendered the same way, just as it is done in DIG).
if (_vm->_game.version == 8 && _vm->_language == Common::KO_KOR)
shadowMode = kKoreanV8ShadowMode;
else if (_vm->_game.version != 8)
shadowMode = kCJKv7ShadowMode;
}
ShadowMode shadowMode = _vm->_useCJKMode ? (_vm->_game.version == 8 ? kCJKv8ShadowMode : kCJKv7ShadowMode) : kNone;
int shadowOffsetXTable[4] = { -1, 0, 1, 0 };
int shadowOffsetYTable[4] = { 0, 1, 0, 0 };
int shadowOffsetColorTable[4] = { 0, 0, 0, color };
int shadowIdx = 3;
if (shadowMode == kKoreanV8ShadowMode)
shadowIdx = 0;
else if (shadowMode == kCJKv7ShadowMode)
shadowIdx = 2;
const byte *origSrc = src;
for (; shadowIdx < 4; shadowIdx++) {
for (int shadowIdx = (shadowMode == kCJKv8ShadowMode) ? 0 : (shadowMode == kCJKv7ShadowMode ? 2 : 3); shadowIdx < 4; shadowIdx++) {
int offX = x + shadowOffsetXTable[shadowIdx];
int offY = y + shadowOffsetYTable[shadowIdx];
byte drawColor = shadowOffsetColorTable[shadowIdx];