From 1fe88abf6b0518b1bb4cb6baf2344c84da4b6312 Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Fri, 19 Jun 2009 00:00:31 +0000 Subject: Added Sprite::draw() method for drawing sprites to a Surface. svn-id: r41654 --- engines/draci/sprite.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'engines/draci/sprite.cpp') 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 -- cgit v1.2.3