Implement case 150 for drawBMAPBg

svn-id: r15408
This commit is contained in:
Eugene Sandulenko 2004-10-04 13:49:30 +00:00
parent 460212697a
commit 1cb05366f8
2 changed files with 16 additions and 1 deletions

View File

@ -1396,7 +1396,7 @@ void Gdi::drawBMAPBg(const byte *ptr, VirtScreen *vs, int startstrip) {
// for an area spanning multiple strips. In particular, the codecs 13 & 14
// in decompressBitmap call drawStripHE()
if (code == 150) {
warning("drawBMAPBg: case 150 unhandled");
fillRect((byte *)vs->backBuf, vs->pitch, 0, 0, vs->w - 1, vs->h - 1, *bmap_ptr);
} else if ((code >= 134 && code <= 138) || (code >= 144 && code <= 148)) {
_decomp_shr = code % 10;
_decomp_mask = 0xFF >> (8 - _decomp_shr);
@ -2174,6 +2174,20 @@ void Gdi::drawStripHE(byte *dst, int dstPitch, const byte *src, int width, int h
}
}
void Gdi::fillRect(byte *dst, int pitch, int x1, int y1, int x2, int y2, byte color) {
int w, h;
byte *ptr = dst + x1 + y1 * pitch;
w = x2 - x1 + 1;
h = y2 - y1 + 1;
for (int i = 0; i < h; i++) {
memset(ptr, color, w);
ptr += pitch;
}
}
#undef READ_BIT
#undef FILL_BITS

View File

@ -249,6 +249,7 @@ protected:
void drawStrip3DO(byte *dst, int dstPitch, const byte *src, int height, const bool transpCheck) const;
void drawStripHE(byte *dst, int dstPitch, const byte *src, int width, int height, const bool transpCheck) const;
void fillRect(byte *dst, int dstPitch, int x1, int y1, int x2, int y2, byte color);
/* Mask decompressors */
void drawStripC64Mask(byte *dst, int stripnr, int width, int height) const;