ULONG Width;
} SPAN, *PSPAN;
-#define R3_OPINDEX_SRCCOPY 0xcc
-#define R3_OPINDEX_NOOP 0xaa
-#define R4_NOOP ((R3_OPINDEX_NOOP << 8) | R3_OPINDEX_NOOP)
-#define R4_MASK ((R3_OPINDEX_NOOP << 8) | R3_OPINDEX_SRCCOPY)
+#define R3_OPINDEX_NOOP 0xAA
+
+#define R3_OPINDEX_BLACKNESS 0x00
+#define R3_OPINDEX_NOTSRCERASE 0x11
+#define R3_OPINDEX_NOTSRCCOPY 0x33
+#define R3_OPINDEX_SRCERASE 0x44
+#define R3_OPINDEX_DSTINVERT 0x55
+#define R3_OPINDEX_PATINVERT 0x5A
+#define R3_OPINDEX_SRCINVERT 0x66
+#define R3_OPINDEX_SRCAND 0x88
+#define R3_OPINDEX_MERGEPAINT 0xBB
+#define R3_OPINDEX_MERGECOPY 0xC0
+#define R3_OPINDEX_SRCCOPY 0xCC
+#define R3_OPINDEX_SRCPAINT 0xEE
+#define R3_OPINDEX_PATCOPY 0xF0
+#define R3_OPINDEX_PATPAINT 0xFB
+#define R3_OPINDEX_WHITENESS 0xFF
#define ROP2_TO_MIX(Rop2) (((Rop2) << 8) | (Rop2))
-#define ROP3_USES_DEST(Rop3) ((((Rop3) & 0xAA0000) >> 1) != ((Rop3) & 0x550000))
-#define ROP4_USES_DEST(Rop4) (((((Rop4) & 0xAA) >> 1) != ((Rop4) & 0x55)) || ((((Rop4) & 0xAA00) >> 1) != ((Rop4) & 0x5500)))
-#define ROP3_USES_SOURCE(Rop3) ((((Rop3) & 0xCC0000) >> 2) != ((Rop3) & 0x330000))
-#define ROP4_USES_SOURCE(Rop4) (((((Rop4) & 0xCC) >> 2) != ((Rop4) & 0x33)) || ((((Rop4) & 0xCC00) >> 2) != ((Rop4) & 0x3300)))
-#define ROP3_USES_PATTERN(Rop3) ((((Rop3) & 0xF00000) >> 4) != ((Rop3) & 0x0F0000))
+
+#define ROP4_FROM_INDEX(index) ((index) | ((index) << 8))
+
+#define ROP4_USES_SOURCE(Rop4) (((((Rop4) & 0xCC00) >> 2) != ((Rop4) & 0x3300)) || ((((Rop4) & 0xCC) >> 2) != ((Rop4) & 0x33)))
+#define ROP4_USES_MASK(Rop4) (((Rop4) & 0xFF00) != (((Rop4) & 0xff) << 8))
+#define ROP4_USES_DEST(Rop4) (((((Rop4) & 0xAA) >> 1) != ((Rop4) & 0x55)) || ((((Rop4) & 0xAA00) >> 1) != ((Rop4) & 0x5500)))
#define ROP4_USES_PATTERN(Rop4) (((((Rop4) & 0xF0) >> 4) != ((Rop4) & 0x0F)) || ((((Rop4) & 0xF000) >> 4) != ((Rop4) & 0x0F00)))
-#define ROP3_TO_ROP4(Rop3) ((((Rop3) >> 8) & 0xff00) | (((Rop3) >> 16) & 0x00ff))
+
+#define IS_VALID_ROP4(rop) (((rop) & 0xFFFF0000) == 0)
+
+#define ROP4_FGND(Rop4) ((Rop4) & 0x00FF)
+#define ROP4_BKGND(Rop4) (((Rop4) & 0xFF00) >> 8)
+
+#define ROP4_NOOP (R3_OPINDEX_NOOP | (R3_OPINDEX_NOOP << 8))
+#define ROP4_MASK (R3_OPINDEX_SRCCOPY | (R3_OPINDEX_NOOP << 8))
/* Definitions of IntEngXxx functions */