Added Sprite::draw() method for drawing sprites to a Surface.

svn-id: r41654
This commit is contained in:
Denis Kasak 2009-06-19 00:00:31 +00:00
parent a6355466d0
commit 1fe88abf6b
2 changed files with 23 additions and 0 deletions

View file

@ -22,8 +22,10 @@
* $Id$
*
*/
#include "common/stream.h"
#include "draci/draci.h"
#include "draci/sprite.h"
namespace Draci {
@ -76,6 +78,23 @@ 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

View file

@ -26,6 +26,8 @@
#ifndef DRACI_SPRITE_H
#define DRACI_SPRITE_H
#include "draci/surface.h"
namespace Draci {
/**
@ -52,6 +54,8 @@ public:
~Sprite();
void draw(Surface *surface) const;
byte *_data;
uint16 _width;
uint16 _height;