From cbef0de3a4cb74aa7e583209d47332608536f21b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 3 Aug 2013 01:08:29 +0200 Subject: TOON: Prefer getBasePtr over direct Surface::pixels access. --- engines/toon/anim.cpp | 6 +++--- engines/toon/movie.cpp | 2 +- engines/toon/picture.cpp | 6 +++--- engines/toon/toon.cpp | 12 +++++------- 4 files changed, 12 insertions(+), 14 deletions(-) (limited to 'engines') diff --git a/engines/toon/anim.cpp b/engines/toon/anim.cpp index a6744568f7..aecf341079 100644 --- a/engines/toon/anim.cpp +++ b/engines/toon/anim.cpp @@ -190,7 +190,7 @@ void Animation::drawFrame(Graphics::Surface &surface, int32 frame, int16 xx, int int32 destPitch = surface.pitch; uint8 *srcRow = _frames[frame]._data + offsX + (_frames[frame]._x2 - _frames[frame]._x1) * offsY; - uint8 *curRow = (uint8 *)surface.pixels + (yy + _frames[frame]._y1 + _y1 + offsY) * destPitch + (xx + _x1 + _frames[frame]._x1 + offsX); + uint8 *curRow = (uint8 *)surface.getBasePtr(xx + _x1 + _frames[frame]._x1 + offsX, yy + _frames[frame]._y1 + _y1 + offsY); for (int16 y = 0; y < rectY; y++) { uint8 *cur = curRow; uint8 *c = srcRow + y * (_frames[frame]._x2 - _frames[frame]._x1); @@ -231,7 +231,7 @@ void Animation::drawFrameWithMaskAndScale(Graphics::Surface &surface, int32 fram int32 destPitch = surface.pitch; int32 destPitchMask = mask->getWidth(); uint8 *c = _frames[frame]._data; - uint8 *curRow = (uint8 *)surface.pixels; + uint8 *curRow = (uint8 *)surface.getBasePtr(0, 0); uint8 *curRowMask = mask->getDataPtr(); bool shadowFlag = false; @@ -341,7 +341,7 @@ void Animation::drawFontFrame(Graphics::Surface &surface, int32 frame, int16 xx, int32 destPitch = surface.pitch; uint8 *c = _frames[frame]._data; - uint8 *curRow = (uint8 *)surface.pixels + (yy + _frames[frame]._y1 + _y1) * destPitch + (xx + _x1 + _frames[frame]._x1); + uint8 *curRow = (uint8 *)surface.getBasePtr(xx + _x1 + _frames[frame]._x1, yy + _frames[frame]._y1 + _y1); for (int16 y = 0; y < rectY; y++) { unsigned char *cur = curRow; for (int16 x = 0; x < rectX; x++) { diff --git a/engines/toon/movie.cpp b/engines/toon/movie.cpp index 8c85e20f7c..962b73dfa7 100644 --- a/engines/toon/movie.cpp +++ b/engines/toon/movie.cpp @@ -112,7 +112,7 @@ bool Movie::playVideo(bool isFirstIntroVideo) { } _vm->_system->unlockScreen(); } else { - _vm->_system->copyRectToScreen(frame->pixels, frame->pitch, 0, 0, frame->w, frame->h); + _vm->_system->copyRectToScreen(frame->getBasePtr(0, 0), frame->pitch, 0, 0, frame->w, frame->h); // WORKAROUND: There is an encoding glitch in the first intro video. This hides this using the adjacent pixels. if (isFirstIntroVideo) { diff --git a/engines/toon/picture.cpp b/engines/toon/picture.cpp index f59cdca064..65cc3a70e1 100644 --- a/engines/toon/picture.cpp +++ b/engines/toon/picture.cpp @@ -170,7 +170,7 @@ void Picture::drawMask(Graphics::Surface &surface, int16 x, int16 y, int16 dx, i int32 destPitch = surface.pitch; int32 srcPitch = _width; uint8 *c = _data + _width * dy + dx; - uint8 *curRow = (uint8 *)surface.pixels + y * destPitch + x; + uint8 *curRow = (uint8 *)surface.getBasePtr(x, y); for (int16 yy = 0; yy < ry; yy++) { uint8 *curSrc = c; @@ -205,7 +205,7 @@ void Picture::drawWithRectList(Graphics::Surface& surface, int16 x, int16 y, int int16 fillRy = MIN(ry, rect.bottom - rect.top); uint8 *c = _data + _width * (dy + rect.top) + (dx + rect.left); - uint8 *curRow = (uint8 *)surface.pixels + (y + rect.top) * destPitch + (x + rect.left); + uint8 *curRow = (uint8 *)surface.getBasePtr(x + rect.left, y + rect.top); for (int16 yy = 0; yy < fillRy; yy++) { uint8 *curSrc = c; @@ -233,7 +233,7 @@ void Picture::draw(Graphics::Surface &surface, int16 x, int16 y, int16 dx, int16 int32 destPitch = surface.pitch; int32 srcPitch = _width; uint8 *c = _data + _width * dy + dx; - uint8 *curRow = (uint8 *)surface.pixels + y * destPitch + x; + uint8 *curRow = (uint8 *)surface.getBasePtr(x, y); for (int16 yy = 0; yy < ry; yy++) { uint8 *curSrc = c; diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index 7ad29ab8d8..2f5c810811 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -466,8 +466,7 @@ void ToonEngine::doMagnifierEffect() { int32 cy = CLIP(posY + y, 0, TOON_BACKBUFFER_HEIGHT-1); for (int32 x = -12; x <= 12; x++) { int32 cx = CLIP(posX + x, 0, TOON_BACKBUFFER_WIDTH-1); - int32 destPitch = surface.pitch; - uint8 *curRow = (uint8 *)surface.pixels + cy * destPitch + cx; + uint8 *curRow = (uint8 *)surface.getBasePtr(cx, cy); tempBuffer[(y + 12) * 25 + x + 12] = *curRow; } } @@ -479,8 +478,7 @@ void ToonEngine::doMagnifierEffect() { if (dist > 144) continue; int32 cx = CLIP(posX + x, 0, TOON_BACKBUFFER_WIDTH-1); - int32 destPitch = surface.pitch; - uint8 *curRow = (uint8 *)surface.pixels + cy * destPitch + cx; + uint8 *curRow = (uint8 *)surface.getBasePtr(cx, cy); int32 lerp = (512 + intSqrt[dist] * 256 / 12); *curRow = tempBuffer[(y * lerp / 1024 + 12) * 25 + x * lerp / 1024 + 12]; } @@ -501,7 +499,7 @@ void ToonEngine::copyToVirtualScreen(bool updateScreen) { if (_dirtyAll || _gameState->_currentScrollValue != lastScroll) { // we have to refresh everything in case of scrolling. - _system->copyRectToScreen((byte *)_mainSurface->pixels + state()->_currentScrollValue, TOON_BACKBUFFER_WIDTH, 0, 0, TOON_SCREEN_WIDTH, TOON_SCREEN_HEIGHT); + _system->copyRectToScreen((byte *)_mainSurface->getBasePtr(0, 0) + state()->_currentScrollValue, TOON_BACKBUFFER_WIDTH, 0, 0, TOON_SCREEN_WIDTH, TOON_SCREEN_HEIGHT); } else { int32 offX = 0; @@ -517,7 +515,7 @@ void ToonEngine::copyToVirtualScreen(bool updateScreen) { } rect.clip(TOON_SCREEN_WIDTH, TOON_SCREEN_HEIGHT); if (rect.left >= 0 && rect.top >= 0 && rect.right - rect.left > 0 && rect.bottom - rect.top > 0) { - _system->copyRectToScreen((byte *)_mainSurface->pixels + _oldDirtyRects[i].left + offX + _oldDirtyRects[i].top * TOON_BACKBUFFER_WIDTH, TOON_BACKBUFFER_WIDTH, rect.left , rect.top, rect.right - rect.left, rect.bottom - rect.top); + _system->copyRectToScreen((byte *)_mainSurface->getBasePtr(_oldDirtyRects[i].left + offX, _oldDirtyRects[i].top), TOON_BACKBUFFER_WIDTH, rect.left , rect.top, rect.right - rect.left, rect.bottom - rect.top); } } @@ -533,7 +531,7 @@ void ToonEngine::copyToVirtualScreen(bool updateScreen) { } rect.clip(TOON_SCREEN_WIDTH, TOON_SCREEN_HEIGHT); if (rect.left >= 0 && rect.top >= 0 && rect.right - rect.left > 0 && rect.bottom - rect.top > 0) { - _system->copyRectToScreen((byte *)_mainSurface->pixels + _dirtyRects[i].left + offX + _dirtyRects[i].top * TOON_BACKBUFFER_WIDTH, TOON_BACKBUFFER_WIDTH, rect.left , rect.top, rect.right - rect.left, rect.bottom - rect.top); + _system->copyRectToScreen((byte *)_mainSurface->getBasePtr(_dirtyRects[i].left + offX, _dirtyRects[i].top), TOON_BACKBUFFER_WIDTH, rect.left , rect.top, rect.right - rect.left, rect.bottom - rect.top); } } } -- cgit v1.2.3