aboutsummaryrefslogtreecommitdiff
path: root/engines/draci/sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/draci/sprite.cpp')
-rw-r--r--engines/draci/sprite.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/engines/draci/sprite.cpp b/engines/draci/sprite.cpp
index 526213362f..6a55894907 100644
--- a/engines/draci/sprite.cpp
+++ b/engines/draci/sprite.cpp
@@ -22,8 +22,10 @@
* $Id$
*
*/
+
#include "common/stream.h"
+#include "draci/draci.h"
#include "draci/sprite.h"
namespace Draci {
@@ -75,6 +77,23 @@ Sprite::Sprite(byte *sprite_data, uint16 length, uint16 x, uint16 y,
Sprite::~Sprite() {
delete[] _data;
}
+
+void Sprite::draw(Surface *surface) const {
+ byte *dst = (byte *)surface->getBasePtr(_x, _y);
+ byte *src = _data;
+
+ for (unsigned int i = 0; i < _height; ++i) {
+ for(unsigned int j = 0; j < _width; ++j, ++src) {
+ if (*src != surface->getTransparentColour())
+ dst[j] = *src;
+ }
+
+ dst += surface->pitch;
+ }
+
+ Common::Rect r(_x, _y, _x + _width, _y + _height);
+ surface->markDirtyRect(r);
+}
} // End of namespace Draci