xref: /reactos/win32ss/gdi/diblib/RopFunctions.h (revision c2c66aff)
1 
2 typedef
3 ULONG
4 (__fastcall
5 *PFN_DOROP)(ULONG D, ULONG S, ULONG P);
6 
7 extern const PFN_DOROP gapfnRop[256];
8 
9 #define ROP_0(D,S,P) 0 /* BLACKNESS */
10 #define ROP_DPSoon(D,S,P) (~((D)|((P)|(S))))
11 #define ROP_DPSona(D,S,P) ((D)&(~((P)|(S))))
12 #define ROP_PSon(D,S,P) (~((P)|(S)))
13 #define ROP_SDPona(D,S,P) ((S)&(~((D)|(P))))
14 #define ROP_DPon(D,S,P) (~((D)|(P)))
15 #define ROP_PDSxnon(D,S,P) (~((P)|(~((D)^(S)))))
16 #define ROP_PDSaon(D,S,P) (~((P)|((D)&(S))))
17 #define ROP_SDPnaa(D,S,P) ((S)&((D)&(~(P))))
18 #define ROP_PDSxon(D,S,P) (~((P)|((D)^(S))))
19 #define ROP_DPna(D,S,P) ((D)&(~(P)))
20 #define ROP_PSDnaon(D,S,P) (~((P)|((S)&(~(D)))))
21 #define ROP_SPna(D,S,P) ((S)&(~(P)))
22 #define ROP_PDSnaon(D,S,P) (~((P)|((D)&(~(S)))))
23 #define ROP_PDSonon(D,S,P) (~((P)|(~((D)|(S)))))
24 #define ROP_Pn(D,S,P) (~(P))
25 #define ROP_PDSona(D,S,P) ((P)&(~((D)|(S))))
26 #define ROP_DSon(D,S,P) (~((D)|(S))) /* NOTSRCERASE */
27 #define ROP_SDPxnon(D,S,P) (~((S)|(~((D)^(P)))))
28 #define ROP_SDPaon(D,S,P) (~((S)|((D)&(P))))
29 #define ROP_DPSxnon(D,S,P) (~((D)|(~((P)^(S)))))
30 #define ROP_DPSaon(D,S,P) (~((D)|((P)&(S))))
31 #define ROP_PSDPSanaxx(D,S,P) ((P)^((S)^((D)&(~((P)&(S))))))
32 #define ROP_SSPxDSxaxn(D,S,P) (~((S)^(((S)^(P))&((D)^(S)))))
33 #define ROP_SPxPDxa(D,S,P) (((S)^(P))&((P)^(D)))
34 #define ROP_SDPSanaxn(D,S,P) (~((S)^((D)&(~((P)&(S))))))
35 #define ROP_PDSPaox(D,S,P) ((P)^((D)|((S)&(P))))
36 #define ROP_SDPSxaxn(D,S,P) (~((S)^((D)&((P)^(S)))))
37 #define ROP_PSDPaox(D,S,P) ((P)^((S)|((D)&(P))))
38 #define ROP_DSPDxaxn(D,S,P) (~((D)^((S)&((P)^(D)))))
39 #define ROP_PDSox(D,S,P) ((P)^((D)|(S)))
40 #define ROP_PDSoan(D,S,P) (~((P)&((D)|(S))))
41 #define ROP_DPSnaa(D,S,P) ((D)&((P)&(~(S))))
42 #define ROP_SDPxon(D,S,P) (~((S)|((D)^(P))))
43 #define ROP_DSna(D,S,P) ((D)&(~(S)))
44 #define ROP_SPDnaon(D,S,P) (~((S)|((P)&(~(D)))))
45 #define ROP_SPxDSxa(D,S,P) (((S)^(P))&((D)^(S)))
46 #define ROP_PDSPanaxn(D,S,P) (~((P)^((D)&(~((S)&(P))))))
47 #define ROP_SDPSaox(D,S,P) ((S)^((D)|((P)&(S))))
48 #define ROP_SDPSxnox(D,S,P) ((S)^((D)|(~((P)^(S)))))
49 #define ROP_DPSxa(D,S,P) ((D)&((P)^(S)))
50 #define ROP_PSDPSaoxxn(D,S,P) (~((P)^((S)^((D)|((P)&(S))))))
51 #define ROP_DPSana(D,S,P) ((D)&(~((P)&(S))))
52 #define ROP_SSPxPDxaxn(D,S,P) (~((S)^(((S)^(P))&((P)^(D)))))
53 #define ROP_SPDSoax(D,S,P) ((S)^((P)&((D)|(S))))
54 #define ROP_PSDnox(D,S,P) ((P)^((S)|(~(D))))
55 #define ROP_PSDPxox(D,S,P) ((P)^((S)|((D)^(P))))
56 #define ROP_PSDnoan(D,S,P) (~((P)&((S)|(~(D)))))
57 #define ROP_PSna(D,S,P) ((P)&(~(S)))
58 #define ROP_SDPnaon(D,S,P) (~((S)|((D)&(~(P)))))
59 #define ROP_SDPSoox(D,S,P) ((S)^((D)|((P)|(S))))
60 #define ROP_Sn(D,S,P) (~(S)) /* NOTSRCCOPY */
61 #define ROP_SPDSaox(D,S,P) ((S)^((P)|((D)&(S))))
62 #define ROP_SPDSxnox(D,S,P) ((S)^((P)|(~((D)^(S)))))
63 #define ROP_SDPox(D,S,P) ((S)^((D)|(P)))
64 #define ROP_SDPoan(D,S,P) (~((S)&((D)|(P))))
65 #define ROP_PSDPoax(D,S,P) ((P)^((S)&((D)|(P))))
66 #define ROP_SPDnox(D,S,P) ((S)^((P)|(~(D))))
67 #define ROP_SPDSxox(D,S,P) ((S)^((P)|((D)^(S))))
68 #define ROP_SPDnoan(D,S,P) (~((S)&((P)|(~(D)))))
69 #define ROP_PSx(D,S,P) ((P)^(S))
70 #define ROP_SPDSonox(D,S,P) ((S)^((P)|(~((D)|(S)))))
71 #define ROP_SPDSnaox(D,S,P) ((S)^((P)|((D)&(~(S)))))
72 #define ROP_PSan(D,S,P) (~((P)&(S)))
73 #define ROP_PSDnaa(D,S,P) ((P)&((S)&(~(D))))
74 #define ROP_DPSxon(D,S,P) (~((D)|((P)^(S))))
75 #define ROP_SDxPDxa(D,S,P) (((S)^(D))&((P)^(D)))
76 #define ROP_SPDSanaxn(D,S,P) (~((S)^((P)&(~((D)&(S))))))
77 #define ROP_SDna(D,S,P) ((S)&(~(D))) /* SRCERASE */
78 #define ROP_DPSnaon(D,S,P) (~((D)|((P)&(~(S)))))
79 #define ROP_DSPDaox(D,S,P) ((D)^((S)|((P)&(D))))
80 #define ROP_PSDPxaxn(D,S,P) (~((P)^((S)&((D)^(P)))))
81 #define ROP_SDPxa(D,S,P) ((S)&((D)^(P)))
82 #define ROP_PDSPDaoxxn(D,S,P) (~((P)^((D)^((S)|((P)&(D))))))
83 #define ROP_DPSDoax(D,S,P) ((D)^((P)&((S)|(D))))
84 #define ROP_PDSnox(D,S,P) ((P)^((D)|(~(S))))
85 #define ROP_SDPana(D,S,P) ((S)&(~((D)&(P))))
86 #define ROP_SSPxDSxoxn(D,S,P) (~((S)^(((S)^(P))|((D)^(S)))))
87 #define ROP_PDSPxox(D,S,P) ((P)^((D)|((S)^(P))))
88 #define ROP_PDSnoan(D,S,P) (~((P)&((D)|(~(S)))))
89 #define ROP_PDna(D,S,P) ((P)&(~(D)))
90 #define ROP_DSPnaon(D,S,P) (~((D)|((S)&(~(P)))))
91 #define ROP_DPSDaox(D,S,P) ((D)^((P)|((S)&(D))))
92 #define ROP_SPDSxaxn(D,S,P) (~((S)^((P)&((D)^(S)))))
93 #define ROP_DPSonon(D,S,P) (~((D)|(~((P)|(S)))))
94 #define ROP_Dn(D,S,P) (~(D)) /* DSTINVERT */
95 #define ROP_DPSox(D,S,P) ((D)^((P)|(S)))
96 #define ROP_DPSoan(D,S,P) (~((D)&((P)|(S))))
97 #define ROP_PDSPoax(D,S,P) ((P)^((D)&((S)|(P))))
98 #define ROP_DPSnox(D,S,P) ((D)^((P)|(~(S))))
99 #define ROP_DPx(D,S,P) ((D)^(P)) /* PATINVERT */
100 #define ROP_DPSDonox(D,S,P) ((D)^((P)|(~((S)|(D)))))
101 #define ROP_DPSDxox(D,S,P) ((D)^((P)|((S)^(D))))
102 #define ROP_DPSnoan(D,S,P) (~((D)&((P)|(~(S)))))
103 #define ROP_DPSDnaox(D,S,P) ((D)^((P)|((S)&(~(D)))))
104 #define ROP_DPan(D,S,P) (~((D)&(P)))
105 #define ROP_PDSxa(D,S,P) ((P)&((D)^(S)))
106 #define ROP_DSPDSaoxxn(D,S,P) (~((D)^((S)^((P)|((D)&(S))))))
107 #define ROP_DSPDoax(D,S,P) ((D)^((S)&((P)|(D))))
108 #define ROP_SDPnox(D,S,P) ((S)^((D)|(~(P))))
109 #define ROP_SDPSoax(D,S,P) ((S)^((D)&((P)|(S))))
110 #define ROP_DSPnox(D,S,P) ((D)^((S)|(~(P))))
111 #define ROP_DSx(D,S,P) ((D)^(S)) /* SRCINVERT */
112 #define ROP_SDPSonox(D,S,P) ((S)^((D)|(~((P)|(S)))))
113 #define ROP_DSPDSonoxxn(D,S,P) (~((D)^((S)^((P)|(~((D)|(S)))))))
114 #define ROP_PDSxxn(D,S,P) (~((P)^((D)^(S))))
115 #define ROP_DPSax(D,S,P) ((D)^((P)&(S)))
116 #define ROP_PSDPSoaxxn(D,S,P) (~((P)^((S)^((D)&((P)|(S))))))
117 #define ROP_SDPax(D,S,P) ((S)^((D)&(P)))
118 #define ROP_PDSPDoaxxn(D,S,P) (~((P)^((D)^((S)&((P)|(D))))))
119 #define ROP_SDPSnoax(D,S,P) ((S)^((D)&((P)|(~(S)))))
120 #define ROP_PDSxnan(D,S,P) (~((P)&(~((D)^(S)))))
121 #define ROP_PDSana(D,S,P) ((P)&(~((D)&(S))))
122 #define ROP_SSDxPDxaxn(D,S,P) (~((S)^(((S)^(D))&((P)^(D)))))
123 #define ROP_SDPSxox(D,S,P) ((S)^((D)|((P)^(S))))
124 #define ROP_SDPnoan(D,S,P) (~((S)&((D)|(~(P)))))
125 #define ROP_DSPDxox(D,S,P) ((D)^((S)|((P)^(D))))
126 #define ROP_DSPnoan(D,S,P) (~((D)&((S)|(~(P)))))
127 #define ROP_SDPSnaox(D,S,P) ((S)^((D)|((P)&(~(S)))))
128 #define ROP_DSan(D,S,P) (~((D)&(S)))
129 #define ROP_PDSax(D,S,P) ((P)^((D)&(S)))
130 #define ROP_DSPDSoaxxn(D,S,P) (~((D)^((S)^((P)&((D)|(S))))))
131 #define ROP_DPSDnoax(D,S,P) ((D)^((P)&((S)|(~(D)))))
132 #define ROP_SDPxnan(D,S,P) (~((S)&(~((D)^(P)))))
133 #define ROP_SPDSnoax(D,S,P) ((S)^((P)&((D)|(~(S)))))
134 #define ROP_DPSxnan(D,S,P) (~((D)&(~((P)^(S)))))
135 #define ROP_SPxDSxo(D,S,P) (((S)^(P))|((D)^(S)))
136 #define ROP_DPSaan(D,S,P) (~((D)&((P)&(S))))
137 #define ROP_DPSaa(D,S,P) ((D)&((P)&(S)))
138 #define ROP_SPxDSxon(D,S,P) (~(((S)^(P))|((D)^(S))))
139 #define ROP_DPSxna(D,S,P) ((D)&(~((P)^(S))))
140 #define ROP_SPDSnoaxn(D,S,P) (~((S)^((P)&((D)|(~(S))))))
141 #define ROP_SDPxna(D,S,P) ((S)&(~((D)^(P))))
142 #define ROP_PDSPnoaxn(D,S,P) (~((P)^((D)&((S)|(~(P))))))
143 #define ROP_DSPDSoaxx(D,S,P) ((D)^((S)^((P)&((D)|(S)))))
144 #define ROP_PDSaxn(D,S,P) (~((P)^((D)&(S))))
145 #define ROP_DSa(D,S,P) ((D)&(S)) /* SRCAND */
146 #define ROP_SDPSnaoxn(D,S,P) (~((S)^((D)|((P)&(~(S))))))
147 #define ROP_DSPnoa(D,S,P) ((D)&((S)|(~(P))))
148 #define ROP_DSPDxoxn(D,S,P) (~((D)^((S)|((P)^(D)))))
149 #define ROP_SDPnoa(D,S,P) ((S)&((D)|(~(P))))
150 #define ROP_SDPSxoxn(D,S,P) (~((S)^((D)|((P)^(S)))))
151 #define ROP_SSDxPDxax(D,S,P) ((S)^(((S)^(D))&((P)^(D))))
152 #define ROP_PDSanan(D,S,P) (~((P)&(~((D)&(S)))))
153 #define ROP_PDSxna(D,S,P) ((P)&(~((D)^(S))))
154 #define ROP_SDPSnoaxn(D,S,P) (~((S)^((D)&((P)|(~(S))))))
155 #define ROP_DPSDPoaxx(D,S,P) ((D)^((P)^((S)&((D)|(P)))))
156 #define ROP_SPDaxn(D,S,P) (~((S)^((P)&(D))))
157 #define ROP_PSDPSoaxx(D,S,P) ((P)^((S)^((D)&((P)|(S)))))
158 #define ROP_DPSaxn(D,S,P) (~((D)^((P)&(S))))
159 #define ROP_DPSxx(D,S,P) ((D)^((P)^(S)))
160 #define ROP_PSDPSonoxx(D,S,P) ((P)^((S)^((D)|(~((P)|(S))))))
161 #define ROP_SDPSonoxn(D,S,P) (~((S)^((D)|(~((P)|(S))))))
162 #define ROP_DSxn(D,S,P) (~((D)^(S)))
163 #define ROP_DPSnax(D,S,P) ((D)^((P)&(~(S))))
164 #define ROP_SDPSoaxn(D,S,P) (~((S)^((D)&((P)|(S)))))
165 #define ROP_SPDnax(D,S,P) ((S)^((P)&(~(D))))
166 #define ROP_DSPDoaxn(D,S,P) (~((D)^((S)&((P)|(D)))))
167 #define ROP_DSPDSaoxx(D,S,P) ((D)^((S)^((P)|((D)&(S)))))
168 #define ROP_PDSxan(D,S,P) (~((P)&((D)^(S))))
169 #define ROP_DPa(D,S,P) ((D)&(P))
170 #define ROP_PDSPnaoxn(D,S,P) (~((P)^((D)|((S)&(~(P))))))
171 #define ROP_DPSnoa(D,S,P) ((D)&((P)|(~(S))))
172 #define ROP_DPSDxoxn(D,S,P) (~((D)^((P)|((S)^(D)))))
173 #define ROP_PDSPonoxn(D,S,P) (~((P)^((D)|(~((S)|(P))))))
174 #define ROP_PDxn(D,S,P) (~((P)^(D)))
175 #define ROP_DSPnax(D,S,P) ((D)^((S)&(~(P))))
176 #define ROP_PDSPoaxn(D,S,P) (~((P)^((D)&((S)|(P)))))
177 #define ROP_DPSoa(D,S,P) ((D)&((P)|(S)))
178 #define ROP_DPSoxn(D,S,P) (~((D)^((P)|(S))))
179 #define ROP_D(D,S,P) (D)
180 #define ROP_DPSono(D,S,P) ((D)|(~((P)|(S))))
181 #define ROP_SPDSxax(D,S,P) ((S)^((P)&((D)^(S))))
182 #define ROP_DPSDaoxn(D,S,P) (~((D)^((P)|((S)&(D)))))
183 #define ROP_DSPnao(D,S,P) ((D)|((S)&(~(P))))
184 #define ROP_DPno(D,S,P) ((D)|(~(P)))
185 #define ROP_PDSnoa(D,S,P) ((P)&((D)|(~(S))))
186 #define ROP_PDSPxoxn(D,S,P) (~((P)^((D)|((S)^(P)))))
187 #define ROP_SSPxDSxox(D,S,P) ((S)^(((S)^(P))|((D)^(S))))
188 #define ROP_SDPanan(D,S,P) (~((S)&(~((D)&(P)))))
189 #define ROP_PSDnax(D,S,P) ((P)^((S)&(~(D))))
190 #define ROP_DPSDoaxn(D,S,P) (~((D)^((P)&((S)|(D)))))
191 #define ROP_DPSDPaoxx(D,S,P) ((D)^((P)^((S)|((D)&(P)))))
192 #define ROP_SDPxan(D,S,P) (~((S)&((D)^(P))))
193 #define ROP_PSDPxax(D,S,P) ((P)^((S)&((D)^(P))))
194 #define ROP_DSPDaoxn(D,S,P) (~((D)^((S)|((P)&(D)))))
195 #define ROP_DPSnao(D,S,P) ((D)|((P)&(~(S))))
196 #define ROP_DSno(D,S,P) ((D)|(~(S))) /* MERGEPAINT */
197 #define ROP_SPDSanax(D,S,P) ((S)^((P)&(~((D)&(S)))))
198 #define ROP_SDxPDxan(D,S,P) (~(((S)^(D))&((P)^(D))))
199 #define ROP_DPSxo(D,S,P) ((D)|((P)^(S)))
200 #define ROP_DPSano(D,S,P) ((D)|(~((P)&(S))))
201 #define ROP_PSa(D,S,P) ((P)&(S)) /* MERGECOPY */
202 #define ROP_SPDSnaoxn(D,S,P) (~((S)^((P)|((D)&(~(S))))))
203 #define ROP_SPDSonoxn(D,S,P) (~((S)^((P)|(~((D)|(S))))))
204 #define ROP_PSxn(D,S,P) (~((P)^(S)))
205 #define ROP_SPDnoa(D,S,P) ((S)&((P)|(~(D))))
206 #define ROP_SPDSxoxn(D,S,P) (~((S)^((P)|((D)^(S)))))
207 #define ROP_SDPnax(D,S,P) ((S)^((D)&(~(P))))
208 #define ROP_PSDPoaxn(D,S,P) (~((P)^((S)&((D)|(P)))))
209 #define ROP_SDPoa(D,S,P) ((S)&((D)|(P)))
210 #define ROP_SPDoxn(D,S,P) (~((S)^((P)|(D))))
211 #define ROP_DPSDxax(D,S,P) ((D)^((P)&((S)^(D))))
212 #define ROP_SPDSaoxn(D,S,P) (~((S)^((P)|((D)&(S)))))
213 #define ROP_S(D,S,P) (S) /* SRCCOPY */
214 #define ROP_SDPono(D,S,P) ((S)|(~((D)|(P))))
215 #define ROP_SDPnao(D,S,P) ((S)|((D)&(~(P))))
216 #define ROP_SPno(D,S,P) ((S)|(~(P)))
217 #define ROP_PSDnoa(D,S,P) ((P)&((S)|(~(D))))
218 #define ROP_PSDPxoxn(D,S,P) (~((P)^((S)|((D)^(P)))))
219 #define ROP_PDSnax(D,S,P) ((P)^((D)&(~(S))))
220 #define ROP_SPDSoaxn(D,S,P) (~((S)^((P)&((D)|(S)))))
221 #define ROP_SSPxPDxax(D,S,P) ((S)^(((S)^(P))&((P)^(D))))
222 #define ROP_DPSanan(D,S,P) (~((D)&(~((P)&(S)))))
223 #define ROP_PSDPSaoxx(D,S,P) ((P)^((S)^((D)|((P)&(S)))))
224 #define ROP_DPSxan(D,S,P) (~((D)&((P)^(S))))
225 #define ROP_PDSPxax(D,S,P) ((P)^((D)&((S)^(P))))
226 #define ROP_SDPSaoxn(D,S,P) (~((S)^((D)|((P)&(S)))))
227 #define ROP_DPSDanax(D,S,P) ((D)^((P)&(~((S)&(D)))))
228 #define ROP_SPxDSxan(D,S,P) (~(((S)^(P))&((D)^(S))))
229 #define ROP_SPDnao(D,S,P) ((S)|((P)&(~(D))))
230 #define ROP_SDno(D,S,P) ((S)|(~(D)))
231 #define ROP_SDPxo(D,S,P) ((S)|((D)^(P)))
232 #define ROP_SDPano(D,S,P) ((S)|(~((D)&(P))))
233 #define ROP_PDSoa(D,S,P) ((P)&((D)|(S)))
234 #define ROP_PDSoxn(D,S,P) (~((P)^((D)|(S))))
235 #define ROP_DSPDxax(D,S,P) ((D)^((S)&((P)^(D))))
236 #define ROP_PSDPaoxn(D,S,P) (~((P)^((S)|((D)&(P)))))
237 #define ROP_SDPSxax(D,S,P) ((S)^((D)&((P)^(S))))
238 #define ROP_PDSPaoxn(D,S,P) (~((P)^((D)|((S)&(P)))))
239 #define ROP_SDPSanax(D,S,P) ((S)^((D)&(~((P)&(S)))))
240 #define ROP_SPxPDxan(D,S,P) (~(((S)^(P))&((P)^(D))))
241 #define ROP_SSPxDSxax(D,S,P) ((S)^(((S)^(P))&((D)^(S))))
242 #define ROP_DSPDSanaxxn(D,S,P) (~((D)^((S)^((P)&(~((D)&(S)))))))
243 #define ROP_DPSao(D,S,P) ((D)|((P)&(S)))
244 #define ROP_DPSxno(D,S,P) ((D)|(~((P)^(S))))
245 #define ROP_SDPao(D,S,P) ((S)|((D)&(P)))
246 #define ROP_SDPxno(D,S,P) ((S)|(~((D)^(P))))
247 #define ROP_DSo(D,S,P) ((D)|(S)) /* SRCPAINT */
248 #define ROP_SDPnoo(D,S,P) ((S)|((D)|(~(P))))
249 #define ROP_P(D,S,P) (P) /* PATCOPY */
250 #define ROP_PDSono(D,S,P) ((P)|(~((D)|(S))))
251 #define ROP_PDSnao(D,S,P) ((P)|((D)&(~(S))))
252 #define ROP_PSno(D,S,P) ((P)|(~(S)))
253 #define ROP_PSDnao(D,S,P) ((P)|((S)&(~(D))))
254 #define ROP_PDno(D,S,P) ((P)|(~(D)))
255 #define ROP_PDSxo(D,S,P) ((P)|((D)^(S)))
256 #define ROP_PDSano(D,S,P) ((P)|(~((D)&(S))))
257 #define ROP_PDSao(D,S,P) ((P)|((D)&(S)))
258 #define ROP_PDSxno(D,S,P) ((P)|(~((D)^(S))))
259 #define ROP_DPo(D,S,P) ((D)|(P))
260 #define ROP_DPSnoo(D,S,P) ((D)|((P)|(~(S)))) /* PATPAINT */
261 #define ROP_PSo(D,S,P) ((P)|(S))
262 #define ROP_PSDnoo(D,S,P) ((P)|((S)|(~(D))))
263 #define ROP_DPSoo(D,S,P) ((D)|((P)|(S)))
264 #define ROP_1(D,S,P) 1 /* WHITENESS */
265 
266 #define ROP_BLACKNESS ROP_0
267 #define ROP_NOTSRCERASE ROP_DSon
268 #define ROP_NOTSRCCOPY ROP_Sn
269 #define ROP_SRCERASE ROP_SDna
270 #define ROP_DSTINVERT ROP_Dn
271 #define ROP_PATINVERT ROP_DPx
272 #define ROP_SRCINVERT ROP_DSx
273 #define ROP_SRCAND ROP_DSa
274 #define ROP_MERGEPAINT ROP_DSno
275 #define ROP_MERGECOPY ROP_PSa
276 #define ROP_SRCCOPY ROP_S
277 #define ROP_SRCPAINT ROP_DSo
278 #define ROP_PATCOPY ROP_P
279 #define ROP_PATPAINT ROP_DPSnoo
280 #define ROP_WHITENESS ROP_1
281 
282 
283