[Scummvm-cvs-logs] SF.net SVN: scummvm:[48187] scummvm/trunk

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Mon Mar 8 11:29:35 CET 2010


Revision: 48187
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48187&view=rev
Author:   fingolfin
Date:     2010-03-08 10:29:35 +0000 (Mon, 08 Mar 2010)

Log Message:
-----------
SCALERS: Change 'bitformat' template params to 'colormasks';
get rid of some #defines

Modified Paths:
--------------
    scummvm/trunk/backends/platform/wince/CEScaler.cpp
    scummvm/trunk/graphics/scaler/2xsai.cpp
    scummvm/trunk/graphics/scaler/aspect.cpp
    scummvm/trunk/graphics/scaler/downscaler.cpp
    scummvm/trunk/graphics/scaler/intern.h
    scummvm/trunk/graphics/scaler.cpp

Modified: scummvm/trunk/backends/platform/wince/CEScaler.cpp
===================================================================
--- scummvm/trunk/backends/platform/wince/CEScaler.cpp	2010-03-08 10:29:00 UTC (rev 48186)
+++ scummvm/trunk/backends/platform/wince/CEScaler.cpp	2010-03-08 10:29:35 UTC (rev 48187)
@@ -25,7 +25,7 @@
 #include "graphics/scaler/intern.h"
 #include "CEScaler.h"
 
-template<int bitFormat>
+template<typename ColorMask>
 void PocketPCPortraitTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	uint16 *work;
 
@@ -41,9 +41,9 @@
 			uint16 color3 = *(((const uint16 *)(const void *)srcPtr) + (i + 2));
 			uint16 color4 = *(((const uint16 *)(const void *)srcPtr) + (i + 3));
 
-			work[0] = interpolate32_3_1<bitFormat>(color1, color2);
-			work[1] = interpolate32_1_1<bitFormat>(color2, color3);
-			work[2] = interpolate32_3_1<bitFormat>(color4, color3);
+			work[0] = interpolate32_3_1<ColorMask>(color1, color2);
+			work[1] = interpolate32_1_1<ColorMask>(color2, color3);
+			work[2] = interpolate32_3_1<ColorMask>(color4, color3);
 
 			work += 3;
 		}
@@ -128,7 +128,7 @@
 
 #else
 
-template<int bitFormat>
+template<typename ColorMask>
 void SmartphoneLandscapeTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	uint8 *work;
 	int line = 0;
@@ -142,8 +142,8 @@
 			uint16 color2 = *(((const uint16 *)srcPtr) + (i + 1));
 			uint16 color3 = *(((const uint16 *)srcPtr) + (i + 2));
 
-			*(((uint16 *)work) + 0) = interpolate32_3_1<bitFormat>(color1, color2);
-			*(((uint16 *)work) + 1) = interpolate32_3_1<bitFormat>(color3, color2);
+			*(((uint16 *)work) + 0) = interpolate32_3_1<ColorMask>(color1, color2);
+			*(((uint16 *)work) + 1) = interpolate32_3_1<ColorMask>(color3, color2);
 
 			work += 2 * sizeof(uint16);
 		}

Modified: scummvm/trunk/graphics/scaler/2xsai.cpp
===================================================================
--- scummvm/trunk/graphics/scaler/2xsai.cpp	2010-03-08 10:29:00 UTC (rev 48186)
+++ scummvm/trunk/graphics/scaler/2xsai.cpp	2010-03-08 10:29:35 UTC (rev 48187)
@@ -41,12 +41,12 @@
 	return (y>>1) - (x>>1);
 }
 
-#define interpolate_1_1		interpolate16_1_1<Graphics::ColorMasks<bitFormat> >
-#define interpolate_3_1		interpolate16_3_1<Graphics::ColorMasks<bitFormat> >
-#define interpolate_6_1_1	interpolate16_6_1_1<Graphics::ColorMasks<bitFormat> >
-#define interpolate_1_1_1_1	interpolate16_1_1_1_1<Graphics::ColorMasks<bitFormat> >
+#define interpolate_1_1		interpolate16_1_1<ColorMask>
+#define interpolate_3_1		interpolate16_3_1<ColorMask>
+#define interpolate_6_1_1	interpolate16_6_1_1<ColorMask>
+#define interpolate_1_1_1_1	interpolate16_1_1_1_1<ColorMask>
 
-template<int bitFormat>
+template<typename ColorMask>
 void Super2xSaITemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	const uint16 *bP;
 	uint16 *dP;
@@ -155,7 +155,7 @@
 
 MAKE_WRAPPER(Super2xSaI)
 
