Huw Davies : gdi32: Simplify the calculation of the rop masks.
Alexandre Julliard
julliard at winehq.org
Tue Aug 2 14:18:28 CDT 2011
Module: wine
Branch: master
Commit: 4b50743f87e9c66faee0aaf059de392a28728a07
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4b50743f87e9c66faee0aaf059de392a28728a07
Author: Huw Davies <huw at codeweavers.com>
Date: Tue Aug 2 14:11:06 2011 +0100
gdi32: Simplify the calculation of the rop masks.
---
dlls/gdi32/dibdrv/objects.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c
index 0dcf0da..70e2904 100644
--- a/dlls/gdi32/dibdrv/objects.c
+++ b/dlls/gdi32/dibdrv/objects.c
@@ -57,11 +57,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(dib);
*
*/
-/* A = (P & A1) | (~P & A2) */
-#define ZERO {0, 0}
-#define ONE {0xffffffff, 0xffffffff}
-#define P {0xffffffff, 0}
-#define NOT_P {0, 0xffffffff}
+/* A = (P & A1) ^ A2 */
+#define ZERO { 0u, 0u}
+#define ONE { 0u, ~0u}
+#define P {~0u, 0u}
+#define NOT_P {~0u, ~0u}
static const DWORD rop2_and_array[16][2] =
{
@@ -71,7 +71,7 @@ static const DWORD rop2_and_array[16][2] =
ZERO, NOT_P, NOT_P, ZERO
};
-/* X = (P & X1) | (~P & X2) */
+/* X = (P & X1) ^ X2 */
static const DWORD rop2_xor_array[16][2] =
{
ZERO, NOT_P, ZERO, NOT_P,
@@ -88,8 +88,8 @@ static const DWORD rop2_xor_array[16][2] =
void calc_and_xor_masks(INT rop, DWORD color, DWORD *and, DWORD *xor)
{
/* NB The ROP2 codes start at one and the arrays are zero-based */
- *and = (color & rop2_and_array[rop-1][0]) | ((~color) & rop2_and_array[rop-1][1]);
- *xor = (color & rop2_xor_array[rop-1][0]) | ((~color) & rop2_xor_array[rop-1][1]);
+ *and = (color & rop2_and_array[rop-1][0]) ^ rop2_and_array[rop-1][1];
+ *xor = (color & rop2_xor_array[rop-1][0]) ^ rop2_xor_array[rop-1][1];
}
static inline RGBQUAD rgbquad_from_colorref(COLORREF c)
More information about the wine-cvs
mailing list