svn-id: r13490
This commit is contained in:
Max Horn 2004-04-06 22:02:02 +00:00
parent 44019f8bfa
commit fa87f49784

View File

@ -946,8 +946,7 @@ void CharsetRendererV3::printChar(int chr) {
// Indy3 / Zak256 / Loom // Indy3 / Zak256 / Loom
VirtScreen *vs; VirtScreen *vs;
byte *char_ptr, *dest_ptr, *mask_ptr; byte *char_ptr, *dest_ptr, *mask_ptr;
bool useMask; int width, height;
int w, h;
int drawTop; int drawTop;
checkRange(_vm->_numCharsets - 1, 0, _curId, "Printing with bad charset %d"); checkRange(_vm->_numCharsets - 1, 0, _curId, "Printing with bad charset %d");
@ -966,21 +965,20 @@ void CharsetRendererV3::printChar(int chr) {
_firstChar = false; _firstChar = false;
} }
w = h = 8; width = height = 8;
if (_dropShadow) { if (_dropShadow) {
w++; width++;
h++; height++;
} }
drawTop = _top - vs->topline; drawTop = _top - vs->topline;
char_ptr = _fontPtr + chr * 8; char_ptr = _fontPtr + chr * 8;
dest_ptr = vs->screenPtr + vs->xstart + drawTop * vs->width + _left; dest_ptr = vs->screenPtr + vs->xstart + drawTop * vs->width + _left;
mask_ptr = _vm->getMaskBuffer(_left, drawTop, 0); mask_ptr = _vm->getMaskBuffer(_left, drawTop, 0);
useMask = (vs->number == kMainVirtScreen && !_ignoreCharsetMask);
_vm->markRectAsDirty(vs->number, _left, _left + w, drawTop, drawTop + h); _vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height);
if (vs->number == kMainVirtScreen) if (vs->number == kMainVirtScreen && !_ignoreCharsetMask)
_hasMask = true; _hasMask = true;
drawBits1(vs, dest_ptr, char_ptr, mask_ptr, drawTop, 8, 8); drawBits1(vs, dest_ptr, char_ptr, mask_ptr, drawTop, 8, 8);
@ -996,8 +994,8 @@ void CharsetRendererV3::printChar(int chr) {
_str.right++; _str.right++;
} }
if (_str.bottom < _top + h) if (_str.bottom < _top + height)
_str.bottom = _top + h; _str.bottom = _top + height;
} }
void CharsetRendererClassic::printChar(int chr) { void CharsetRendererClassic::printChar(int chr) {
@ -1086,8 +1084,6 @@ void CharsetRendererClassic::printChar(int chr) {
_vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height + offsY); _vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height + offsY);
if (!vs->hasTwoBuffers)
_blitAlso = false;
if (vs->number == kMainVirtScreen && !_ignoreCharsetMask) if (vs->number == kMainVirtScreen && !_ignoreCharsetMask)
_hasMask = true; _hasMask = true;
@ -1096,7 +1092,7 @@ void CharsetRendererClassic::printChar(int chr) {
byte *dst = vs->screenPtr + vs->xstart + drawTop * vs->width + _left; byte *dst = vs->screenPtr + vs->xstart + drawTop * vs->width + _left;
byte *back = dst; byte *back = dst;
if (_blitAlso) { if (_blitAlso && vs->hasTwoBuffers) {
dst = vs->backBuf + vs->xstart + drawTop * vs->width + _left; dst = vs->backBuf + vs->xstart + drawTop * vs->width + _left;
} }
@ -1107,7 +1103,7 @@ void CharsetRendererClassic::printChar(int chr) {
drawBitsN(vs, dst, charPtr, mask, bpp, drawTop, origWidth, origHeight); drawBitsN(vs, dst, charPtr, mask, bpp, drawTop, origWidth, origHeight);
} }
if (_blitAlso) { if (_blitAlso && vs->hasTwoBuffers) {
int h = height; int h = height;
do { do {
memcpy(back, dst, width); memcpy(back, dst, width);