aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/graphics.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/graphics.h')
-rw-r--r--engines/parallaction/graphics.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h
index 0f4c332ad6..4e6ab7b037 100644
--- a/engines/parallaction/graphics.h
+++ b/engines/parallaction/graphics.h
@@ -140,6 +140,15 @@ public:
MaskBuffer() : w(0), internalWidth(0), h(0), size(0), data(0), bigEndian(true) {
}
+ void clone(const MaskBuffer &buf) {
+ if (!buf.data)
+ return;
+
+ create(buf.w, buf.h);
+ bigEndian = buf.bigEndian;
+ memcpy(data, buf.data, size);
+ }
+
void create(uint16 width, uint16 height) {
free();
@@ -378,6 +387,10 @@ public:
uint transparentKey;
uint scale;
+ MaskBuffer _mask;
+ bool _hasMask;
+
+
GfxObj(uint type, Frames *frames, const char *name = NULL);
virtual ~GfxObj();
@@ -413,6 +426,7 @@ struct BackgroundInfo {
Graphics::Surface bg;
MaskBuffer mask;
+ MaskBuffer maskBackup;
PathBuffer path;
Palette palette;
@@ -442,6 +456,7 @@ struct BackgroundInfo {
~BackgroundInfo() {
bg.free();
mask.free();
+ maskBackup.free();
path.free();
x = 0;
y = 0;
@@ -607,6 +622,8 @@ public:
void bltMaskScale(const Common::Rect& r, byte *data, Graphics::Surface *surf, uint16 z, uint scale, byte transparentColor);
void bltMaskNoScale(const Common::Rect& r, byte *data, Graphics::Surface *surf, uint16 z, byte transparentColor);
void bltNoMaskNoScale(const Common::Rect& r, byte *data, Graphics::Surface *surf, byte transparentColor);
+
+ void loadGfxObjMask(const char *name, GfxObj *obj);
};