[CMAKE]
[reactos.git] / subsystems / win32 / win32k / include / inteng.h
index 1d8610d..4b360b0 100644 (file)
@@ -17,19 +17,40 @@ typedef struct tagSPAN
   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 */