diff options
author | Matthew Hoops | 2011-01-18 16:18:10 +0000 |
---|---|---|
committer | Matthew Hoops | 2011-01-18 16:18:10 +0000 |
commit | 503fdb61470484d952634fc1fab5200371810c3f (patch) | |
tree | 0eaacb8b39485bad12d5dae6ae4bd982a5c4dd89 /engines/mohawk | |
parent | 5da1718beb7bdc1b034e12739be783873fd133df (diff) | |
download | scummvm-rg350-503fdb61470484d952634fc1fab5200371810c3f.tar.gz scummvm-rg350-503fdb61470484d952634fc1fab5200371810c3f.tar.bz2 scummvm-rg350-503fdb61470484d952634fc1fab5200371810c3f.zip |
GRAPHICS: Add a getSurface() function to JPEG to automatically convert to RGB
svn-id: r55301
Diffstat (limited to 'engines/mohawk')
-rw-r--r-- | engines/mohawk/graphics.cpp | 15 | ||||
-rw-r--r-- | engines/mohawk/graphics.h | 9 |
2 files changed, 16 insertions, 8 deletions
diff --git a/engines/mohawk/graphics.cpp b/engines/mohawk/graphics.cpp index 19fb561e37..99822857ba 100644 --- a/engines/mohawk/graphics.cpp +++ b/engines/mohawk/graphics.cpp @@ -30,9 +30,8 @@ #include "mohawk/livingbooks.h" #include "common/substream.h" - #include "engines/util.h" - +#include "graphics/jpeg.h" #include "graphics/primitives.h" #include "gui/message.h" @@ -253,7 +252,7 @@ MystGraphics::MystGraphics(MohawkEngine_Myst* vm) : GraphicsManager(), _vm(vm) { error("Myst requires greater than 256 colors to run"); if (_vm->getFeatures() & GF_ME) { - _jpegDecoder = new Graphics::JPEGDecoder(); + _jpegDecoder = new Graphics::JPEG(); _pictDecoder = new Graphics::PictDecoder(_pixelFormat); } else { _jpegDecoder = NULL; @@ -327,9 +326,13 @@ MohawkSurface *MystGraphics::decodeImage(uint16 id) { for (uint32 i = 0; i < _pictureFile.pictureCount; i++) if (_pictureFile.entries[i].id == id) { if (_pictureFile.entries[i].type == 0) { - Graphics::Surface *surface = new Graphics::Surface(); - surface->copyFrom(*_jpegDecoder->decodeImage(new Common::SeekableSubReadStream(&_pictureFile.picFile, _pictureFile.entries[i].offset, _pictureFile.entries[i].offset + _pictureFile.entries[i].size))); - mhkSurface = new MohawkSurface(surface); + Common::SeekableReadStream *stream = new Common::SeekableSubReadStream(&_pictureFile.picFile, _pictureFile.entries[i].offset, _pictureFile.entries[i].offset + _pictureFile.entries[i].size); + + if (!_jpegDecoder->read(stream)) + error("Could not decode Myst ME Mac JPEG"); + + mhkSurface = new MohawkSurface(_jpegDecoder->getSurface(_pixelFormat)); + delete stream; } else if (_pictureFile.entries[i].type == 1) { mhkSurface = new MohawkSurface(_pictDecoder->decodeImage(new Common::SeekableSubReadStream(&_pictureFile.picFile, _pictureFile.entries[i].offset, _pictureFile.entries[i].offset + _pictureFile.entries[i].size))); } else diff --git a/engines/mohawk/graphics.h b/engines/mohawk/graphics.h index c664e76dcc..969188457a 100644 --- a/engines/mohawk/graphics.h +++ b/engines/mohawk/graphics.h @@ -31,7 +31,12 @@ #include "common/file.h" #include "common/hashmap.h" #include "graphics/pict.h" -#include "graphics/video/codecs/mjpeg.h" + +namespace Graphics { + +class JPEG; + +} namespace Mohawk { @@ -132,7 +137,7 @@ private: MohawkEngine_Myst *_vm; MystBitmap *_bmpDecoder; Graphics::PictDecoder *_pictDecoder; - Graphics::JPEGDecoder *_jpegDecoder; + Graphics::JPEG *_jpegDecoder; struct PictureFile { uint32 pictureCount; |