mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 17:33:05 +00:00
PRINCE: Move decompression method to reusable place
This commit is contained in:
parent
5a9eba989a
commit
85aa17d9ac
@ -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();
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user