diff options
Diffstat (limited to 'engines/pegasus')
-rwxr-xr-x | engines/pegasus/cursor.cpp | 4 | ||||
-rw-r--r-- | engines/pegasus/elements.h | 2 | ||||
-rw-r--r-- | engines/pegasus/graphics.h | 1 | ||||
-rwxr-xr-x | engines/pegasus/surface.cpp | 35 |
4 files changed, 9 insertions, 33 deletions
diff --git a/engines/pegasus/cursor.cpp b/engines/pegasus/cursor.cpp index 430b319e33..ea5fc74501 100755 --- a/engines/pegasus/cursor.cpp +++ b/engines/pegasus/cursor.cpp @@ -27,8 +27,8 @@ #include "common/stream.h" #include "common/system.h" #include "graphics/cursorman.h" -#include "graphics/pict.h" #include "graphics/surface.h" +#include "graphics/decoders/pict.h" #include "pegasus/cursor.h" #include "pegasus/graphics.h" @@ -143,7 +143,7 @@ void Cursor::loadCursorImage(CursorInfo &cursorInfo) { error("Failed to find color icon %d", cursorInfo.tag); // PixMap section - Graphics::PictDecoder::PixMap pixMap = Graphics::PictDecoder::readPixMap(cicnStream); + Graphics::PICTDecoder::PixMap pixMap = Graphics::PICTDecoder::readPixMap(*cicnStream); // Mask section cicnStream->readUint32BE(); // mask baseAddr diff --git a/engines/pegasus/elements.h b/engines/pegasus/elements.h index 6a465d1602..d96d2173b1 100644 --- a/engines/pegasus/elements.h +++ b/engines/pegasus/elements.h @@ -26,10 +26,10 @@ #ifndef PEGASUS_ELEMENTS_H #define PEGASUS_ELEMENTS_H +#include "common/array.h" #include "common/rect.h" #include "common/str.h" #include "common/system.h" -#include "graphics/pict.h" #include "graphics/surface.h" #include "pegasus/timers.h" diff --git a/engines/pegasus/graphics.h b/engines/pegasus/graphics.h index 7c5bd69a69..502304409a 100644 --- a/engines/pegasus/graphics.h +++ b/engines/pegasus/graphics.h @@ -29,7 +29,6 @@ #include "common/rect.h" #include "common/str.h" #include "common/system.h" -#include "graphics/pict.h" #include "graphics/surface.h" #include "pegasus/constants.h" diff --git a/engines/pegasus/surface.cpp b/engines/pegasus/surface.cpp index f0c97d60ea..897305f2a3 100755 --- a/engines/pegasus/surface.cpp +++ b/engines/pegasus/surface.cpp @@ -27,8 +27,8 @@ #include "common/macresman.h" #include "common/stream.h" #include "common/system.h" -#include "graphics/pict.h" #include "graphics/surface.h" +#include "graphics/decoders/pict.h" #include "video/video_decoder.h" #include "pegasus/pegasus.h" @@ -98,35 +98,12 @@ void Surface::getImageFromPICTResource(Common::MacResManager *resFork, uint16 id } void Surface::getImageFromPICTStream(Common::SeekableReadStream *stream) { - Graphics::PictDecoder pict(g_system->getScreenFormat()); - byte pal[256 * 3]; - - Graphics::Surface *surface = pict.decodeImage(stream, pal); - - // Create the surface if not present - if (!_surface) - _surface = new Graphics::Surface(); - - // Update - if (surface->format.bytesPerPixel == 1) { - // Convert to true color - _surface->create(surface->w, surface->h, g_system->getScreenFormat()); - - for (int y = 0; y < surface->h; y++) { - for (int x = 0; x < surface->w; x++) { - byte index = *((byte *)surface->getBasePtr(x, y)); - uint32 color = _surface->format.RGBToColor(pal[index * 3], pal[index * 3 + 1], pal[index * 3 + 2]); - if (_surface->format.bytesPerPixel == 2) - *((uint16 *)_surface->getBasePtr(x, y)) = color; - else - *((uint32 *)_surface->getBasePtr(x, y)) = color; - } - } - } else { - // Just a copy - _surface->copyFrom(*surface); - } + Graphics::PICTDecoder pict; + + if (!pict.loadStream(*stream)) + error("Failed to load PICT image"); + _surface = pict.getSurface()->convertTo(g_system->getScreenFormat(), pict.getPalette()); _ownsSurface = true; _bounds = Common::Rect(0, 0, _surface->w, _surface->h); } |