[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