aboutsummaryrefslogtreecommitdiff
path: root/engines/composer/composer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/composer/composer.cpp')
-rw-r--r--engines/composer/composer.cpp87
1 files changed, 0 insertions, 87 deletions
diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp
index 656030f1f1..484f3cecae 100644
--- a/engines/composer/composer.cpp
+++ b/engines/composer/composer.cpp
@@ -31,7 +31,6 @@
#include "common/fs.h"
#include "common/keyboard.h"
#include "common/substream.h"
-#include "common/memstream.h"
#include "common/savefile.h"
#include "graphics/cursorman.h"
@@ -124,92 +123,6 @@ enum {
kFuncGetSpriteSize = 35029
};
-Pipe::Pipe(Common::SeekableReadStream *stream) {
- _offset = 0;
- _stream = stream;
-
- nextFrame();
-}
-
-void Pipe::nextFrame() {
- if (_offset == (uint)_stream->size())
- return;
-
- _stream->seek(_offset, SEEK_SET);
-
- uint32 tagCount = _stream->readUint32LE();
- _offset += 4;
- for (uint i = 0; i < tagCount; i++) {
- uint32 tag = _stream->readUint32BE();
- uint32 count = _stream->readUint32LE();
- _offset += 8;
-
- ResourceMap &resMap = _types[tag];
-
- _offset += (12 * count);
- //uint32 baseOffset = _offset;
- for (uint j = 0; j < count; j++) {
- uint32 offset = _stream->readUint32LE();
- uint32 size = _stream->readUint32LE();
- uint16 id = _stream->readUint16LE();
- uint32 unknown = _stream->readUint16LE(); // frame id?
- debug(9, "pipe: %s/%d: offset %d, size %d, unknown %d", tag2str(tag), id, offset, size, unknown);
-
- PipeResourceEntry entry;
- entry.size = size;
- entry.offset = _offset;
- resMap[id].entries.push_back(entry);
-
- _offset += size;
- }
- _stream->seek(_offset, SEEK_SET);
- }
-}
-
-bool Pipe::hasResource(uint32 tag, uint16 id) const {
- if (!_types.contains(tag))
- return false;
-
- return _types[tag].contains(id);
-}
-
-Common::SeekableReadStream *Pipe::getResource(uint32 tag, uint16 id, bool buffering) {
- if (!_types.contains(tag))
- error("Pipe does not contain '%s' %04x", tag2str(tag), id);
-
- const ResourceMap &resMap = _types[tag];
-
- if (!resMap.contains(id))
- error("Archive does not contain '%s' %04x", tag2str(tag), id);
-
- const PipeResource &res = resMap[id];
-
- if (res.entries.size() == 1) {
- Common::SeekableReadStream *stream = new Common::SeekableSubReadStream(_stream,
- res.entries[0].offset, res.entries[0].offset + res.entries[0].size);
- if (buffering)
- _types[tag].erase(id);
- return stream;
- }
-
- // If there are multiple entries in the pipe, we have to concaternate them together.
-
- uint32 size = 0;
- for (uint i = 0; i < res.entries.size(); i++)
- size += res.entries[i].size;
-
- byte *buffer = (byte *)malloc(size);
- uint32 offset = 0;
- for (uint i = 0; i < res.entries.size(); i++) {
- _stream->seek(res.entries[i].offset, SEEK_SET);
- _stream->read(buffer + offset, res.entries[i].size);
- offset += res.entries[i].size;
- }
- if (buffering)
- _types[tag].erase(id);
- return new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES);
-}
-
Button::Button(Common::SeekableReadStream *stream, uint16 id) {
_id = id;