aboutsummaryrefslogtreecommitdiff
path: root/engines/prince
diff options
context:
space:
mode:
authorEugene Sandulenko2018-05-05 20:35:31 +0200
committerEugene Sandulenko2018-05-05 23:17:35 +0200
commit85aa17d9ac8c97f0939bdd9380f97c8a71fcd140 (patch)
treef631061b521c0c39d02a93ff95ae674b04e1f876 /engines/prince
parent5a9eba989aa14483c5fea98f920ba02acb9e7cdd (diff)
downloadscummvm-rg350-85aa17d9ac8c97f0939bdd9380f97c8a71fcd140.tar.gz
scummvm-rg350-85aa17d9ac8c97f0939bdd9380f97c8a71fcd140.tar.bz2
scummvm-rg350-85aa17d9ac8c97f0939bdd9380f97c8a71fcd140.zip
PRINCE: Move decompression method to reusable place
Diffstat (limited to 'engines/prince')
-rw-r--r--engines/prince/resource.cpp22
-rw-r--r--engines/prince/resource.h24
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