-template<int bitFormat>
+template<typename ColorMask>
 void SuperEagleTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	const uint16 *bP;
 	uint16 *dP;
@@ -260,7 +260,7 @@
 
 MAKE_WRAPPER(SuperEagle)
 
-template<int bitFormat>
+template<typename ColorMask>
 void _2xSaITemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	const uint16 *bP;
 	uint16 *dP;

Modified: scummvm/trunk/graphics/scaler/aspect.cpp
===================================================================
--- scummvm/trunk/graphics/scaler/aspect.cpp	2010-03-08 10:29:00 UTC (rev 48186)
+++ scummvm/trunk/graphics/scaler/aspect.cpp	2010-03-08 10:29:35 UTC (rev 48187)
@@ -36,28 +36,28 @@
 
 #if ASPECT_MODE == kSlowAndPerfectAspectMode
 
-template<int bitFormat, int scale>
+template<typename ColorMask, int scale>
 static inline uint16 interpolate5(uint16 A, uint16 B) {
-	uint16 r = (uint16)(((A & redblueMask & 0xFF00) * scale + (B & redblueMask & 0xFF00) * (5 - scale)) / 5);
-	uint16 g = (uint16)(((A & greenMask) * scale + (B & greenMask) * (5 - scale)) / 5);
-	uint16 b = (uint16)(((A & redblueMask & 0x00FF) * scale + (B & redblueMask & 0x00FF) * (5 - scale)) / 5);
+	uint16 r = (uint16)(((A & ColorMask::kRedBlueMask & 0xFF00) * scale + (B & ColorMask::kRedBlueMask & 0xFF00) * (5 - scale)) / 5);
+	uint16 g = (uint16)(((A & ColorMask::kGreenMask) * scale + (B & ColorMask::kGreenMask) * (5 - scale)) / 5);
+	uint16 b = (uint16)(((A & ColorMask::kRedBlueMask & 0x00FF) * scale + (B & ColorMask::kRedBlueMask & 0x00FF) * (5 - scale)) / 5);
 
-	return (uint16)((r & redblueMask & 0xFF00) | (g & greenMask) | (b & redblueMask & 0x00FF));
+	return (uint16)((r & ColorMask::kRedBlueMask & 0xFF00) | (g & ColorMask::kGreenMask) | (b & ColorMask::kRedBlueMask & 0x00FF));
 }
 
 
-template<int bitFormat, int scale>
+template<typename ColorMask, int scale>
 static inline void interpolate5Line(uint16 *dst, const uint16 *srcA, const uint16 *srcB, int width) {
 	// Accurate but slightly slower code
 	while (width--) {
-		*dst++ = interpolate5<bitFormat, scale>(*srcA++, *srcB++);
+		*dst++ = interpolate5<ColorMask, scale>(*srcA++, *srcB++);
 	}
 }
 #endif
 
 #if ASPECT_MODE == kFastAndNiceAspectMode
 
-template<int bitFormat, int scale>
+template<typename ColorMask, int scale>
 static inline void interpolate5Line(uint16 *dst, const uint16 *srcA, const uint16 *srcB, int width) {
 	// For efficiency reasons we blit two pixels at a time, so it is important
 	// that makeRectStretchable() guarantees that the width is even and that
@@ -78,11 +78,11 @@
 	uint32 *d = (uint32 *)dst;
 	if (scale == 1) {
 		while (width--) {
-			*d++ = interpolate32_3_1<bitFormat>(*sB++, *sA++);
+			*d++ = interpolate32_3_1<ColorMask>(*sB++, *sA++);
 		}
 	} else {
 		while (width--) {
-			*d++ = interpolate32_1_1<bitFormat>(*sB++, *sA++);
+			*d++ = interpolate32_1_1<ColorMask>(*sB++, *sA++);
 		}
 	}
 }
@@ -133,7 +133,7 @@
  * srcY + height - 1, and it should be stretched to Y coordinates srcY
  * through real2Aspect(srcY + height - 1).
  */
