aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/voyeur/files.cpp21
-rw-r--r--engines/voyeur/files.h11
-rw-r--r--engines/voyeur/graphics.h1
3 files changed, 32 insertions, 1 deletions
diff --git a/engines/voyeur/files.cpp b/engines/voyeur/files.cpp
index 343485edf8..811bdf600b 100644
--- a/engines/voyeur/files.cpp
+++ b/engines/voyeur/files.cpp
@@ -379,7 +379,9 @@ void BoltFile::initViewPort() {
}
void BoltFile::initViewPortList() {
- error("TODO: initViewPortList not implemented");
+ initDefault();
+ _state._curMemberPtr->_viewPortListResource = new ViewPortListResource(
+ _state, _state._curMemberPtr->_data);
}
void BoltFile::initFontInfo() {
@@ -435,6 +437,7 @@ BoltEntry::~BoltEntry() {
delete[] _data;
delete _picResource;
delete _viewPortResource;
+ delete _viewPortListResource;
}
void BoltEntry::load() {
@@ -555,4 +558,20 @@ ViewPortResource::ViewPortResource(BoltFilesState &state, const byte *src) {
_fn3 = &BoltFile::addRectNoSaveBack;
}
+/*------------------------------------------------------------------------*/
+
+ViewPortListResource::ViewPortListResource(BoltFilesState &state, const byte *src) {
+ uint32 *idP = (uint32 *)&src[0];
+ uint count = READ_LE_UINT32(idP++);
+
+ for (uint i = 0; i < count; ++i, ++idP) {
+ uint32 id = READ_LE_UINT32(idP);
+ _entries.push_back(NULL);
+ state._curLibPtr->resolveIt(id, &_entries[_entries.size() - 1]);
+ }
+
+ state._vm->_graphicsManager._vPort = &_entries[0];
+ state._curLibPtr->resolveIt(READ_LE_UINT32(&src[4]), &_field4);
+}
+
} // End of namespace Voyeur
diff --git a/engines/voyeur/files.h b/engines/voyeur/files.h
index c8c480768a..47ef5a1f46 100644
--- a/engines/voyeur/files.h
+++ b/engines/voyeur/files.h
@@ -36,6 +36,7 @@ class BoltGroup;
class BoltEntry;
class PictureResource;
class ViewPortResource;
+class ViewPortListResource;
#define DECOMPRESS_SIZE 0x7000
@@ -161,6 +162,7 @@ public:
PictureResource *_picResource;
ViewPortResource *_viewPortResource;
+ ViewPortListResource *_viewPortListResource;
public:
BoltEntry(Common::SeekableReadStream *f);
virtual ~BoltEntry();
@@ -220,6 +222,15 @@ public:
virtual ~ViewPortResource() {}
};
+class ViewPortListResource {
+public:
+ byte *_field4;
+ Common::Array<byte *> _entries;
+
+ ViewPortListResource(BoltFilesState &state, const byte *src);
+ virtual ~ViewPortListResource() {}
+};
+
} // End of namespace Voyeur
#endif /* VOYEUR_FILES_H */
diff --git a/engines/voyeur/graphics.h b/engines/voyeur/graphics.h
index 72b5047b29..152ce00d9e 100644
--- a/engines/voyeur/graphics.h
+++ b/engines/voyeur/graphics.h
@@ -49,6 +49,7 @@ public:
byte *_backgroundPage;
int _SVGAPage;
int _SVGAMode;
+ byte **_vPort;
private:
static void fadeIntFunc();
static void vDoFadeInt();