[Scummvm-cvs-logs] SF.net SVN: scummvm:[50601] scummvm/trunk/graphics/scaler/thumbnail_intern. cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Fri Jul 2 21:04:45 CEST 2010


Revision: 50601
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50601&view=rev
Author:   thebluegr
Date:     2010-07-02 19:04:44 +0000 (Fri, 02 Jul 2010)

Log Message:
-----------
Rewrote the handling of thumbnail creation for KQ6 Windows in rev #50600, so that it recreates the screen buffer like the other workarounds above it (thanks to LordHoto for pointing this out)

Revision Links:
--------------
    http://scummvm.svn.sourceforge.net/scummvm/?rev=50600&view=rev

Modified Paths:
--------------
    scummvm/trunk/graphics/scaler/thumbnail_intern.cpp

Modified: scummvm/trunk/graphics/scaler/thumbnail_intern.cpp
===================================================================
--- scummvm/trunk/graphics/scaler/thumbnail_intern.cpp	2010-07-02 16:52:09 UTC (rev 50600)
+++ scummvm/trunk/graphics/scaler/thumbnail_intern.cpp	2010-07-02 19:04:44 UTC (rev 50601)
@@ -71,17 +71,6 @@
 		dstPtr += (dstPitch - 2 * width / 4);
 		src += 4 * srcPitch;
 	}
-
-	// Special case for KQ6 Windows, which runs at 640x440: fill the bottom
-	// with zeroes (a black bar)
-	if (width == 640 && height == 440) {
-		for (int y = 440; y < 480; y += 4) {
-			for (int x = 0; x < width; x += 4, dstPtr += 2)
-				*((uint16*)dstPtr) = 0;
-
-			dstPtr += (dstPitch - 2 * width / 4);
-		}
-	}
 }
 
 static void createThumbnail(const uint8 *src, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
@@ -195,15 +184,22 @@
 
 		in.free();
 		in = newscreen;
+	} else if (width == 640 && inHeight == 440) {
+		// Special case to handle KQ6 Windows: resize the screen to 640x480,
+		// adding a black band in the bottom.
+		inHeight = 480;
+
+		Graphics::Surface newscreen;
+		newscreen.create(width, 480, in.bytesPerPixel);
+
+		memcpy(newscreen.getBasePtr(0, 0), in.getBasePtr(0, 0), width * 440 * in.bytesPerPixel);
+
+		in.free();
+		in = newscreen;
 	}
 
 	uint16 newHeight = !(inHeight % 240) ? kThumbnailHeight2 : kThumbnailHeight1;
 
-	// Special case for KQ6 Windows, which runs at 640x440: expand the
-	// thumbnail so that it fits
-	if (width == 640 && inHeight == 440)
-		newHeight = kThumbnailHeight2;
-
 	out.create(kThumbnailWidth, newHeight, sizeof(uint16));
 	createThumbnail((const uint8 *)in.pixels, width * sizeof(uint16), (uint8 *)out.pixels, out.pitch, width, inHeight);
 


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