aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/wage/design.cpp50
-rw-r--r--engines/wage/design.h14
2 files changed, 55 insertions, 9 deletions
diff --git a/engines/wage/design.cpp b/engines/wage/design.cpp
index 5017992a5c..4fbd2e366f 100644
--- a/engines/wage/design.cpp
+++ b/engines/wage/design.cpp
@@ -49,19 +49,59 @@
#include "wage/design.h"
#include "common/stream.h"
+#include "common/memstream.h"
namespace Wage {
Design::Design(Common::SeekableReadStream *data) {
- int len = data->readUint16BE() - 2;
-
- _data = (byte *)malloc(len);
- for (int i = 0; i < len; i++)
- _data[i] = data->readByte();
+ _len = data->readUint16BE() - 2;
+ _data = (byte *)malloc(_len);
+ data->read(_data, _len);
}
Design::~Design() {
free(_data);
}
+void Design::paint(Graphics::Surface *canvas, TexturePaint *patterns, bool mask) {
+ Common::MemoryReadStream in(_data, _len);
+
+ if (mask) {
+ //canvas.setColor(Color.WHITE);
+ canvas->fillRect(Common::Rect(0, 0, _bounds->width(), _bounds->height()), 0xff);
+ //canvas.setColor(Color.BLACK);
+ }
+
+ while (!in.eos()) {
+ byte fillType = in.readByte();
+ byte borderThickness = in.readByte();
+ byte borderFillType = in.readByte();
+ int type = in.readByte();
+ switch (type) {
+/*
+ case 4:
+ drawRect(canvas, in, mask, patterns, fillType, borderThickness, borderFillType);
+ break;
+ case 8:
+ drawRoundRect(canvas, in, mask, patterns, fillType, borderThickness, borderFillType);
+ break;
+ case 12:
+ drawOval(canvas, in, mask, patterns, fillType, borderThickness, borderFillType);
+ break;
+ case 16:
+ case 20:
+ drawPolygon(canvas, in, mask, patterns, fillType, borderThickness, borderFillType);
+ break;
+ case 24:
+ drawBitmap(canvas, in, mask);
+ break;
+*/
+ default:
+ error("Unknown type => %d", type);
+ return;
+ }
+ }
+}
+
+
} // End of namespace Wage
diff --git a/engines/wage/design.h b/engines/wage/design.h
index 9cd8b90b63..a0315b5880 100644
--- a/engines/wage/design.h
+++ b/engines/wage/design.h
@@ -48,10 +48,13 @@
#ifndef WAGE_DESIGN_H
#define WAGE_DESIGN_H
+#include "graphics/surface.h"
#include "common/rect.h"
-
+
namespace Wage {
+struct TexturePaint;
+
class Design {
public:
Design(Common::SeekableReadStream *data);
@@ -60,16 +63,19 @@ public:
void setBounds(Common::Rect *bounds) {
_bounds = new Common::Rect(*bounds);
}
-
+
Common::Rect *getBounds() {
return new Common::Rect(*_bounds);
}
-
+
+ void paint(Graphics::Surface *canvas, TexturePaint *patterns, bool mask);
+
private:
byte *_data;
+ int _len;
Common::Rect *_bounds;
};
} // End of namespace Wage
-
+
#endif