diff options
author | Matthew Hoops | 2012-10-16 22:16:32 -0400 |
---|---|---|
committer | Matthew Hoops | 2012-10-16 22:16:32 -0400 |
commit | dc3facfc62ac794510d4c9c752deddd52cd70a8e (patch) | |
tree | e757a0b0c7df43c555ce4b713382297f57376f83 | |
parent | c645f7dc9334a34c4b48684297ceb17e3595b827 (diff) | |
download | scummvm-rg350-dc3facfc62ac794510d4c9c752deddd52cd70a8e.tar.gz scummvm-rg350-dc3facfc62ac794510d4c9c752deddd52cd70a8e.tar.bz2 scummvm-rg350-dc3facfc62ac794510d4c9c752deddd52cd70a8e.zip |
PEGASUS: Improve error messages when failing to load PICT images
-rw-r--r-- | engines/pegasus/surface.cpp | 12 | ||||
-rw-r--r-- | engines/pegasus/surface.h | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/engines/pegasus/surface.cpp b/engines/pegasus/surface.cpp index e9e0958f9d..cdcb3c6e79 100644 --- a/engines/pegasus/surface.cpp +++ b/engines/pegasus/surface.cpp @@ -85,7 +85,8 @@ void Surface::getImageFromPICTFile(const Common::String &fileName) { if (!pict.open(fileName)) error("Could not open picture '%s'", fileName.c_str()); - getImageFromPICTStream(&pict); + if (!getImageFromPICTStream(&pict)) + error("Failed to load PICT '%s'", fileName.c_str()); } void Surface::getImageFromPICTResource(Common::MacResManager *resFork, uint16 id) { @@ -93,19 +94,22 @@ void Surface::getImageFromPICTResource(Common::MacResManager *resFork, uint16 id if (!res) error("Could not open PICT resource %d from '%s'", id, resFork->getBaseFileName().c_str()); - getImageFromPICTStream(res); + if (!getImageFromPICTStream(res)) + error("Failed to load PICT resource %d from '%s'", id, resFork->getBaseFileName().c_str()); + delete res; } -void Surface::getImageFromPICTStream(Common::SeekableReadStream *stream) { +bool Surface::getImageFromPICTStream(Common::SeekableReadStream *stream) { Graphics::PICTDecoder pict; if (!pict.loadStream(*stream)) - error("Failed to load PICT image"); + return false; _surface = pict.getSurface()->convertTo(g_system->getScreenFormat(), pict.getPalette()); _ownsSurface = true; _bounds = Common::Rect(0, 0, _surface->w, _surface->h); + return true; } void Surface::getImageFromMovieFrame(Video::VideoDecoder *video, TimeValue time) { diff --git a/engines/pegasus/surface.h b/engines/pegasus/surface.h index 4588146fb4..47e3ef538c 100644 --- a/engines/pegasus/surface.h +++ b/engines/pegasus/surface.h @@ -84,7 +84,7 @@ protected: Common::Rect _bounds; private: - void getImageFromPICTStream(Common::SeekableReadStream *stream); + bool getImageFromPICTStream(Common::SeekableReadStream *stream); uint32 getGlowColor(uint32 color) const; bool isTransparent(uint32 color) const; |