Skip to content

Commit

Permalink
MOHAWK: Prefer getBasePtr over direct Surface::pixels access.
Browse files Browse the repository at this point in the history
  • Loading branch information
Johannes Schickel committed Aug 3, 2013
1 parent 8f73027 commit 6eb9c8d
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 12 deletions.
10 changes: 5 additions & 5 deletions engines/mohawk/bitmap.cpp
Expand Up @@ -580,7 +580,7 @@ void MohawkBitmap::drawRaw(Graphics::Surface *surface) {

_data->skip(_header.bytesPerRow - _header.width * 3);
} else {
_data->read((byte *)surface->pixels + y * _header.width, _header.width);
_data->read((byte *)surface->getBasePtr(0, y), _header.width);
_data->skip(_header.bytesPerRow - _header.width);
}
}
Expand All @@ -599,7 +599,7 @@ void MohawkBitmap::drawRLE8(Graphics::Surface *surface, bool isLE) {
for (uint16 i = 0; i < _header.height; i++) {
uint16 rowByteCount = isLE ? _data->readUint16LE() : _data->readUint16BE();
int32 startPos = _data->pos();
byte *dst = (byte *)surface->pixels + i * _header.width;
byte *dst = (byte *)surface->getBasePtr(0, i);
int16 remaining = _header.width;

while (remaining > 0) {
Expand Down Expand Up @@ -779,7 +779,7 @@ MohawkSurface *DOSBitmap::decodeImage(Common::SeekableReadStream *stream) {
}

Graphics::Surface *surface = createSurface(_header.width, _header.height);
memset(surface->pixels, 0, _header.width * _header.height);
memset(surface->getBasePtr(0, 0), 0, _header.width * _header.height);

// Expand the <8bpp data to one byte per pixel
switch (getBitsPerPixel()) {
Expand All @@ -801,7 +801,7 @@ MohawkSurface *DOSBitmap::decodeImage(Common::SeekableReadStream *stream) {
void DOSBitmap::expandMonochromePlane(Graphics::Surface *surface, Common::SeekableReadStream *rawStream) {
assert(surface->format.bytesPerPixel == 1);

byte *dst = (byte *)surface->pixels;
byte *dst = (byte *)surface->getBasePtr(0, 0);

// Expand the 8 pixels in a byte into a full byte per pixel

Expand Down Expand Up @@ -830,7 +830,7 @@ void DOSBitmap::expandEGAPlanes(Graphics::Surface *surface, Common::SeekableRead
// Note that the image is in EGA planar form and not just standard 4bpp
// This seems to contradict the PoP specs which seem to do something else

byte *dst = (byte *)surface->pixels;
byte *dst = (byte *)surface->getBasePtr(0, 0);

for (uint32 i = 0; i < surface->h; i++) {
uint x = 0;
Expand Down
4 changes: 2 additions & 2 deletions engines/mohawk/cursors.cpp
Expand Up @@ -121,11 +121,11 @@ void MystCursorManager::setCursor(uint16 id) {

// Myst ME stores some cursors as 24bpp images instead of 8bpp
if (surface->format.bytesPerPixel == 1) {
CursorMan.replaceCursor(surface->pixels, surface->w, surface->h, hotspotX, hotspotY, 0);
CursorMan.replaceCursor(surface->getBasePtr(0, 0), surface->w, surface->h, hotspotX, hotspotY, 0);
CursorMan.replaceCursorPalette(mhkSurface->getPalette(), 0, 256);
} else {
Graphics::PixelFormat pixelFormat = g_system->getScreenFormat();
CursorMan.replaceCursor(surface->pixels, surface->w, surface->h, hotspotX, hotspotY, pixelFormat.RGBToColor(255, 255, 255), false, &pixelFormat);
CursorMan.replaceCursor(surface->getBasePtr(0, 0), surface->w, surface->h, hotspotX, hotspotY, pixelFormat.RGBToColor(255, 255, 255), false, &pixelFormat);
}

_vm->_needsUpdate = true;
Expand Down
8 changes: 4 additions & 4 deletions engines/mohawk/riven_graphics.cpp
Expand Up @@ -255,7 +255,7 @@ void RivenGraphics::runScheduledTransition() {
}

// For now, just copy the image to screen without doing any transition.
_vm->_system->copyRectToScreen(_mainScreen->pixels, _mainScreen->pitch, 0, 0, _mainScreen->w, _mainScreen->h);
_vm->_system->copyRectToScreen(_mainScreen->getBasePtr(0, 0), _mainScreen->pitch, 0, 0, _mainScreen->w, _mainScreen->h);
_vm->_system->updateScreen();

_scheduledTransition = -1; // Clear scheduled transition
Expand Down Expand Up @@ -345,7 +345,7 @@ void RivenGraphics::drawInventoryImage(uint16 id, const Common::Rect *rect) {
mhkSurface->convertToTrueColor();
Graphics::Surface *surface = mhkSurface->getSurface();

_vm->_system->copyRectToScreen(surface->pixels, surface->pitch, rect->left, rect->top, surface->w, surface->h);
_vm->_system->copyRectToScreen(surface->getBasePtr(0, 0), surface->pitch, rect->left, rect->top, surface->w, surface->h);

delete mhkSurface;
}
Expand Down Expand Up @@ -420,7 +420,7 @@ void RivenGraphics::updateCredits() {
} else {
// Otheriwse, we're scrolling
// Move the screen up one row
memmove(_mainScreen->pixels, _mainScreen->getBasePtr(0, 1), _mainScreen->pitch * (_mainScreen->h - 1));
memmove(_mainScreen->getBasePtr(0, 0), _mainScreen->getBasePtr(0, 1), _mainScreen->pitch * (_mainScreen->h - 1));

// Only update as long as we're not before the last frame
// Otherwise, we're just moving up a row (which we already did)
Expand All @@ -437,7 +437,7 @@ void RivenGraphics::updateCredits() {
}

// Now flush the new screen
_vm->_system->copyRectToScreen(_mainScreen->pixels, _mainScreen->pitch, 0, 0, _mainScreen->w, _mainScreen->h);
_vm->_system->copyRectToScreen(_mainScreen->getBasePtr(0, 0), _mainScreen->pitch, 0, 0, _mainScreen->w, _mainScreen->h);
_vm->_system->updateScreen();
}
}
Expand Down
2 changes: 1 addition & 1 deletion engines/mohawk/video.cpp
Expand Up @@ -245,7 +245,7 @@ bool VideoManager::updateMovies() {
// Clip the width/height to make sure we stay on the screen (Myst does this a few times)
uint16 width = MIN<int32>(_videoStreams[i]->getWidth(), _vm->_system->getWidth() - _videoStreams[i].x);
uint16 height = MIN<int32>(_videoStreams[i]->getHeight(), _vm->_system->getHeight() - _videoStreams[i].y);
_vm->_system->copyRectToScreen(frame->pixels, frame->pitch, _videoStreams[i].x, _videoStreams[i].y, width, height);
_vm->_system->copyRectToScreen(frame->getBasePtr(0, 0), frame->pitch, _videoStreams[i].x, _videoStreams[i].y, width, height);

// We've drawn something to the screen, make sure we update it
updateScreen = true;
Expand Down

0 comments on commit 6eb9c8d

Please sign in to comment.