aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/voyeur/files.cpp21
-rw-r--r--engines/voyeur/files.h1
2 files changed, 19 insertions, 3 deletions
diff --git a/engines/voyeur/files.cpp b/engines/voyeur/files.cpp
index 2602ace735..9d86c66c2e 100644
--- a/engines/voyeur/files.cpp
+++ b/engines/voyeur/files.cpp
@@ -697,10 +697,12 @@ bool BoltEntry::hasResource() const {
/*------------------------------------------------------------------------*/
RectResource::RectResource(const byte *src, int size) {
- int count = 1;
- if (size != 8) {
+ int count;
+ if ((size % 8) == 2) {
count = READ_LE_UINT16(src);
src += 2;
+ } else {
+ count = size / 8;
}
for (int i = 0; i < count; ++i, src += 8) {
@@ -815,6 +817,19 @@ PictureResource::PictureResource(BoltFilesState &state, const byte *src) {
}
}
+PictureResource::PictureResource(Graphics::Surface *surface) {
+ _flags = 0;
+ _select = 0;
+ _pick = 0;
+ _onOff = 0;
+ _depth = 0;
+ _maskData = 0;
+ _planeSize = 0;
+
+ _bounds = Common::Rect(0, 0, surface->w, surface->h);
+ _imgData = (byte *)surface->getPixels();
+}
+
PictureResource::PictureResource() {
_flags = 0;
_select = 0;
@@ -967,7 +982,7 @@ void ViewPortResource::setupViewPort(PictureResource *page, Common::Rect *clipRe
if (yDiff > 0)
r.setHeight(yDiff <= r.height() ? r.height() - yDiff : 0);
}
-// clip = (0x20, 0x14, width: 0x140, height: 0C8h
+
_activePage = page;
_field18 = 0;
_clipRect = r;
diff --git a/engines/voyeur/files.h b/engines/voyeur/files.h
index 8ccfab8a20..832e157b7b 100644
--- a/engines/voyeur/files.h
+++ b/engines/voyeur/files.h
@@ -274,6 +274,7 @@ public:
PictureResource(BoltFilesState &state, const byte *src);
PictureResource(int flags, int select, int pick, int onOff, int depth,
const Common::Rect &bounds, int maskData, byte *imgData, int planeSize);
+ PictureResource::PictureResource(Graphics::Surface *surface);
PictureResource();
virtual ~PictureResource();
};