diff options
author | johndoe123 | 2016-03-26 22:39:37 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | 5e919fd3084d12f1d9ff9c9921e5993b8ae318eb (patch) | |
tree | b3033d48e6d5a3c4d0d92c4884416d74a9193d31 /engines | |
parent | 2bd13865285058d72e13150ab64462dbbe23163c (diff) | |
download | scummvm-rg350-5e919fd3084d12f1d9ff9c9921e5993b8ae318eb.tar.gz scummvm-rg350-5e919fd3084d12f1d9ff9c9921e5993b8ae318eb.tar.bz2 scummvm-rg350-5e919fd3084d12f1d9ff9c9921e5993b8ae318eb.zip |
ILLUSIONS: Split Screen class into variants for 8bit and 16bit (i.e. Duckman and BBDOU)
Diffstat (limited to 'engines')
-rw-r--r-- | engines/illusions/actor.cpp | 2 | ||||
-rw-r--r-- | engines/illusions/bbdou/illusions_bbdou.cpp | 6 | ||||
-rw-r--r-- | engines/illusions/duckman/illusions_duckman.cpp | 2 | ||||
-rw-r--r-- | engines/illusions/screen.cpp | 312 | ||||
-rw-r--r-- | engines/illusions/screen.h | 59 |
5 files changed, 176 insertions, 205 deletions
diff --git a/engines/illusions/actor.cpp b/engines/illusions/actor.cpp index 591ad184dd..a99a124057 100644 --- a/engines/illusions/actor.cpp +++ b/engines/illusions/actor.cpp @@ -946,7 +946,7 @@ void Control::fillActor(byte color) { bool Control::isPixelCollision(Common::Point &pt) { Frame *frame = &(*_actor->_frames)[_actor->_frameIndex - 1]; - return _vm->_screen->isSpritePixelSolid16(pt, _position, _actor->_position, + return _vm->_screen->isSpritePixelSolid(pt, _position, _actor->_position, _actor->_surfInfo, _actor->_scale, frame->_flags, frame->_compressedPixels); } diff --git a/engines/illusions/bbdou/illusions_bbdou.cpp b/engines/illusions/bbdou/illusions_bbdou.cpp index 15b103108d..e3b0df2d07 100644 --- a/engines/illusions/bbdou/illusions_bbdou.cpp +++ b/engines/illusions/bbdou/illusions_bbdou.cpp @@ -151,7 +151,7 @@ Common::Error IllusionsEngine_BBDOU::run() { _resSys->addResourceLoader(0x00120000, new FontResourceLoader(this)); _resSys->addResourceLoader(0x00170000, new SpecialCodeLoader(this)); - _screen = new Screen(this, 640, 480, 16); + _screen = new Screen16Bit(this, 640, 480); _screenPalette = new NullScreenPalette(); _screenText = new ScreenText(this); _input = new Input(); @@ -569,8 +569,8 @@ void IllusionsEngine_BBDOU::dumpActiveScenes(uint32 sceneId, uint32 threadId) { } void IllusionsEngine_BBDOU::enterMenuPause() { - // TODO suspendAudio(); - _screenText->clearText(); + // TODO suspendAudio(); + _screenText->clearText(); } void IllusionsEngine_BBDOU::leaveMenuPause() { diff --git a/engines/illusions/duckman/illusions_duckman.cpp b/engines/illusions/duckman/illusions_duckman.cpp index a9f6b6e2af..2cd338b1db 100644 --- a/engines/illusions/duckman/illusions_duckman.cpp +++ b/engines/illusions/duckman/illusions_duckman.cpp @@ -103,7 +103,7 @@ Common::Error IllusionsEngine_Duckman::run() { _resSys->addResourceLoader(0x00120000, new FontResourceLoader(this)); _resSys->addResourceLoader(0x00190000, new GenericResourceLoader(this)); - _screen = new Screen(this, 320, 200, 8); + _screen = new Screen8Bit(this, 320, 200); _screenPalette = new ScreenPalette(this); _screenText = new ScreenText(this); _input = new Input(); diff --git a/engines/illusions/screen.cpp b/engines/illusions/screen.cpp index 3cbdd9158a..0b04c2a1d9 100644 --- a/engines/illusions/screen.cpp +++ b/engines/illusions/screen.cpp @@ -449,111 +449,9 @@ void Screen::clearScreenOffsetAreas() { _backSurface->fillRect(Common::Rect(x1, 0, x2, _backSurface->h), 0); } -void Screen::decompressSprite(SpriteDecompressQueueItem *item) { - switch (_backSurface->format.bytesPerPixel) { - case 1: - decompressSprite8(item); - break; - case 2: - decompressSprite16(item); - break; - default: - break; - } -} - -void Screen::drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags) { - switch (_backSurface->format.bytesPerPixel) { - case 1: - drawSurface8(dstRect, surface, srcRect, scale, flags); - break; - case 2: - drawSurface16(dstRect, surface, srcRect, scale, flags); - break; - default: - break; - } -} - -void Screen::drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count) { - switch (_backSurface->format.bytesPerPixel) { - case 1: - drawText8(font, surface, x, y, text, count); - break; - case 2: - drawText16(font, surface, x, y, text, count); - break; - default: - break; - } -} - -void Screen::fillSurface(Graphics::Surface *surface, byte color) { - Common::Rect r = Common::Rect(surface->w, surface->h); - switch (_backSurface->format.bytesPerPixel) { - case 1: - surface->fillRect(r, color); - break; - case 2: - surface->fillRect(r, convertColor(color)); - break; - default: - break; - } -} - -uint16 Screen::convertColor(byte color) { - if (color == 0) - return _colorKey1; - if (color == 20) - return g_system->getScreenFormat().RGBToColor(255, 255, 255); - if (color == 80) - return g_system->getScreenFormat().RGBToColor(176, 176, 176); - return g_system->getScreenFormat().RGBToColor(16, 16, 16); -} - -void Screen::drawText8(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count) { - for (uint i = 0; i < count; ++i) - x += font->_widthC + drawChar8(font, surface, x, y, *text++); -} +// Screen8Bit -int16 Screen::drawChar8(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c) { - const CharInfo *charInfo = font->getCharInfo(c); - const int16 charWidth = charInfo->_width; - byte *dst = (byte*)surface->getBasePtr(x, y); - byte *pixels = charInfo->_pixels; - for (int16 yc = 0; yc < font->_charHeight; ++yc) { - for (int16 xc = 0; xc < charWidth; ++xc) - if (pixels[xc]) - dst[xc] = pixels[xc]; - dst += surface->pitch; - pixels += charWidth; - } - return charWidth; -} - -void Screen::drawText16(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count) { - for (uint i = 0; i < count; ++i) - x += font->_widthC + drawChar16(font, surface, x, y, *text++); -} - -int16 Screen::drawChar16(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c) { - const CharInfo *charInfo = font->getCharInfo(c); - const int16 charWidth = charInfo->_width; - byte *pixels = charInfo->_pixels; - for (int16 yc = 0; yc < font->_charHeight; ++yc) { - byte *dst = (byte*)surface->getBasePtr(x, y + yc); - for (int16 xc = 0; xc < charWidth; ++xc) { - if (pixels[xc]) - WRITE_LE_UINT16(dst, convertFontColor(pixels[xc])); - dst += 2; - } - pixels += charWidth; - } - return charWidth; -} - -void Screen::decompressSprite8(SpriteDecompressQueueItem *item) { +void Screen8Bit::decompressSprite(SpriteDecompressQueueItem *item) { byte *src = item->_compressedPixels; Graphics::Surface *dstSurface = item->_surface; int dstSize = item->_dimensions._width * item->_dimensions._height; @@ -587,9 +485,9 @@ void Screen::decompressSprite8(SpriteDecompressQueueItem *item) { y = 0; yincr = 1; } - + byte *dst = (byte*)dstSurface->getBasePtr(x, y); - + while (processedSize < dstSize) { byte op = *src++; if (op & 0x80) { @@ -627,16 +525,45 @@ void Screen::decompressSprite8(SpriteDecompressQueueItem *item) { } -void Screen::drawSurface8(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags) { +void Screen8Bit::drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags) { if (scale == 100) { - drawSurface81(dstRect.left, dstRect.top, surface, srcRect); + drawSurfaceUnscaled(dstRect.left, dstRect.top, surface, srcRect); } else { - drawSurface82(dstRect, surface, srcRect); + drawSurfaceScaled(dstRect, surface, srcRect); } } -void Screen::drawSurface81(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect) { - // Unscaled +void Screen8Bit::drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count) { + for (uint i = 0; i < count; ++i) + x += font->_widthC + drawChar(font, surface, x, y, *text++); +} + +void Screen8Bit::fillSurface(Graphics::Surface *surface, byte color) { + surface->fillRect(Common::Rect(surface->w, surface->h), color); +} + +bool Screen8Bit::isSpritePixelSolid(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, + const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels) { + // Unused in Duckman + return false; +} + +int16 Screen8Bit::drawChar(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c) { + const CharInfo *charInfo = font->getCharInfo(c); + const int16 charWidth = charInfo->_width; + byte *dst = (byte*)surface->getBasePtr(x, y); + byte *pixels = charInfo->_pixels; + for (int16 yc = 0; yc < font->_charHeight; ++yc) { + for (int16 xc = 0; xc < charWidth; ++xc) + if (pixels[xc]) + dst[xc] = pixels[xc]; + dst += surface->pitch; + pixels += charWidth; + } + return charWidth; +} + +void Screen8Bit::drawSurfaceUnscaled(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect) { const int16 w = srcRect.width(); const int16 h = srcRect.height(); const byte* colorTransTbl = _vm->_screenPalette->getColorTransTbl(); @@ -656,8 +583,7 @@ void Screen::drawSurface81(int16 destX, int16 destY, Graphics::Surface *surface, } } -void Screen::drawSurface82(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect) { - // Scaled +void Screen8Bit::drawSurfaceScaled(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect) { const int dstWidth = dstRect.width(), dstHeight = dstRect.height(); const int srcWidth = srcRect.width(), srcHeight = srcRect.height(); const int errYStart = srcHeight / dstHeight; @@ -712,7 +638,9 @@ void Screen::drawSurface82(Common::Rect &dstRect, Graphics::Surface *surface, Co } } -void Screen::decompressSprite16(SpriteDecompressQueueItem *item) { +// Screen16Bit + +void Screen16Bit::decompressSprite(SpriteDecompressQueueItem *item) { byte *src = item->_compressedPixels; Graphics::Surface *dstSurface = item->_surface; int dstSize = item->_dimensions._width * item->_dimensions._height; @@ -789,7 +717,7 @@ void Screen::decompressSprite16(SpriteDecompressQueueItem *item) { } -void Screen::drawSurface16(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags) { +void Screen16Bit::drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags) { if (scale == 100) { if (flags & 1) drawSurface10(dstRect.left, dstRect.top, surface, srcRect, _colorKey2); @@ -803,13 +731,94 @@ void Screen::drawSurface16(Common::Rect &dstRect, Graphics::Surface *surface, Co } } -void Screen::drawSurface10(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey) { +void Screen16Bit::drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count) { + for (uint i = 0; i < count; ++i) + x += font->_widthC + drawChar(font, surface, x, y, *text++); +} + +void Screen16Bit::fillSurface(Graphics::Surface *surface, byte color) { + surface->fillRect(Common::Rect(surface->w, surface->h), convertColor(color)); +} + +bool Screen16Bit::isSpritePixelSolid(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, + const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels) { + + int ptX = scale * drawPosition.x / 100 + testPt.x - drawOffset.x; + int ptY = scale * drawPosition.y / 100 + testPt.y - drawOffset.y; + + if (flags & 1) { + const int scaledWidth = scale * surfInfo._dimensions._width / 100; + ptX += 2 * (scaledWidth - scaledWidth / 2 - ptX); + } + + if (flags & 2) { + const int scaledHeight = scale * surfInfo._dimensions._height / 100; + ptY += 2 * (scaledHeight - scaledHeight / 2 - ptY); + } + + const int pixelLookX = 100 * ptX / scale; + const int pixelLookY = 100 * ptY / scale; + const int lookOffset = pixelLookX + surfInfo._dimensions._width * pixelLookY; + const int dstSize = surfInfo._dimensions._width * surfInfo._dimensions._height; + + if (pixelLookX < 0 || pixelLookX >= surfInfo._dimensions._width || + pixelLookY < 0 || pixelLookY >= surfInfo._dimensions._height || + lookOffset < 0 || lookOffset >= dstSize) + return false; + + byte *src = compressedPixels; + int processedSize = 0; + + while (processedSize < dstSize) { + int16 op = READ_LE_UINT16(src); + src += 2; + if (op & 0x8000) { + int runCount = (op & 0x7FFF) + 1; + uint16 runColor = READ_LE_UINT16(src); + src += 2; + while (runCount--) { + if (processedSize == lookOffset) + return runColor != _colorKey1; + ++processedSize; + } + } else { + int copyCount = op + 1; + while (copyCount--) { + uint16 color = READ_LE_UINT16(src); + src += 2; + if (processedSize == lookOffset) + return color != _colorKey1; + ++processedSize; + } + } + } + + return false; +} + +int16 Screen16Bit::drawChar(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c) { + const CharInfo *charInfo = font->getCharInfo(c); + const int16 charWidth = charInfo->_width; + byte *pixels = charInfo->_pixels; + for (int16 yc = 0; yc < font->_charHeight; ++yc) { + byte *dst = (byte*)surface->getBasePtr(x, y + yc); + for (int16 xc = 0; xc < charWidth; ++xc) { + if (pixels[xc]) + WRITE_LE_UINT16(dst, convertFontColor(pixels[xc])); + dst += 2; + } + pixels += charWidth; + } + return charWidth; +} + +void Screen16Bit::drawSurface10(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey) { // Unscaled // TODO //debug("Screen::drawSurface10"); } -void Screen::drawSurface11(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect) { +void Screen16Bit::drawSurface11(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect) { // Unscaled //debug("Screen::drawSurface11() destX: %d; destY: %d; srcRect: (%d, %d, %d, %d)", destX, destY, srcRect.left, srcRect.top, srcRect.right, srcRect.bottom); const int16 w = srcRect.width(); @@ -827,13 +836,13 @@ void Screen::drawSurface11(int16 destX, int16 destY, Graphics::Surface *surface, } } -void Screen::drawSurface20(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey) { +void Screen16Bit::drawSurface20(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey) { // Scaled // TODO //debug("Screen::drawSurface20"); } -void Screen::drawSurface21(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect) { +void Screen16Bit::drawSurface21(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect) { // Scaled const int dstWidth = dstRect.width(), dstHeight = dstRect.height(); const int srcWidth = srcRect.width(), srcHeight = srcRect.height(); @@ -878,66 +887,19 @@ void Screen::drawSurface21(Common::Rect &dstRect, Graphics::Surface *surface, Co ++srcY; } } - } -bool Screen::isSpritePixelSolid16(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, - const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels) { - - int ptX = scale * drawPosition.x / 100 + testPt.x - drawOffset.x; - int ptY = scale * drawPosition.y / 100 + testPt.y - drawOffset.y; - - if (flags & 1) { - const int scaledWidth = scale * surfInfo._dimensions._width / 100; - ptX += 2 * (scaledWidth - scaledWidth / 2 - ptX); - } - - if (flags & 2) { - const int scaledHeight = scale * surfInfo._dimensions._height / 100; - ptY += 2 * (scaledHeight - scaledHeight / 2 - ptY); - } - - const int pixelLookX = 100 * ptX / scale; - const int pixelLookY = 100 * ptY / scale; - const int lookOffset = pixelLookX + surfInfo._dimensions._width * pixelLookY; - const int dstSize = surfInfo._dimensions._width * surfInfo._dimensions._height; - - if (pixelLookX < 0 || pixelLookX >= surfInfo._dimensions._width || - pixelLookY < 0 || pixelLookY >= surfInfo._dimensions._height || - lookOffset < 0 || lookOffset >= dstSize) - return false; - - byte *src = compressedPixels; - int processedSize = 0; - - while (processedSize < dstSize) { - int16 op = READ_LE_UINT16(src); - src += 2; - if (op & 0x8000) { - int runCount = (op & 0x7FFF) + 1; - uint16 runColor = READ_LE_UINT16(src); - src += 2; - while (runCount--) { - if (processedSize == lookOffset) - return runColor != _colorKey1; - ++processedSize; - } - } else { - int copyCount = op + 1; - while (copyCount--) { - uint16 color = READ_LE_UINT16(src); - src += 2; - if (processedSize == lookOffset) - return color != _colorKey1; - ++processedSize; - } - } - } - - return false; +uint16 Screen16Bit::convertColor(byte color) { + if (color == 0) + return _colorKey1; + if (color == 20) + return g_system->getScreenFormat().RGBToColor(255, 255, 255); + if (color == 80) + return g_system->getScreenFormat().RGBToColor(176, 176, 176); + return g_system->getScreenFormat().RGBToColor(16, 16, 16); } -uint16 Screen::convertFontColor(byte color) { +uint16 Screen16Bit::convertFontColor(byte color) { if (color) { byte r, g, b; if (color == 204) { diff --git a/engines/illusions/screen.h b/engines/illusions/screen.h index 7715058597..1da1d5bcaa 100644 --- a/engines/illusions/screen.h +++ b/engines/illusions/screen.h @@ -152,12 +152,10 @@ protected: class NullScreenPalette : public ScreenPaletteBase { }; -// TODO Split into two classes (8bit and 16bit)? - class Screen { public: Screen(IllusionsEngine *vm, int16 width, int16 height, int bpp); - ~Screen(); + virtual ~Screen(); Graphics::Surface *allocSurface(int16 width, int16 height); Graphics::Surface *allocSurface(SurfInfo &surfInfo); bool isDisplayOn(); @@ -165,16 +163,17 @@ public: void setScreenOffset(Common::Point offsPt); void updateSprites(); void clearScreenOffsetAreas(); - void decompressSprite(SpriteDecompressQueueItem *item); - void drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags); - void drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count); - void fillSurface(Graphics::Surface *surface, byte color); - uint16 convertColor(byte color); uint16 getColorKey1() const { return _colorKey1; } void setColorKey1(uint16 colorKey) { _colorKey1 = colorKey; } uint16 getColorKey2() const { return _colorKey2; } int16 getScreenWidth() const { return _backSurface->w; } int16 getScreenHeight() const { return _backSurface->h; } + virtual void decompressSprite(SpriteDecompressQueueItem *item) = 0; + virtual void drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags) = 0; + virtual void drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count) = 0; + virtual void fillSurface(Graphics::Surface *surface, byte color) = 0; + virtual bool isSpritePixelSolid(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, + const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels) = 0; public: IllusionsEngine *_vm; bool _displayOn; @@ -183,31 +182,41 @@ public: SpriteDecompressQueue *_decompressQueue; SpriteDrawQueue *_drawQueue; Graphics::Surface *_backSurface; - bool _isScreenOffsetActive; Common::Point _screenOffsetPt; +}; - void drawText8(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count); - int16 drawChar8(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c); - - void drawText16(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count); - int16 drawChar16(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c); - - void decompressSprite8(SpriteDecompressQueueItem *item); - void drawSurface8(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags); - void drawSurface81(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect); - void drawSurface82(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect); +class Screen8Bit : public Screen { +public: + Screen8Bit(IllusionsEngine *vm, int16 width, int16 height) : Screen(vm, width, height, 8) {} + void decompressSprite(SpriteDecompressQueueItem *item); + void drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags); + void drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count); + void fillSurface(Graphics::Surface *surface, byte color); + bool isSpritePixelSolid(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, + const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels); +public: + int16 drawChar(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c); + void drawSurfaceUnscaled(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect); + void drawSurfaceScaled(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect); +}; - void decompressSprite16(SpriteDecompressQueueItem *item); - void drawSurface16(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags); +class Screen16Bit : public Screen { +public: + Screen16Bit(IllusionsEngine *vm, int16 width, int16 height) : Screen(vm, width, height, 16) {} + void decompressSprite(SpriteDecompressQueueItem *item); + void drawSurface(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, int16 scale, uint32 flags); + void drawText(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 *text, uint count); + void fillSurface(Graphics::Surface *surface, byte color); + bool isSpritePixelSolid(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, + const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels); +public: + int16 drawChar(FontResource *font, Graphics::Surface *surface, int16 x, int16 y, uint16 c); void drawSurface10(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey); void drawSurface11(int16 destX, int16 destY, Graphics::Surface *surface, Common::Rect &srcRect); void drawSurface20(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect, uint16 colorKey); void drawSurface21(Common::Rect &dstRect, Graphics::Surface *surface, Common::Rect &srcRect); - - bool isSpritePixelSolid16(Common::Point &testPt, Common::Point &drawPosition, Common::Point &drawOffset, - const SurfInfo &surfInfo, int16 scale, uint flags, byte *compressedPixels); - + uint16 convertColor(byte color); uint16 convertFontColor(byte color); }; |