MOHAWK: Prefer getBasePtr over direct Surface::pixels access.

This commit is contained in:
Johannes Schickel 2013-08-02 23:58:11 +02:00
parent 8f73027d82
commit 6eb9c8da9e
4 changed files with 12 additions and 12 deletions

View file

@ -580,7 +580,7 @@ void MohawkBitmap::drawRaw(Graphics::Surface *surface) {
_data->skip(_header.bytesPerRow - _header.width * 3); _data->skip(_header.bytesPerRow - _header.width * 3);
} else { } 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); _data->skip(_header.bytesPerRow - _header.width);
} }
} }
@ -599,7 +599,7 @@ void MohawkBitmap::drawRLE8(Graphics::Surface *surface, bool isLE) {
for (uint16 i = 0; i < _header.height; i++) { for (uint16 i = 0; i < _header.height; i++) {
uint16 rowByteCount = isLE ? _data->readUint16LE() : _data->readUint16BE(); uint16 rowByteCount = isLE ? _data->readUint16LE() : _data->readUint16BE();
int32 startPos = _data->pos(); int32 startPos = _data->pos();
byte *dst = (byte *)surface->pixels + i * _header.width; byte *dst = (byte *)surface->getBasePtr(0, i);
int16 remaining = _header.width; int16 remaining = _header.width;
while (remaining > 0) { while (remaining > 0) {
@ -779,7 +779,7 @@ MohawkSurface *DOSBitmap::decodeImage(Common::SeekableReadStream *stream) {
} }
Graphics::Surface *surface = createSurface(_header.width, _header.height); 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 // Expand the <8bpp data to one byte per pixel
switch (getBitsPerPixel()) { switch (getBitsPerPixel()) {
@ -801,7 +801,7 @@ MohawkSurface *DOSBitmap::decodeImage(Common::SeekableReadStream *stream) {
void DOSBitmap::expandMonochromePlane(Graphics::Surface *surface, Common::SeekableReadStream *rawStream) { void DOSBitmap::expandMonochromePlane(Graphics::Surface *surface, Common::SeekableReadStream *rawStream) {
assert(surface->format.bytesPerPixel == 1); 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 the 8 pixels in a byte into a full byte per pixel
@ -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 // 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 // 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++) { for (uint32 i = 0; i < surface->h; i++) {
uint x = 0; uint x = 0;

View file

@ -121,11 +121,11 @@ void MystCursorManager::setCursor(uint16 id) {
// Myst ME stores some cursors as 24bpp images instead of 8bpp // Myst ME stores some cursors as 24bpp images instead of 8bpp
if (surface->format.bytesPerPixel == 1) { 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); CursorMan.replaceCursorPalette(mhkSurface->getPalette(), 0, 256);
} else { } else {
Graphics::PixelFormat pixelFormat = g_system->getScreenFormat(); 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; _vm->_needsUpdate = true;

View file

@ -255,7 +255,7 @@ void RivenGraphics::runScheduledTransition() {
} }
// For now, just copy the image to screen without doing any transition. // 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(); _vm->_system->updateScreen();
_scheduledTransition = -1; // Clear scheduled transition _scheduledTransition = -1; // Clear scheduled transition
@ -345,7 +345,7 @@ void RivenGraphics::drawInventoryImage(uint16 id, const Common::Rect *rect) {
mhkSurface->convertToTrueColor(); mhkSurface->convertToTrueColor();
Graphics::Surface *surface = mhkSurface->getSurface(); 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; delete mhkSurface;
} }
@ -420,7 +420,7 @@ void RivenGraphics::updateCredits() {
} else { } else {
// Otheriwse, we're scrolling // Otheriwse, we're scrolling
// Move the screen up one row // 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 // Only update as long as we're not before the last frame
// Otherwise, we're just moving up a row (which we already did) // Otherwise, we're just moving up a row (which we already did)
@ -437,7 +437,7 @@ void RivenGraphics::updateCredits() {
} }
// Now flush the new screen // 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(); _vm->_system->updateScreen();
} }
} }

View file

@ -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) // 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 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); 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 // We've drawn something to the screen, make sure we update it
updateScreen = true; updateScreen = true;