-template<int bitFormat>
+template<typename ColorMask>
 int stretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY) {
 	int maxDstY = real2Aspect(origSrcY + height - 1);
 	int y;
@@ -156,16 +156,16 @@
 				memcpy(dstPtr, srcPtr, width * 2);
 			break;
 		case 1:
-			interpolate5Line<bitFormat, 1>((uint16 *)dstPtr, (const uint16 *)(srcPtr - pitch), (const uint16 *)srcPtr, width);
+			interpolate5Line<ColorMask, 1>((uint16 *)dstPtr, (const uint16 *)(srcPtr - pitch), (const uint16 *)srcPtr, width);
 			break;
 		case 2:
-			interpolate5Line<bitFormat, 2>((uint16 *)dstPtr, (const uint16 *)(srcPtr - pitch), (const uint16 *)srcPtr, width);
+			interpolate5Line<ColorMask, 2>((uint16 *)dstPtr, (const uint16 *)(srcPtr - pitch), (const uint16 *)srcPtr, width);
 			break;
 		case 3:
-			interpolate5Line<bitFormat, 2>((uint16 *)dstPtr, (const uint16 *)srcPtr, (const uint16 *)(srcPtr - pitch), width);
+			interpolate5Line<ColorMask, 2>((uint16 *)dstPtr, (const uint16 *)srcPtr, (const uint16 *)(srcPtr - pitch), width);
 			break;
 		case 4:
-			interpolate5Line<bitFormat, 1>((uint16 *)dstPtr, (const uint16 *)srcPtr, (const uint16 *)(srcPtr - pitch), width);
+			interpolate5Line<ColorMask, 1>((uint16 *)dstPtr, (const uint16 *)srcPtr, (const uint16 *)(srcPtr - pitch), width);
 			break;
 		}
 #endif
@@ -177,8 +177,8 @@
 
 int stretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY) {
 	if (gBitFormat == 565)
-		return stretch200To240<565>(buf, pitch, width, height, srcX, srcY, origSrcY);
+		return stretch200To240<Graphics::ColorMasks<565> >(buf, pitch, width, height, srcX, srcY, origSrcY);
 	else // gBitFormat == 555
-		return stretch200To240<555>(buf, pitch, width, height, srcX, srcY, origSrcY);
+		return stretch200To240<Graphics::ColorMasks<555> >(buf, pitch, width, height, srcX, srcY, origSrcY);
 }
 

Modified: scummvm/trunk/graphics/scaler/downscaler.cpp
===================================================================
--- scummvm/trunk/graphics/scaler/downscaler.cpp	2010-03-08 10:29:00 UTC (rev 48186)
+++ scummvm/trunk/graphics/scaler/downscaler.cpp	2010-03-08 10:29:35 UTC (rev 48187)
@@ -41,7 +41,7 @@
 
 #else
 
-template<int bitFormat>
+template<typename ColorMask>
 void DownscaleAllByHalfTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	uint8 *work;
 	uint16 srcPitch16 = (uint16)(srcPitch / sizeof(uint16));
@@ -55,7 +55,7 @@
 			uint16 color2 = *(((const uint16 *)srcPtr) + (i + 1));
 			uint16 color3 = *(((const uint16 *)srcPtr) + (i + srcPitch16));
 			uint16 color4 = *(((const uint16 *)srcPtr) + (i + srcPitch16 + 1));
-			*(((uint16 *)work) + 0) = interpolate16_1_1_1_1<Graphics::ColorMasks<bitFormat> >(color1, color2, color3, color4);
+			*(((uint16 *)work) + 0) = interpolate16_1_1_1_1<ColorMask>(color1, color2, color3, color4);
 
 			work += sizeof(uint16);
 		}
@@ -72,7 +72,7 @@
  * This filter (down)scales the source image horizontally by a factor of 1/2.
  * For example, a 320x200 image is scaled to 160x200.
  */
-template<int bitFormat>
+template<typename ColorMask>
 void DownscaleHorizByHalfTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	uint16 *work;
 
@@ -87,7 +87,7 @@
 		for (int i = 0; i < width; i += 2) {
 			uint16 color1 = *(((const uint16 *)(const void *)srcPtr) + i);
 			uint16 color2 = *(((const uint16 *)(const void *)srcPtr) + (i + 1));
-			*work++ = interpolate32_1_1<bitFormat>(color1, color2);
+			*work++ = interpolate32_1_1<ColorMask>(color1, color2);
 		}
 		srcPtr += srcPitch;
 		dstPtr += dstPitch;

Modified: scummvm/trunk/graphics/scaler/intern.h
===================================================================
--- scummvm/trunk/graphics/scaler/intern.h	2010-03-08 10:29:00 UTC (rev 48186)
+++ scummvm/trunk/graphics/scaler/intern.h	2010-03-08 10:29:35 UTC (rev 48187)
@@ -30,22 +30,16 @@
 #include "graphics/colormasks.h"
 
 
