diff --git a/engines/wage/design.cpp b/engines/wage/design.cpp index 5017992a5c1b..4fbd2e366f0a 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 9cd8b90b6375..a0315b588019 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 @@ class Design { 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