From d176fb1a37819b560d5aa44cd3625b4dd37e1ff7 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Mon, 18 Jul 2011 15:06:38 +0200 Subject: COMPOSER: Clip sprite drawing. --- engines/composer/composer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'engines/composer') diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 0a3b7b722a..854363d2bd 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -1901,10 +1901,14 @@ void ComposerEngine::drawSprite(const Sprite &sprite) { // incoming data is BMP-style (bottom-up), so flip it byte *pixels = (byte *)_surface.pixels; for (int j = 0; j < sprite._surface.h; j++) { + if (j + y < 0) + continue; + if (j + y >= _surface.h) + break; byte *in = (byte *)sprite._surface.pixels + (sprite._surface.h - j - 1) * sprite._surface.w; byte *out = pixels + ((j + y) * _surface.w) + x; - for (uint i = 0; i < sprite._surface.w; i++) - if (in[i]) + for (int i = 0; i < sprite._surface.w; i++) + if ((x + i >= 0) && (x + i < _surface.w) && in[i]) out[i] = in[i]; } } -- cgit v1.2.3