-#define kHighBitsMask	Graphics::ColorMasks<bitFormat>::kHighBitsMask
-#define kLowBitsMask	Graphics::ColorMasks<bitFormat>::kLowBitsMask
-#define qhighBits	Graphics::ColorMasks<bitFormat>::qhighBits
-#define qlowBits	Graphics::ColorMasks<bitFormat>::qlowBits
-#define redblueMask	Graphics::ColorMasks<bitFormat>::kRedBlueMask
-#define greenMask	Graphics::ColorMasks<bitFormat>::kGreenMask
-
-
 /**
  * Interpolate two 16 bit pixel *pairs* at once with equal weights 1.
  * In particular, p1 and p2 can contain two pixels each in the upper
  * and lower halves.
  */
-template<int bitFormat>
+template<typename ColorMask>
 static inline uint32 interpolate32_1_1(uint32 p1, uint32 p2) {
-	return (((p1 & kHighBitsMask) >> 1) + ((p2 & kHighBitsMask) >> 1) + (p1 & p2 & kLowBitsMask));
+	return (((p1 & ColorMask::kHighBitsMask) >> 1) +
+	        ((p2 & ColorMask::kHighBitsMask) >> 1) +
+	         (p1 & p2 & ColorMask::kLowBitsMask));
 }
 
 /**
@@ -53,12 +47,12 @@
  * In particular, p1 and p2 can contain two pixels/each in the upper
  * and lower halves.
  */
-template<int bitFormat>
+template<typename ColorMask>
 static inline uint32 interpolate32_3_1(uint32 p1, uint32 p2) {
-	register uint32 x = ((p1 & qhighBits) >> 2) * 3 + ((p2 & qhighBits) >> 2);
-	register uint32 y = ((p1 & qlowBits) * 3 + (p2 & qlowBits)) >> 2;
+	register uint32 x = ((p1 & ColorMask::qhighBits) >> 2) * 3 + ((p2 & ColorMask::qhighBits) >> 2);
+	register uint32 y = ((p1 & ColorMask::qlowBits) * 3 + (p2 & ColorMask::qlowBits)) >> 2;
 
-	y &= qlowBits;
+	y &= ColorMask::qlowBits;
 	return x + y;
 }
 
@@ -227,9 +221,9 @@
 #define MAKE_WRAPPER(FUNC) \
 	void FUNC(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) { \
 		if (gBitFormat == 565) \
-			FUNC ## Template<565>(srcPtr, srcPitch, dstPtr, dstPitch, width, height); \
+			FUNC ## Template<Graphics::ColorMasks<565> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); \
 		else \
-			FUNC ## Template<555>(srcPtr, srcPitch, dstPtr, dstPitch, width, height); \
+			FUNC ## Template<Graphics::ColorMasks<555> >(srcPtr, srcPitch, dstPtr, dstPitch, width, height); \
 	}
 
 /** Specifies the currently active 16bit pixel format, 555 or 565. */

Modified: scummvm/trunk/graphics/scaler.cpp
===================================================================
--- scummvm/trunk/graphics/scaler.cpp	2010-03-08 10:29:00 UTC (rev 48186)
+++ scummvm/trunk/graphics/scaler.cpp	2010-03-08 10:29:35 UTC (rev 48187)
@@ -284,13 +284,13 @@
 	}
 }
 
-#define interpolate_1_1		interpolate16_1_1<Graphics::ColorMasks<bitFormat> >
-#define interpolate_1_1_1_1	interpolate16_1_1_1_1<Graphics::ColorMasks<bitFormat> >
+#define interpolate_1_1		interpolate16_1_1<ColorMask>
+#define interpolate_1_1_1_1	interpolate16_1_1_1_1<ColorMask>
 
 /**
  * Trivial nearest-neighbour 1.5x scaler.
  */
-template<int bitFormat>
+template<typename ColorMask>
 void Normal1o5xTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
 							int width, int height) {
 	uint8 *r;
@@ -342,7 +342,7 @@
 	scale(3, dstPtr, dstPitch, srcPtr - srcPitch, srcPitch, 2, width, height);
 }
 
-template<int bitFormat>
+template<typename ColorMask>
 void TV2xTemplate(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
 					int width, int height) {
 	const uint32 nextlineSrc = srcPitch / sizeof(uint16);
@@ -356,8 +356,8 @@
 			uint16 p1 = *(p + i);
 			uint32 pi;
 
-			pi = (((p1 & redblueMask) * 7) >> 3) & redblueMask;
-			pi |= (((p1 & greenMask) * 7) >> 3) & greenMask;
+			pi = (((p1 & ColorMask::kRedBlueMask) * 7) >> 3) & ColorMask::kRedBlueMask;
+			pi |= (((p1 & ColorMask::kGreenMask) * 7) >> 3) & ColorMask::kGreenMask;
 
 			*(q + j) = p1;
 			*(q + j + 1) = p1;


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