]> git.sesse.net Git - rdpsrv/blob - Xserver/programs/Xserver/cfb24/cfbrrop24.h
Support RDP5 logon packets.
[rdpsrv] / Xserver / programs / Xserver / cfb24 / cfbrrop24.h
1 /* $XFree86: xc/programs/Xserver/cfb24/cfbrrop24.h,v 3.0 1996/06/29 09:06:09 dawes Exp $ */
2
3 #define RROP_DECLARE        register unsigned long rrop_and, rrop_xor; \
4     unsigned long piQxelAnd[3], piQxelXor[3],  spiQxelAnd[8], spiQxelXor[8];
5
6 #define RROP_COPY_SETUP(ptn)  \
7     spiQxelXor[0] = ptn & 0xFFFFFF; \
8     spiQxelXor[2] = ptn << 24; \
9     spiQxelXor[3] = (ptn & 0xFFFF00)>> 8; \
10     spiQxelXor[4] = ptn << 16; \
11     spiQxelXor[5] = (ptn & 0xFF0000)>> 16; \
12     spiQxelXor[6] = ptn << 8; \
13     spiQxelXor[1] = spiQxelXor[7] = 0;
14
15 #define RROP_SOLID24_COPY(dst,index)        {\
16             register int idx = ((index) & 3)<< 1; \
17             *(dst) = (*(dst) & cfbrmask[idx])|spiQxelXor[idx]; \
18             idx++; \
19             *((dst)+1) = (*((dst)+1) & cfbrmask[idx])|spiQxelXor[idx]; \
20         }
21
22 #define RROP_SET_SETUP(xor, and) \
23     spiQxelXor[0] = xor & 0xFFFFFF; \
24     spiQxelXor[1] = xor << 24; \
25     spiQxelXor[2] = xor << 16; \
26     spiQxelXor[3] = xor << 8; \
27     spiQxelXor[4] = (xor >> 8) & 0xFFFF; \
28     spiQxelXor[5] = (xor >> 16) & 0xFF; \
29     spiQxelAnd[0] = (and & 0xFFFFFF) | 0xFF000000; \
30     spiQxelAnd[1] = (and << 24) | 0xFFFFFF; \
31     spiQxelAnd[2] = (and << 16) | 0xFFFF; \
32     spiQxelAnd[3] = (and << 8) | 0xFF; \
33     spiQxelAnd[4] = ((and >> 8) & 0xFFFF) | 0xFFFF0000; \
34     spiQxelAnd[5] = ((and >> 16) & 0xFF) | 0xFFFFFF00; \
35     piQxelAnd[0] = (and & 0xFFFFFF)|(and << 24); \
36     piQxelAnd[1] = (and << 16)|((and >> 8) & 0xFFFF); \
37     piQxelAnd[2] = (and << 8)|((and >> 16) & 0xFF); \
38     piQxelXor[0] = (xor & 0xFFFFFF)|(xor << 24); \
39     piQxelXor[1] = (xor << 16)|((xor >> 8) & 0xFFFF); \
40     piQxelXor[2] = (xor << 8)|((xor >> 16) & 0xFF);
41
42
43 #define RROP_SOLID24_SET(dst,index)          {\
44             switch((index) & 3){ \
45             case 0: \
46               *(dst) = ((*(dst) & (piQxelAnd[0] |0xFF000000))^(piQxelXor[0] & 0xFFFFFF)); \
47               break; \
48             case 3: \
49               *(dst) = ((*(dst) & (piQxelAnd[2]|0xFF))^(piQxelXor[2] & 0xFFFFFF00)); \
50               break; \
51             case 1: \
52               *(dst) = ((*(dst) & (piQxelAnd[0]|0xFFFFFF))^(piQxelXor[0] & 0xFF000000)); \
53               *((dst)+1) = ((*((dst)+1) & (piQxelAnd[1]|0xFFFF0000))^(piQxelXor[1] & 0xFFFF)); \
54               break; \
55             case 2: \
56               *(dst) = ((*(dst) & (piQxelAnd[1]|0xFFFF))^(piQxelXor[1] & 0xFFFF0000)); \
57               *((dst)+1) = ((*((dst)+1) & (piQxelAnd[2]|0xFFFFFF00))^(piQxelXor[2] & 0xFF)); \
58               break; \
59             } \
60             }