diff options
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/VectorRendererSpec.cpp | 38 | ||||
-rw-r--r-- | graphics/font.cpp | 6 | ||||
-rw-r--r-- | graphics/fonts/scummfont.cpp | 4 | ||||
-rw-r--r-- | graphics/fonts/winfont.cpp | 8 | ||||
-rw-r--r-- | graphics/png.cpp | 24 | ||||
-rw-r--r-- | graphics/scaler/thumbnail_intern.cpp | 6 | ||||
-rw-r--r-- | graphics/sjis.cpp | 2 | ||||
-rw-r--r-- | graphics/surface.cpp | 51 | ||||
-rw-r--r-- | graphics/surface.h | 4 | ||||
-rw-r--r-- | graphics/thumbnail.cpp | 6 |
10 files changed, 75 insertions, 74 deletions
diff --git a/graphics/VectorRendererSpec.cpp b/graphics/VectorRendererSpec.cpp index 0ee13033af..c2da969fb8 100644 --- a/graphics/VectorRendererSpec.cpp +++ b/graphics/VectorRendererSpec.cpp @@ -277,7 +277,7 @@ copyFrame(OSystem *sys, const Common::Rect &r) { sys->copyRectToOverlay( (const OverlayColor *)_activeSurface->getBasePtr(r.left, r.top), - _activeSurface->pitch / _activeSurface->bytesPerPixel, + _activeSurface->pitch / _activeSurface->format.bytesPerPixel, r.left, r.top, r.width(), r.height() ); } @@ -337,8 +337,8 @@ blitAlphaBitmap(const Graphics::Surface *source, const Common::Rect &r) { PixelType *dst_ptr = (PixelType *)_activeSurface->getBasePtr(x, y); const PixelType *src_ptr = (const PixelType *)source->getBasePtr(0, 0); - int dst_pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; - int src_pitch = source->pitch / source->bytesPerPixel; + int dst_pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; + int src_pitch = source->pitch / source->format.bytesPerPixel; int w, h = source->h; @@ -485,7 +485,7 @@ drawLine(int x1, int y1, int x2, int y2) { return; PixelType *ptr = (PixelType *)_activeSurface->getBasePtr(x1, y1); - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int st = Base::_strokeWidth >> 1; if (dy == 0) { // horizontal lines @@ -733,7 +733,7 @@ void VectorRendererSpec<PixelType>:: drawTabAlg(int x1, int y1, int w, int h, int r, PixelType color, VectorRenderer::FillMode fill_m, int baseLeft, int baseRight) { int f, ddF_x, ddF_y; int x, y, px, py; - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int sw = 0, sp = 0, hp = 0; PixelType *ptr_tl = (PixelType *)Base::_activeSurface->getBasePtr(x1 + r, y1 + r); @@ -831,7 +831,7 @@ drawTabAlg(int x1, int y1, int w, int h, int r, PixelType color, VectorRenderer: template<typename PixelType> void VectorRendererSpec<PixelType>:: drawBevelTabAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color, int baseLeft, int baseRight) { - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int i, j; PixelType *ptr_left = (PixelType *)_activeSurface->getBasePtr(x, y); @@ -876,7 +876,7 @@ template<typename PixelType> void VectorRendererSpec<PixelType>:: drawSquareAlg(int x, int y, int w, int h, PixelType color, VectorRenderer::FillMode fill_m) { PixelType *ptr = (PixelType *)_activeSurface->getBasePtr(x, y); - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int max_h = h; if (fill_m != kFillDisabled) { @@ -908,7 +908,7 @@ drawSquareAlg(int x, int y, int w, int h, PixelType color, VectorRenderer::FillM template<typename PixelType> void VectorRendererSpec<PixelType>:: drawBevelSquareAlg(int x, int y, int w, int h, int bevel, PixelType top_color, PixelType bottom_color, bool fill) { - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int height = h; PixelType *ptr_fill = (PixelType *)_activeSurface->getBasePtr(x, y); @@ -965,7 +965,7 @@ template<typename PixelType> void VectorRendererSpec<PixelType>:: drawLineAlg(int x1, int y1, int x2, int y2, int dx, int dy, PixelType color) { PixelType *ptr = (PixelType *)_activeSurface->getBasePtr(x1, y1); - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int xdir = (x2 > x1) ? 1 : -1; *ptr = (PixelType)color; @@ -1013,7 +1013,7 @@ template<typename PixelType> void VectorRendererSpec<PixelType>:: drawTriangleVertAlg(int x1, int y1, int w, int h, bool inverted, PixelType color, VectorRenderer::FillMode fill_m) { int dx = w >> 1, dy = h, gradient_h = 0; - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; PixelType *ptr_right = 0, *ptr_left = 0; if (inverted) { @@ -1094,7 +1094,7 @@ drawTriangleVertAlg(int x1, int y1, int w, int h, bool inverted, PixelType color template<typename PixelType> void VectorRendererSpec<PixelType>:: drawTriangleFast(int x1, int y1, int size, bool inverted, PixelType color, VectorRenderer::FillMode fill_m) { - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int hstep = 0, dy = size; bool grad = (fill_m == kFillGradient); @@ -1143,7 +1143,7 @@ void VectorRendererSpec<PixelType>:: drawRoundedSquareAlg(int x1, int y1, int r, int w, int h, PixelType color, VectorRenderer::FillMode fill_m) { int f, ddF_x, ddF_y; int x, y, px, py; - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int sw = 0, sp = 0, hp = h * pitch; PixelType *ptr_tl = (PixelType *)Base::_activeSurface->getBasePtr(x1 + r, y1 + r); @@ -1234,7 +1234,7 @@ void VectorRendererSpec<PixelType>:: drawCircleAlg(int x1, int y1, int r, PixelType color, VectorRenderer::FillMode fill_m) { int f, ddF_x, ddF_y; int x, y, px, py, sw = 0; - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; PixelType *ptr = (PixelType *)Base::_activeSurface->getBasePtr(x1, y1); if (fill_m == kFillDisabled) { @@ -1284,7 +1284,7 @@ template<typename PixelType> void VectorRendererSpec<PixelType>:: drawSquareShadow(int x, int y, int w, int h, int blur) { PixelType *ptr = (PixelType *)_activeSurface->getBasePtr(x + w - 1, y + blur); - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int i, j; i = h - blur; @@ -1321,7 +1321,7 @@ void VectorRendererSpec<PixelType>:: drawRoundedSquareShadow(int x1, int y1, int r, int w, int h, int blur) { int f, ddF_x, ddF_y; int x, y, px, py; - int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int alpha = 102; x1 += blur; @@ -1368,7 +1368,7 @@ template<typename PixelType> void VectorRendererSpec<PixelType>:: drawRoundedSquareFakeBevel(int x1, int y1, int r, int w, int h, int amount) { int x, y; - const int pitch = _activeSurface->pitch / _activeSurface->bytesPerPixel; + const int pitch = _activeSurface->pitch / _activeSurface->format.bytesPerPixel; int px, py; int sw = 0, sp = 0; @@ -1438,7 +1438,7 @@ void VectorRendererAA<PixelType>:: drawLineAlg(int x1, int y1, int x2, int y2, int dx, int dy, PixelType color) { PixelType *ptr = (PixelType *)Base::_activeSurface->getBasePtr(x1, y1); - int pitch = Base::_activeSurface->pitch / Base::_activeSurface->bytesPerPixel; + int pitch = Base::_activeSurface->pitch / Base::_activeSurface->format.bytesPerPixel; int xdir = (x2 > x1) ? 1 : -1; uint16 error_tmp, error_acc, gradient; uint8 alpha; @@ -1489,7 +1489,7 @@ template<typename PixelType> void VectorRendererAA<PixelType>:: drawRoundedSquareAlg(int x1, int y1, int r, int w, int h, PixelType color, VectorRenderer::FillMode fill_m) { int x, y; - const int pitch = Base::_activeSurface->pitch / Base::_activeSurface->bytesPerPixel; + const int pitch = Base::_activeSurface->pitch / Base::_activeSurface->format.bytesPerPixel; int px, py; int sw = 0, sp = 0, hp = h * pitch; @@ -1566,7 +1566,7 @@ template<typename PixelType> void VectorRendererAA<PixelType>:: drawCircleAlg(int x1, int y1, int r, PixelType color, VectorRenderer::FillMode fill_m) { int x, y, sw = 0; - const int pitch = Base::_activeSurface->pitch / Base::_activeSurface->bytesPerPixel; + const int pitch = Base::_activeSurface->pitch / Base::_activeSurface->format.bytesPerPixel; int px, py; uint32 rsq = r*r; diff --git a/graphics/font.cpp b/graphics/font.cpp index 359374436c..6a03c486ae 100644 --- a/graphics/font.cpp +++ b/graphics/font.cpp @@ -74,7 +74,7 @@ void NewFont::drawChar(Surface *dst, byte chr, const int tx, const int ty, const assert(dst != 0); assert(desc.bits != 0 && desc.maxwidth <= 16); - assert(dst->bytesPerPixel == 1 || dst->bytesPerPixel == 2); + assert(dst->format.bytesPerPixel == 1 || dst->format.bytesPerPixel == 2); // If this character is not included in the font, use the default char. if (chr < desc.firstchar || chr >= desc.firstchar + desc.size) { @@ -106,9 +106,9 @@ void NewFont::drawChar(Surface *dst, byte chr, const int tx, const int ty, const tmp += bbh - y; y -= MAX(0, ty + desc.ascent - bby - dst->h); - if (dst->bytesPerPixel == 1) + if (dst->format.bytesPerPixel == 1) drawCharIntern<byte>(ptr, dst->pitch, tmp, y, MAX(0, -(tx + bbx)), MIN(bbw, dst->w - tx - bbx), color); - else if (dst->bytesPerPixel == 2) + else if (dst->format.bytesPerPixel == 2) drawCharIntern<uint16>(ptr, dst->pitch, tmp, y, MAX(0, -(tx + bbx)), MIN(bbw, dst->w - tx - bbx), color); } diff --git a/graphics/fonts/scummfont.cpp b/graphics/fonts/scummfont.cpp index 87078e1475..3b1d30d1a2 100644 --- a/graphics/fonts/scummfont.cpp +++ b/graphics/fonts/scummfont.cpp @@ -302,9 +302,9 @@ void ScummFont::drawChar(Surface *dst, byte chr, int tx, int ty, uint32 color) c } c = ((buffer & mask) != 0); if (c) { - if (dst->bytesPerPixel == 1) + if (dst->format.bytesPerPixel == 1) ptr[x] = color; - else if (dst->bytesPerPixel == 2) + else if (dst->format.bytesPerPixel == 2) ((uint16 *)ptr)[x] = color; } } diff --git a/graphics/fonts/winfont.cpp b/graphics/fonts/winfont.cpp index 12509fd9e1..a01c93afac 100644 --- a/graphics/fonts/winfont.cpp +++ b/graphics/fonts/winfont.cpp @@ -320,7 +320,7 @@ bool WinFont::loadFromFNT(Common::SeekableReadStream &stream) { void WinFont::drawChar(Surface *dst, byte chr, int x, int y, uint32 color) const { assert(dst); - assert(dst->bytesPerPixel == 1 || dst->bytesPerPixel == 2 || dst->bytesPerPixel == 4); + assert(dst->format.bytesPerPixel == 1 || dst->format.bytesPerPixel == 2 || dst->format.bytesPerPixel == 4); assert(_glyphs); GlyphEntry &glyph = _glyphs[characterToIndex(chr)]; @@ -328,11 +328,11 @@ void WinFont::drawChar(Surface *dst, byte chr, int x, int y, uint32 color) const for (uint16 i = 0; i < _pixHeight; i++) { for (uint16 j = 0; j < glyph.charWidth; j++) { if (glyph.bitmap[j + i * glyph.charWidth]) { - if (dst->bytesPerPixel == 1) + if (dst->format.bytesPerPixel == 1) *((byte *)dst->getBasePtr(x + j, y + i)) = color; - else if (dst->bytesPerPixel == 2) + else if (dst->format.bytesPerPixel == 2) *((uint16 *)dst->getBasePtr(x + j, y + i)) = color; - else if (dst->bytesPerPixel == 4) + else if (dst->format.bytesPerPixel == 4) *((uint32 *)dst->getBasePtr(x + j, y + i)) = color; } } diff --git a/graphics/png.cpp b/graphics/png.cpp index 19f763272e..5a2cd16e32 100644 --- a/graphics/png.cpp +++ b/graphics/png.cpp @@ -118,23 +118,23 @@ Graphics::Surface *PNG::getSurface(const PixelFormat &format) { if (_header.colorType != kIndexed) { if (_header.colorType == kTrueColor || _header.colorType == kTrueColorWithAlpha) { - if (_unfilteredSurface->bytesPerPixel != 3 && _unfilteredSurface->bytesPerPixel != 4) + if (_unfilteredSurface->format.bytesPerPixel != 3 && _unfilteredSurface->format.bytesPerPixel != 4) error("Unsupported truecolor PNG format"); } else if (_header.colorType == kGrayScale || _header.colorType == kGrayScaleWithAlpha) { - if (_unfilteredSurface->bytesPerPixel != 1 && _unfilteredSurface->bytesPerPixel != 2) + if (_unfilteredSurface->format.bytesPerPixel != 1 && _unfilteredSurface->format.bytesPerPixel != 2) error("Unsupported grayscale PNG format"); } for (uint16 i = 0; i < output->h; i++) { for (uint16 j = 0; j < output->w; j++) { if (format.bytesPerPixel == 2) { - if (_unfilteredSurface->bytesPerPixel == 1) { // Grayscale + if (_unfilteredSurface->format.bytesPerPixel == 1) { // Grayscale if (_transparentColorSpecified) a = (src[0] == _transparentColor[0]) ? 0 : 0xFF; *((uint16 *)output->getBasePtr(j, i)) = format.ARGBToColor( a, src[0], src[0], src[0]); - } else if (_unfilteredSurface->bytesPerPixel == 2) { // Grayscale + alpha + } else if (_unfilteredSurface->format.bytesPerPixel == 2) { // Grayscale + alpha *((uint16 *)output->getBasePtr(j, i)) = format.ARGBToColor(src[1], src[0], src[0], src[0]); - } else if (_unfilteredSurface->bytesPerPixel == 3) { // RGB + } else if (_unfilteredSurface->format.bytesPerPixel == 3) { // RGB if (_transparentColorSpecified) { bool isTransparentColor = (src[0] == _transparentColor[0] && src[1] == _transparentColor[1] && @@ -142,17 +142,17 @@ Graphics::Surface *PNG::getSurface(const PixelFormat &format) { a = isTransparentColor ? 0 : 0xFF; } *((uint16 *)output->getBasePtr(j, i)) = format.ARGBToColor( a, src[0], src[1], src[2]); - } else if (_unfilteredSurface->bytesPerPixel == 4) { // RGBA + } else if (_unfilteredSurface->format.bytesPerPixel == 4) { // RGBA *((uint16 *)output->getBasePtr(j, i)) = format.ARGBToColor(src[3], src[0], src[1], src[2]); } } else { - if (_unfilteredSurface->bytesPerPixel == 1) { // Grayscale + if (_unfilteredSurface->format.bytesPerPixel == 1) { // Grayscale if (_transparentColorSpecified) a = (src[0] == _transparentColor[0]) ? 0 : 0xFF; *((uint32 *)output->getBasePtr(j, i)) = format.ARGBToColor( a, src[0], src[0], src[0]); - } else if (_unfilteredSurface->bytesPerPixel == 2) { // Grayscale + alpha + } else if (_unfilteredSurface->format.bytesPerPixel == 2) { // Grayscale + alpha *((uint32 *)output->getBasePtr(j, i)) = format.ARGBToColor(src[1], src[0], src[0], src[0]); - } else if (_unfilteredSurface->bytesPerPixel == 3) { // RGB + } else if (_unfilteredSurface->format.bytesPerPixel == 3) { // RGB if (_transparentColorSpecified) { bool isTransparentColor = (src[0] == _transparentColor[0] && src[1] == _transparentColor[1] && @@ -160,12 +160,12 @@ Graphics::Surface *PNG::getSurface(const PixelFormat &format) { a = isTransparentColor ? 0 : 0xFF; } *((uint32 *)output->getBasePtr(j, i)) = format.ARGBToColor( a, src[0], src[1], src[2]); - } else if (_unfilteredSurface->bytesPerPixel == 4) { // RGBA + } else if (_unfilteredSurface->format.bytesPerPixel == 4) { // RGBA *((uint32 *)output->getBasePtr(j, i)) = format.ARGBToColor(src[3], src[0], src[1], src[2]); } } - src += _unfilteredSurface->bytesPerPixel; + src += _unfilteredSurface->format.bytesPerPixel; } } } else { @@ -398,7 +398,7 @@ void PNG::constructImage() { for (uint16 y = 0; y < _unfilteredSurface->h; y++) { filterType = _imageData->readByte(); _imageData->read(scanLine, scanLineWidth); - unfilterScanLine(dest, scanLine, prevLine, _unfilteredSurface->bytesPerPixel, filterType, scanLineWidth); + unfilterScanLine(dest, scanLine, prevLine, _unfilteredSurface->format.bytesPerPixel, filterType, scanLineWidth); prevLine = dest; dest += _unfilteredSurface->pitch; } diff --git a/graphics/scaler/thumbnail_intern.cpp b/graphics/scaler/thumbnail_intern.cpp index a3a98079d6..f82b4eb618 100644 --- a/graphics/scaler/thumbnail_intern.cpp +++ b/graphics/scaler/thumbnail_intern.cpp @@ -99,7 +99,7 @@ static bool grabScreen565(Graphics::Surface *surf) { if (!screen) return false; - assert(screen->bytesPerPixel == 1 || screen->bytesPerPixel == 2); + assert(screen->format.bytesPerPixel == 1 || screen->format.bytesPerPixel == 2); assert(screen->pixels != 0); Graphics::PixelFormat screenFormat = g_system->getScreenFormat(); @@ -177,7 +177,7 @@ static bool createThumbnail(Graphics::Surface &out, Graphics::Surface &in) { const uint8 *src = (const uint8 *)in.getBasePtr(41, 28); for (int y = 0; y < 240; ++y) { - memcpy(dst, src, 640 * in.bytesPerPixel); + memcpy(dst, src, 640 * in.format.bytesPerPixel); dst += newscreen.pitch; src += in.pitch; } @@ -192,7 +192,7 @@ static bool createThumbnail(Graphics::Surface &out, Graphics::Surface &in) { Graphics::Surface newscreen; newscreen.create(width, 480, in.format); - memcpy(newscreen.getBasePtr(0, 0), in.getBasePtr(0, 0), width * 440 * in.bytesPerPixel); + memcpy(newscreen.getBasePtr(0, 0), in.getBasePtr(0, 0), width * 440 * in.format.bytesPerPixel); in.free(); in = newscreen; diff --git a/graphics/sjis.cpp b/graphics/sjis.cpp index c581f9b265..db8588c910 100644 --- a/graphics/sjis.cpp +++ b/graphics/sjis.cpp @@ -57,7 +57,7 @@ FontSJIS *FontSJIS::createFont(const Common::Platform platform) { } void FontSJIS::drawChar(Graphics::Surface &dst, uint16 ch, int x, int y, uint32 c1, uint32 c2) const { - drawChar(dst.getBasePtr(x, y), ch, dst.pitch, dst.bytesPerPixel, c1, c2, dst.w - x, dst.h - y); + drawChar(dst.getBasePtr(x, y), ch, dst.pitch, dst.format.bytesPerPixel, c1, c2, dst.w - x, dst.h - y); } template<typename Color> diff --git a/graphics/surface.cpp b/graphics/surface.cpp index eadc464da4..55e94f07e7 100644 --- a/graphics/surface.cpp +++ b/graphics/surface.cpp @@ -40,9 +40,9 @@ static void plotPoint(int x, int y, int color, void *data) { } void Surface::drawLine(int x0, int y0, int x1, int y1, uint32 color) { - if (bytesPerPixel == 1) + if (format.bytesPerPixel == 1) Graphics::drawLine(x0, y0, x1, y1, color, plotPoint<byte>, this); - else if (bytesPerPixel == 2) + else if (format.bytesPerPixel == 2) Graphics::drawLine(x0, y0, x1, y1, color, plotPoint<uint16>, this); else error("Surface::drawLine: bytesPerPixel must be 1 or 2"); @@ -68,9 +68,9 @@ void Surface::create(uint16 width, uint16 height, const PixelFormat &f) { h = height; format = f; bytesPerPixel = format.bytesPerPixel; - pitch = w * bytesPerPixel; + pitch = w * format.bytesPerPixel; - pixels = calloc(width * height, bytesPerPixel); + pixels = calloc(width * height, format.bytesPerPixel); assert(pixels); } @@ -78,11 +78,12 @@ void Surface::free() { ::free(pixels); pixels = 0; w = h = pitch = 0; + format = PixelFormat(); bytesPerPixel = 0; } void Surface::copyFrom(const Surface &surf) { - create(surf.w, surf.h, surf.bytesPerPixel); + create(surf.w, surf.h, surf.format.bytesPerPixel); format = surf.format; memcpy(pixels, surf.pixels, h * pitch); } @@ -103,10 +104,10 @@ void Surface::hLine(int x, int y, int x2, uint32 color) { if (x2 < x) return; - if (bytesPerPixel == 1) { + if (format.bytesPerPixel == 1) { byte *ptr = (byte *)getBasePtr(x, y); memset(ptr, (byte)color, x2-x+1); - } else if (bytesPerPixel == 2) { + } else if (format.bytesPerPixel == 2) { uint16 *ptr = (uint16 *)getBasePtr(x, y); Common::set_to(ptr, ptr + (x2-x+1), (uint16)color); } else { @@ -127,13 +128,13 @@ void Surface::vLine(int x, int y, int y2, uint32 color) { if (y2 >= h) y2 = h - 1; - if (bytesPerPixel == 1) { + if (format.bytesPerPixel == 1) { byte *ptr = (byte *)getBasePtr(x, y); while (y++ <= y2) { *ptr = (byte)color; ptr += pitch; } - } else if (bytesPerPixel == 2) { + } else if (format.bytesPerPixel == 2) { uint16 *ptr = (uint16 *)getBasePtr(x, y); while (y++ <= y2) { *ptr = (uint16)color; @@ -155,13 +156,13 @@ void Surface::fillRect(Common::Rect r, uint32 color) { int height = r.height(); bool useMemset = true; - if (bytesPerPixel == 2) { + if (format.bytesPerPixel == 2) { lineLen *= 2; if ((uint16)color != ((color & 0xff) | (color & 0xff) << 8)) useMemset = false; - } else if (bytesPerPixel == 4) { + } else if (format.bytesPerPixel == 4) { useMemset = false; - } else if (bytesPerPixel != 1) { + } else if (format.bytesPerPixel != 1) { error("Surface::fillRect: bytesPerPixel must be 1, 2 or 4"); } @@ -172,7 +173,7 @@ void Surface::fillRect(Common::Rect r, uint32 color) { ptr += pitch; } } else { - if (bytesPerPixel == 2) { + if (format.bytesPerPixel == 2) { uint16 *ptr = (uint16 *)getBasePtr(r.left, r.top); while (height--) { Common::set_to(ptr, ptr + width, (uint16)color); @@ -200,7 +201,7 @@ void Surface::move(int dx, int dy, int height) { if ((dx == 0 && dy == 0) || height <= 0) return; - if (bytesPerPixel != 1 && bytesPerPixel != 2) + if (format.bytesPerPixel != 1 && format.bytesPerPixel != 2) error("Surface::move: bytesPerPixel must be 1 or 2"); byte *src, *dst; @@ -230,37 +231,37 @@ void Surface::move(int dx, int dy, int height) { // horizontal movement if (dx > 0) { // move right - copy from right to left - dst = (byte *)pixels + (pitch - bytesPerPixel); - src = dst - (dx * bytesPerPixel); + dst = (byte *)pixels + (pitch - format.bytesPerPixel); + src = dst - (dx * format.bytesPerPixel); for (y = 0; y < height; y++) { for (x = dx; x < w; x++) { - if (bytesPerPixel == 1) { + if (format.bytesPerPixel == 1) { *dst-- = *src--; - } else if (bytesPerPixel == 2) { + } else if (format.bytesPerPixel == 2) { *(uint16 *)dst = *(const uint16 *)src; src -= 2; dst -= 2; } } - src += pitch + (pitch - dx * bytesPerPixel); - dst += pitch + (pitch - dx * bytesPerPixel); + src += pitch + (pitch - dx * format.bytesPerPixel); + dst += pitch + (pitch - dx * format.bytesPerPixel); } } else if (dx < 0) { // move left - copy from left to right dst = (byte *)pixels; - src = dst - (dx * bytesPerPixel); + src = dst - (dx * format.bytesPerPixel); for (y = 0; y < height; y++) { for (x = -dx; x < w; x++) { - if (bytesPerPixel == 1) { + if (format.bytesPerPixel == 1) { *dst++ = *src++; - } else if (bytesPerPixel == 2) { + } else if (format.bytesPerPixel == 2) { *(uint16 *)dst = *(const uint16 *)src; src += 2; dst += 2; } } - src += pitch - (pitch + dx * bytesPerPixel); - dst += pitch - (pitch + dx * bytesPerPixel); + src += pitch - (pitch + dx * format.bytesPerPixel); + dst += pitch - (pitch + dx * format.bytesPerPixel); } } } diff --git a/graphics/surface.h b/graphics/surface.h index 3cc69fafdd..d25ebffcc5 100644 --- a/graphics/surface.h +++ b/graphics/surface.h @@ -90,7 +90,7 @@ struct Surface { * @return Pointer to the pixel. */ inline const void *getBasePtr(int x, int y) const { - return (const byte *)(pixels) + y * pitch + x * bytesPerPixel; + return (const byte *)(pixels) + y * pitch + x * format.bytesPerPixel; } /** @@ -101,7 +101,7 @@ struct Surface { * @return Pointer to the pixel. */ inline void *getBasePtr(int x, int y) { - return static_cast<byte *>(pixels) + y * pitch + x * bytesPerPixel; + return static_cast<byte *>(pixels) + y * pitch + x * format.bytesPerPixel; } /** diff --git a/graphics/thumbnail.cpp b/graphics/thumbnail.cpp index 953faea484..8d9afcf93b 100644 --- a/graphics/thumbnail.cpp +++ b/graphics/thumbnail.cpp @@ -139,18 +139,18 @@ bool saveThumbnail(Common::WriteStream &out) { } bool saveThumbnail(Common::WriteStream &out, const Graphics::Surface &thumb) { - if (thumb.bytesPerPixel != 2) { + if (thumb.format.bytesPerPixel != 2) { warning("trying to save thumbnail with bpp different than 2"); return false; } ThumbnailHeader header; header.type = MKTAG('T','H','M','B'); - header.size = ThumbnailHeaderSize + thumb.w*thumb.h*thumb.bytesPerPixel; + header.size = ThumbnailHeaderSize + thumb.w*thumb.h*thumb.format.bytesPerPixel; header.version = THMB_VERSION; header.width = thumb.w; header.height = thumb.h; - header.bpp = thumb.bytesPerPixel; + header.bpp = thumb.format.bytesPerPixel; out.writeUint32BE(header.type); out.writeUint32BE(header.size); |