diff options
-rw-r--r-- | engines/prince/resource.cpp | 22 | ||||
-rw-r--r-- | engines/prince/resource.h | 24 |
2 files changed, 23 insertions, 23 deletions
diff --git a/engines/prince/resource.cpp b/engines/prince/resource.cpp index 342c16e900..96a831cdfb 100644 --- a/engines/prince/resource.cpp +++ b/engines/prince/resource.cpp @@ -32,6 +32,28 @@ namespace Prince { +Common::SeekableReadStream *Resource::getDecompressedStream(Common::SeekableReadStream *stream) { + byte header[4]; + + stream->read(header, 4); + stream->seek(0); + + if (READ_BE_UINT32(header) == MKTAG('M', 'A', 'S', 'M')) { + byte *buffer = (byte *)malloc(stream->size()); + stream->read(buffer, stream->size()); + + Decompressor dec; + uint32 decompLen = READ_BE_UINT32(buffer + 14); + byte *decompData = (byte *)malloc(decompLen); + dec.decompress(buffer + 18, decompData, decompLen); + free(buffer); + + return new Common::MemoryReadStream(decompData, decompLen, DisposeAfterUse::YES); + } else { + return stream; + } +} + bool AnimListItem::loadFromStream(Common::SeekableReadStream &stream) { int32 pos = stream.pos(); diff --git a/engines/prince/resource.h b/engines/prince/resource.h index 8fb2b94bd9..1746f2bfb5 100644 --- a/engines/prince/resource.h +++ b/engines/prince/resource.h @@ -35,7 +35,7 @@ namespace Prince { namespace Resource { -static Common::SeekableReadStream *getDecompressedStream(Common::SeekableReadStream *stream); +Common::SeekableReadStream *getDecompressedStream(Common::SeekableReadStream *stream); template <typename T> bool loadFromStream(T &resource, Common::SeekableReadStream &stream) { @@ -104,28 +104,6 @@ bool loadResource(Common::Array<T *> &array, const char *resourceName, bool requ return true; } -static Common::SeekableReadStream *getDecompressedStream(Common::SeekableReadStream *stream) { - byte header[4]; - - stream->read(header, 4); - stream->seek(0); - - if (READ_BE_UINT32(header) == MKTAG('M', 'A', 'S', 'M')) { - byte *buffer = (byte *)malloc(stream->size()); - stream->read(buffer, stream->size()); - - Decompressor dec; - uint32 decompLen = READ_BE_UINT32(buffer + 14); - byte *decompData = (byte *)malloc(decompLen); - dec.decompress(buffer + 18, decompData, decompLen); - free(buffer); - - return new Common::MemoryReadStream(decompData, decompLen, DisposeAfterUse::YES); - } else { - return stream; - } -} - } } // End of namespace Prince |