aboutsummaryrefslogtreecommitdiff
path: root/engines/draci/sprite.cpp
diff options
context:
space:
mode:
authorDenis Kasak2009-06-19 00:00:31 +0000
committerDenis Kasak2009-06-19 00:00:31 +0000
commit1fe88abf6b0518b1bb4cb6baf2344c84da4b6312 (patch)
tree771c29d89003881caf5b645def16ab9d3b2f6937 /engines/draci/sprite.cpp
parenta6355466d0a4d860288b5bdc049e3fcb277dc06e (diff)
downloadscummvm-rg350-1fe88abf6b0518b1bb4cb6baf2344c84da4b6312.tar.gz
scummvm-rg350-1fe88abf6b0518b1bb4cb6baf2344c84da4b6312.tar.bz2
scummvm-rg350-1fe88abf6b0518b1bb4cb6baf2344c84da4b6312.zip
Added Sprite::draw() method for drawing sprites to a Surface.
svn-id: r41654
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