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 {
@ -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