[Scummvm-cvs-logs] SF.net SVN: scummvm:[42936] scummvm/branches/branch-1-0-0/graphics/ VectorRendererSpec.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Thu Jul 30 18:55:23 CEST 2009


Revision: 42936
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42936&view=rev
Author:   lordhoto
Date:     2009-07-30 16:55:18 +0000 (Thu, 30 Jul 2009)

Log Message:
-----------
Backport of fix for bug #2829737: "GUI: Wrong background colours on dialog screens (IRIX)".

Modified Paths:
--------------
    scummvm/branches/branch-1-0-0/graphics/VectorRendererSpec.cpp

Modified: scummvm/branches/branch-1-0-0/graphics/VectorRendererSpec.cpp
===================================================================
--- scummvm/branches/branch-1-0-0/graphics/VectorRendererSpec.cpp	2009-07-30 16:51:53 UTC (rev 42935)
+++ scummvm/branches/branch-1-0-0/graphics/VectorRendererSpec.cpp	2009-07-30 16:55:18 UTC (rev 42936)
@@ -366,22 +366,24 @@
 	uint8 r, g, b;
 	uint lum;
 
-	const uint32 shiftMask = (uint32)~(
-		(1 << _format.rShift) | (1 << _format.gShift) | (1 << _format.bShift) | (_format.aLoss == 8 ? 0 : (1 << _format.aShift))) >> 1;
+	// Mask to clear the last bit of every color component and all unused bits
+	const uint32 colorMask = ~((1 << _format.rShift) | (1 << _format.gShift) | (1 << _format.bShift) // R/G/B components
+			| (_format.aLoss == 8 ? 0 : (1 << _format.aShift)) // Alpha component
+			| ~(_alphaMask | _redMask | _greenMask | _blueMask)); // All unused bits
 
 	if (shadingStyle == GUI::ThemeEngine::kShadingDim) {
 
 		int n = (pixels + 7) >> 3;
 		switch (pixels % 8) {
 		case 0: do {
-					*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 7:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 6:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 5:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 4:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 3:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 2:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
-		case 1:		*ptr = (*ptr >> 1) & shiftMask; ++ptr;
+					*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 7:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 6:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 5:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 4:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 3:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 2:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
+		case 1:		*ptr = (*ptr & colorMask) >> 1; ++ptr;
 				} while (--n > 0);
 		}
 
@@ -421,10 +423,10 @@
 	PixelType output = 0;
 	pos = (MIN(pos * Base::_gradientFactor, max) << 12) / max;
 
-	output |= ((_gradientStart&_redMask) + ((Base::_gradientBytes[0] * pos) >> 12)) & _redMask;
-	output |= ((_gradientStart&_greenMask) + ((Base::_gradientBytes[1] * pos) >> 12)) & _greenMask;
-	output |= ((_gradientStart&_blueMask) + ((Base::_gradientBytes[2] * pos) >> 12)) & _blueMask;
-	output |= ~(_redMask | _greenMask | _blueMask);
+	output |= ((_gradientStart & _redMask) + ((Base::_gradientBytes[0] * pos) >> 12)) & _redMask;
+	output |= ((_gradientStart & _greenMask) + ((Base::_gradientBytes[1] * pos) >> 12)) & _greenMask;
+	output |= ((_gradientStart & _blueMask) + ((Base::_gradientBytes[2] * pos) >> 12)) & _blueMask;
+	output |= _alphaMask;
 
 	return output;
 }


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