[Scummvm-cvs-logs] SF.net SVN: scummvm: [33083] scummvm/trunk/engines/agos

tramboi at users.sourceforge.net tramboi at users.sourceforge.net
Wed Jul 16 11:08:44 CEST 2008


Revision: 33083
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33083&view=rev
Author:   tramboi
Date:     2008-07-16 02:08:44 -0700 (Wed, 16 Jul 2008)

Log Message:
-----------
Split the drawVertImage function in the agos engine to make it clearer 
and easier to profile

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/gfx.cpp

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2008-07-16 04:22:56 UTC (rev 33082)
+++ scummvm/trunk/engines/agos/agos.h	2008-07-16 09:08:44 UTC (rev 33083)
@@ -1075,6 +1075,8 @@
 	virtual void drawImage(VC10_state *state);
 	void drawBackGroundImage(VC10_state *state);
 	void drawVertImage(VC10_state *state);
+	void drawVertImageCompressed(VC10_state *state);
+	void drawVertImageUncompressed(VC10_state *state);
 
 	void setMoveRect(uint16 x, uint16 y, uint16 width, uint16 height);
 

Modified: scummvm/trunk/engines/agos/gfx.cpp
===================================================================
--- scummvm/trunk/engines/agos/gfx.cpp	2008-07-16 04:22:56 UTC (rev 33082)
+++ scummvm/trunk/engines/agos/gfx.cpp	2008-07-16 09:08:44 UTC (rev 33083)
@@ -771,63 +771,74 @@
 
 void AGOSEngine::drawVertImage(VC10_state *state) {
 	if (state->flags & kDFCompressed) {
-		uint w, h;
-		byte *src, *dst, *dstPtr;
+		drawVertImageCompressed(state);
+	} else {
+		drawVertImageUncompressed(state);
+	}
+}
 
-		state->x_skip *= 4;				/* reached */
+void AGOSEngine::drawVertImageUncompressed(VC10_state *state) {
+	assert ((state->flags & kDFCompressed) == 0) ;
 
-		state->dl = state->width;
-		state->dh = state->height;
+	const byte *src;
+	byte *dst;
+	uint count;
 
-		vc10_skip_cols(state);
+	src = state->srcPtr + (state->width * state->y_skip) * 8;
+	dst = state->surf_addr;
+	state->x_skip *= 4;
 
-		dstPtr = state->surf_addr;
-		if (!(state->flags & kDFNonTrans) && (state->flags & 0x40)) { /* reached */
-			dstPtr += vcReadVar(252);
+	do {
+		for (count = 0; count != state->draw_width; count++) {
+			byte color;
+			color = (src[count + state->x_skip] / 16) + state->paletteMod;
+			if ((state->flags & kDFNonTrans) || color)
+				dst[count * 2] = color | state->palette;
+			color = (src[count + state->x_skip] & 15) + state->paletteMod;
+			if ((state->flags & kDFNonTrans) || color)
+				dst[count * 2 + 1] = color | state->palette;
 		}
-		w = 0;
-		do {
-			byte color;
+		dst += state->surf_pitch;
+		src += state->width * 8;
+	} while (--state->draw_height);
+}
 
-			src = vc10_depackColumn(state);
-			dst = dstPtr;
+void AGOSEngine::drawVertImageCompressed(VC10_state *state) {
+	assert (state->flags & kDFCompressed) ;
+	uint w, h;
+	byte *src, *dst, *dstPtr;
 
-			h = 0;
-			do {
-				color = (*src / 16);
-				if ((state->flags & kDFNonTrans) || color != 0)
-					dst[0] = color | state->palette;
-				color = (*src & 15);
-				if ((state->flags & kDFNonTrans) || color != 0)
-					dst[1] = color | state->palette;
-				dst += state->surf_pitch;
-				src++;
-			} while (++h != state->draw_height);
-			dstPtr += 2;
-		} while (++w != state->draw_width);
-	} else {
-		const byte *src;
-		byte *dst;
-		uint count;
+	state->x_skip *= 4;				/* reached */
 
-		src = state->srcPtr + (state->width * state->y_skip) * 8;
-		dst = state->surf_addr;
-		state->x_skip *= 4;
+	state->dl = state->width;
+	state->dh = state->height;
 
+	vc10_skip_cols(state);
+
+	dstPtr = state->surf_addr;
+	if (!(state->flags & kDFNonTrans) && (state->flags & 0x40)) { /* reached */
+		dstPtr += vcReadVar(252);
+	}
+	w = 0;
+	do {
+		byte color;
+
+		src = vc10_depackColumn(state);
+		dst = dstPtr;
+
+		h = 0;
 		do {
-			for (count = 0; count != state->draw_width; count++) {
-				byte color;
-				color = (src[count + state->x_skip] / 16) + state->paletteMod;
-				if ((state->flags & kDFNonTrans) || color)
-					dst[count * 2] = color | state->palette;
-				color = (src[count + state->x_skip] & 15) + state->paletteMod;
-				if ((state->flags & kDFNonTrans) || color)
-					dst[count * 2 + 1] = color | state->palette;
-			}
+			color = (*src / 16);
+			if ((state->flags & kDFNonTrans) || color != 0)
+				dst[0] = color | state->palette;
+			color = (*src & 15);
+			if ((state->flags & kDFNonTrans) || color != 0)
+				dst[1] = color | state->palette;
 			dst += state->surf_pitch;
-			src += state->width * 8;
-		} while (--state->draw_height);
-	}
+			src++;
+		} while (++h != state->draw_height);
+		dstPtr += 2;
+	} while (++w != state->draw_width);
 }
 
 void AGOSEngine::drawImage(VC10_state *state) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list