uLib
User mode C/C++ extended API library for Win32 programmers.
TernaryOp.h
Go to the documentation of this file.
1
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
// Project: uLib - User mode utility library.
3
// Module: Full set of GDI ternary raster operations, sorted by class.
4
// Author: Copyright (c) Love Nystrom
5
// License: NNOSL (BSD descendant, see NNOSL.txt in the base directory).
6
// (Sidenote: The value of this file alone is estimated at 1100 USD worktime!)
7
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9
#ifndef __TernaryOp_h_incl__
10
#define __TernaryOp_h_incl__
11
12
#include <
uLib/Common.h
>
13
14
#ifndef NO_TERNARY_DEFS
15
16
//---------------------------------------------------------------------------
40
//---------------------------------------------------------------------------
42
43
#ifndef R4_MASKBLT
44
#define R4_MASKBLT MAKEROP4( R3_S, R3_D )
47
#endif
48
51
52
#define R3_0 (0x00000042L)
/* 00 - BLACKNESS */
53
#define R3_1 (0x00FF0062L)
/* FF - WHITENESS */
54
#define R3_D (0x00AA0029L)
/* AA - (DSTCOPY, i.e NOP) */
55
#define R3_Dn (0x00550009L)
/* 55 - DSTINVERT */
56
60
61
#define R3_S (0x00CC0020L)
/* CC - SRCCOPY */
62
#define R3_Sn (0x00330008L)
/* 33 - NOTSRCCOPY */
63
67
68
#define R3_P (0x00F00021L)
/* F0 - PATCOPY */
69
#define R3_Pn (0x000F0001L)
/* 0F */
70
74
75
#define R3_DSon (0x001100A6L)
/* 11 - NOTSRCERASE */
76
#define R3_DSna (0x00220326L)
/* 22 - */
77
#define R3_DSx (0x00660046L)
/* 66 - SRCINVERT */
78
#define R3_DSan (0x007700E6L)
/* 77 - */
79
#define R3_DSa (0x008800C6L)
/* 88 - SRCAND */
80
#define R3_DSxn (0x00990066L)
/* 99 - */
81
#define R3_DSno (0x00BB0226L)
/* BB - MERGEPAINT */
82
#define R3_DSo (0x00EE0086L)
/* EE - SRCPAINT */
83
84
#define R3_SDna (0x00440328L)
/* 44 - SRCERASE */
85
#define R3_SDno (0x00DD0228L)
/* DD - */
86
90
91
#define R3_DPa (0x00A000C9L)
/* A0 - */
92
#define R3_DPo (0x00FA0089L)
/* FA - */
93
#define R3_DPx (0x005A0049L)
/* 5A - PATINVERT */
94
#define R3_DPan (0x005F00E9L)
/* 5F - */
95
#define R3_DPna (0x000A0329L)
/* 0A - */
96
#define R3_DPon (0x000500A9L)
/* 05 - */
97
#define R3_DPno (0x00AF0229L)
/* AF - */
98
102
103
#define R3_PDna (0x00500325L)
/* 50 - */
104
#define R3_PDno (0x00F50225L)
/* F5 - */
105
#define R3_PDxn (0x00A50065L)
/* A5 - */
106
110
111
#define R3_SPna (0x000C0324L)
/* 0C - */
112
#define R3_SPno (0x00CF0224L)
/* CF - */
113
117
118
#define R3_PSon (0x000300AAL)
/* 03 - */
119
#define R3_PSna (0x0030032AL)
/* 30 - */
120
#define R3_PSx (0x003C004AL)
/* 3C - */
121
#define R3_PSan (0x003F00EAL)
/* 3F - */
122
#define R3_PSa (0x00C000CAL)
/* C0 - MERGECOPY*/
123
#define R3_PSxn (0x00C3006AL)
/* C3 - */
124
#define R3_PSno (0x00F3022AL)
/* F3 - */
125
#define R3_PSo (0x00FC008AL)
/* FC - */
126
130
131
#define R3_DPSoon (0x00010289L)
/* 01 - D or( P or( not S )) */
132
#define R3_DPSona (0x00020C89L)
/* 02 - D or( not( P and S )) */
133
#define R3_DPSxnon (0x00140869L)
/* 14 - D xor( not( P or ( not S )))) */
134
#define R3_DPSaon (0x001502C9L)
/* 15 - */
135
#define R3_DPSnaa (0x00200F09L)
/* 20 - */
136
#define R3_DPSxa (0x00280369L)
/* 28 - */
137
#define R3_DPSana (0x002A0CC9L)
/* 2A - */
138
#define R3_DPSxon (0x00410249L)
/* 41 - */
139
#define R3_DPSnaon (0x00450B29L)
/* 45 - */
140
#define R3_DPSDoax (0x004A0789L)
/* 4A - */
141
#define R3_DPSDaox (0x005206C9L)
/* 52 - */
142
#define R3_DPSonon (0x005408A9L)
/* 54 - */
143
#define R3_DPSox (0x005601A9L)
/* 56 - */
144
#define R3_DPSoan (0x00570389L)
/* 57 - */
145
#define R3_DPSnox (0x00590609L)
/* 59 - */
146
#define R3_DPSDonox (0x005B18A9L)
/* 5B - */
147
#define R3_DPSDxox (0x005C0649L)
/* 5C - */
148
#define R3_DPSnoan (0x005D0E29L)
/* 5D - */
149
#define R3_DPSDnaox (0x005E1B29L)
/* 5E - */
150
#define R3_DPSax (0x006A01E9L)
/* 6A - */
151
#define R3_DPSDnoax (0x007A1E29L)
/* 7A - */
152
#define R3_DPSxnan (0x007D0C69L)
/* 7D - */
153
#define R3_DPSaan (0x007F03C9L)
/* 7F - */
154
#define R3_DPSaa (0x008003E9L)
/* 80 - */
155
#define R3_DPSxna (0x00820C49L)
/* 82 - */
156
#define R3_DPSDPoaxx (0x009217A9L)
/* 92 - */
157
#define R3_DPSaxn (0x009501C9L)
/* 95 - */
158
#define R3_DPSxx (0x00960169L)
/* 96 - */
159
#define R3_DPSnax (0x009A0709L)
/* 9A - */
160
#define R3_DPSnoa (0x00A20E09L)
/* A2 - */
161
#define R3_DPSDxoxn (0x00A30669L)
/* A3 - */
162
#define R3_DPSoa (0x00A803A9L)
/* A8 - */
163
#define R3_DPSoxn (0x00A90189L)
/* A9 - */
164
#define R3_DPSono (0x00AB0889L)
/* AB - */
165
#define R3_DPSDaoxn (0x00AD06E9L)
/* AD - */
166
#define R3_DPSDoaxn (0x00B507A9L)
/* B5 - */
167
#define R3_DPSDPaoxx (0x00B616E9L)
/* B6 - */
168
#define R3_DPSnao (0x00BA0B09L)
/* BA - */
169
#define R3_DPSxo (0x00BE0269L)
/* BE - */
170
#define R3_DPSano (0x00BF08C9L)
/* BF - */
171
#define R3_DPSDxax (0x00CA0749L)
/* CA - */
172
#define R3_DPSanan (0x00D50CE9L)
/* D5 - */
173
#define R3_DPSxan (0x00D70349L)
/* D7 - */
174
#define R3_DPSDanax (0x00DA1CE9L)
/* DA - */
175
#define R3_DPSao (0x00EA02E9L)
/* EA - */
176
#define R3_DPSxno (0x00EB0849L)
/* EB - */
177
#define R3_DPSoo (0x00FE02A9L)
/* FE - */
178
#define R3_DPSnoo (0x00FB0A09L)
/* FB - PATPAINT */
179
183
184
#define R3_DSPDxaxn (0x001D0766L)
/* 1D - */
185
#define R3_DSPDaox (0x004606C6L)
/* 46 - */
186
#define R3_DSPnaon (0x00510B26L)
/* 51 - */
187
#define R3_DSPDSaoxxn (0x006116C6L)
/* 61 - */
188
#define R3_DSPDoax (0x00620786L)
/* 62 - */
189
#define R3_DSPnox (0x00650606L)
/* 65 - */
190
#define R3_DSPDSonoxxn (0x006858A6L)
/* 68 - */
191
#define R3_DSPDxox (0x00740646L)
/* 74 - */
192
#define R3_DSPnoan (0x00750E26L)
/* 75 - */
193
#define R3_DSPDSoaxxn (0x00791786L)
/* 79 - */
194
#define R3_DSPDSoaxx (0x008617A6L)
/* 86 - */
195
#define R3_DSPnoa (0x008A0E06L)
/* 8A - */
196
#define R3_DSPDxoxn (0x008B0666L)
/* 8B - */
197
#define R3_DSPDoaxn (0x009D07A6L)
/* 9D - */
198
#define R3_DSPDSaoxx (0x009E16E6L)
/* 9E - */
199
#define R3_DSPnax (0x00A60706L)
/* A6 - */
200
#define R3_DSPDSanaxxn (0x00E95CE6L)
/* E9 - */
201
#define R3_DSPnao (0x00AE0B06L)
/* AE - */
202
#define R3_DSPDaoxn (0x00B906E6L)
/* B9 - */
203
#define R3_DSPDxax (0x00E20746L)
/* E2 - */
204
208
209
#define R3_SDPona (0x00040C88L)
/* 04 - */
210
#define R3_SDPnaa (0x00080F08L)
/* 08 - */
211
#define R3_SDPxnon (0x00120868L)
/* 12 - */
212
#define R3_SDPaon (0x001302C8L)
/* 13 - */
213
#define R3_SDPSanaxn (0x00191CC8L)
/* 19 - */
214
#define R3_SDPSxaxn (0x001B0768L)
/* 1B - */
215
#define R3_SDPxon (0x00210248L)
/* 21 - */
216
#define R3_SDPSaox (0x002606C8L)
/* 26 - */
217
#define R3_SDPSxnox (0x00271868L)
/* 27 - */
218
#define R3_SDPnaon (0x00310B28L)
/* 31 - */
219
#define R3_SDPSoox (0x00320688L)
/* 32 - */
220
#define R3_SDPox (0x003601A8L)
/* 36 - */
221
#define R3_SDPoan (0x00370388L)
/* 37 - */
222
#define R3_SDPxa (0x00480368L)
/* 48 - */
223
#define R3_SDPana (0x004C0CC8L)
/* 4C - */
224
#define R3_SDPnox (0x00630608L)
/* 63 - */
225
#define R3_SDPSoax (0x00640788L)
/* 64 - */
226
#define R3_SDPSonox (0x006718A8L)
/* 67 - */
227
#define R3_SDPax (0x006C01E8L)
/* 6C - */
228
#define R3_SDPSnoax (0x006E1E28L)
/* 6E - */
229
233
234
#define R3_SSPxDSxaxn (0x00171D54L)
/* 17 - */
235
#define R3_SPxPDxa (0x00180D59L)
/* 18 - */
236
#define R3_SPDnaon (0x00230B24L)
/* 23 - */
237
#define R3_SPxDSxa (0x00240D55L)
/* 24 - */
238
#define R3_SSPxPDxaxn (0x002B1D58L)
/* 2B - */
239
#define R3_SPDSoax (0x002C0784L)
/* 2C - */
240
#define R3_SPDSaox (0x003406C4L)
/* 34 - */
241
#define R3_SPDSxnox (0x00351864L)
/* 35 - */
242
#define R3_SPDnox (0x00390604L)
/* 39 - */
243
#define R3_SPDSxox (0x003A0644L)
/* 3A - */
244
#define R3_SPDnoan (0x003B0E24L)
/* 3B - */
245
#define R3_SPDSonox (0x003D18A4L)
/* 3D - */
246
#define R3_SPDSnaox (0x003E1B24L)
/* 3E - */
247
#define R3_SDxPDxa (0x00420D5DL)
/* 42 - */
248
#define R3_SPDSanaxn (0x00431CC4L)
/* 43 - */
249
#define R3_SSPxDSxoxn (0x004D1954L)
/* 4D - */
250
#define R3_SPDSxaxn (0x00530764L)
/* 53 - */
251
#define R3_SSDxPDxaxn (0x00711D5CL)
/* 71 - */
252
#define R3_SDPSxox (0x00720648L)
/* 72 - */
253
#define R3_SDPnoan (0x00730E28L)
/* 73 - */
254
#define R3_SDPSnaox (0x00761B28L)
/* 76 - */
255
#define R3_SDPxnan (0x007B0C68L)
/* 7B - */
256
#define R3_SPDSnoax (0x007C1E24L)
/* 7C - */
257
#define R3_SPxDSxo (0x007E0955L)
/* 7E - */
258
#define R3_SPxDSxon (0x00810975L)
/* 81 - */
259
#define R3_SPDSnoaxn (0x00831E04L)
/* 83 - */
260
#define R3_SDPxna (0x00840C48L)
/* 84 - */
261
#define R3_SDPSnaoxn (0x00891B08L)
/* 89 - */
262
#define R3_SDPnoa (0x008C0E08L)
/* 8C - */
263
#define R3_SDPSxoxn (0x008D0668L)
/* 8D - */
264
#define R3_SSDxPDxax (0x008E1D7CL)
/* 8E - */
265
#define R3_SDPSnoaxn (0x00911E08L)
/* 91 - */
266
#define R3_SPDaxn (0x009301C4L)
/* 93 - */
267
#define R3_SDPSonoxn (0x00981888L)
/* 98 - */
268
#define R3_SDPSoaxn (0x009B07A8L)
/* 9B - */
269
#define R3_SPDnax (0x009C0704L)
/* 9C - */
270
#define R3_SPDSxax (0x00AC0744L)
/* AC - */
271
#define R3_SSPxDSxox (0x00B21974L)
/* B2 - */
272
#define R3_SDPanan (0x00B30CE8L)
/* B3 - */
273
#define R3_SDPxan (0x00B70348L)
/* B7 - */
274
#define R3_SPDSanax (0x00BC1CE4L)
/* BC - */
275
#define R3_SDxPDxan (0x00BD0D7DL)
/* BD - */
276
#define R3_SPDSnaoxn (0x00C11B04L)
/* C1 - */
277
#define R3_SPDSonoxn (0x00C21884L)
/* C2 - */
278
#define R3_SPDnoa (0x00C40E04L)
/* C4 - */
279
#define R3_SPDSxoxn (0x00C50664L)
/* C5 - */
280
#define R3_SDPnax (0x00C60708L)
/* C6 - */
281
#define R3_SDPoa (0x00C803A8L)
/* C8 - */
282
#define R3_SPDoxn (0x00C90184L)
/* C9 - */
283
#define R3_SPDSaoxn (0x00CB06E4L)
/* CB - */
284
#define R3_SDPono (0x00CD0888L)
/* CD - */
285
#define R3_SDPnao (0x00CE0B08L)
/* CE - */
286
#define R3_SPDSoaxn (0x00D307A4L)
/* D3 - */
287
#define R3_SSPxPDxax (0x00D41D78L)
/* D4 - */
288
#define R3_SDPSaoxn (0x00D906E8L)
/* D9 - */
289
#define R3_SPxDSxan (0x00DB0D75L)
/* DB - */
290
#define R3_SPDnao (0x00DC0B04L)
/* DC - */
291
#define R3_SDPxo (0x00DE0268L)
/* DE - */
292
#define R3_SDPano (0x00DF08C8L)
/* DF - */
293
#define R3_SDPSxax (0x00E40748L)
/* E4 - */
294
#define R3_SDPSanax (0x00E61CE8L)
/* E6 - */
295
#define R3_SPxPDxan (0x00E70D79L)
/* E7 - */
296
#define R3_SSPxDSxax (0x00E81D74L)
/* E8 - */
297
#define R3_SDPao (0x00EC02E8L)
/* EC - */
298
#define R3_SDPxno (0x00ED0848L)
/* ED - */
299
#define R3_SDPnoo (0x00EF0A08L)
/* EF - */
300
304
305
#define R3_PDSxnon (0x00060865L)
/* 06 - */
306
#define R3_PDSaon (0x000702C5L)
/* 07 - */
307
#define R3_PDSxon (0x00090245L)
/* 09 - */
308
#define R3_PSDnaon (0x000B0B2AL)
/* 0B - */
309
#define R3_PDSnaon (0x000D0B25L)
/* 0D - */
310
#define R3_PDSonon (0x000E08A5L)
/* 0E - */
311
#define R3_PDSona (0x00100C85L)
/* 10 - */
312
#define R3_PSDPSanaxx (0x00165CCAL)
/* 16 - */
313
#define R3_PDSPaox (0x001A06C5L)
/* 1A - */
314
#define R3_PSDPaox (0x001C06CAL)
/* 1C - */
315
#define R3_PDSox (0x001E01A5L)
/* 1E - */
316
#define R3_PDSoan (0x001F0385L)
/* 1F - */
317
#define R3_PDSPanaxn (0x00251CC5L)
/* 25 - */
318
#define R3_PSDPSaoxxn (0x002916CAL)
/* 29 - */
319
#define R3_PSDnox (0x002D060AL)
/* 2D - */
320
#define R3_PSDPxox (0x002E064AL)
/* 2E - */
321
#define R3_PSDnoan (0x002F0E2AL)
/* 2F - */
322
#define R3_PSDPoax (0x0038078AL)
/* 38 - */
323
#define R3_PSDnaa (0x00400F0AL)
/* 40 - */
324
#define R3_PSDPxaxn (0x0047076AL)
/* 47 - */
325
#define R3_PDSPDaoxxn (0x004916C5L)
/* 49 - */
326
#define R3_PDSnox (0x004B0605L)
/* 4B - */
327
#define R3_PDSPxox (0x004E0645L)
/* 4E - */
328
#define R3_PDSnoan (0x004F0E25L)
/* 4F - */
329
#define R3_PDSPoax (0x00580785L)
/* 58 - */
330
#define R3_PDSxa (0x00600365L)
/* 60 - */
331
#define R3_PDSxxn (0x00690145L)
/* 69 - */
332
#define R3_PSDPSoaxxn (0x006B178AL)
/* 6B - */
333
#define R3_PDSPDoaxxn (0x006D1785L)
/* 6D - */
334
#define R3_PDSxnan (0x006F0C65L)
/* 6F - */
335
#define R3_PDSana (0x00700CC5L)
/* 70 - */
336
#define R3_PDSax (0x007801E5L)
/* 78 - */
337
#define R3_PDSPnoaxn (0x00851E05L)
/* 85 - */
338
#define R3_PDSaxn (0x008701C5L)
/* 87 - */
339
#define R3_PDSanan (0x008F0CE5L)
/* 8F - */
340
#define R3_PDSxna (0x00900C45L)
/* 90 - */
341
#define R3_PSDPSoaxx (0x009417AAL)
/* 94 - */
342
#define R3_PSDPSonoxx (0x0097588AL)
/* 97 - */
343
#define R3_PDSxan (0x009F0345L)
/* 9F - */
344
#define R3_PDSPnaoxn (0x00A11B05L)
/* A1 - */
345
#define R3_PDSPonoxn (0x00A41885L)
/* A4 - */
346
#define R3_PDSPoaxn (0x00A707A5L)
/* A7 - */
347
#define R3_PDSnoa (0x00B00E05L)
/* B0 - */
348
#define R3_PDSPxoxn (0x00B10665L)
/* B1 - */
349
#define R3_PSDnax (0x00B4070AL)
/* B4 - */
350
#define R3_PSDPxax (0x00B8074AL)
/* B8 - E.g: BitBlt( hdc,x,y,cx,cy, hdcMono,0,0, R3_PSDPxax ); Put curr brush where mask has 0's. */
351
#define R3_PSDPoaxn (0x00C707AAL)
/* C7 - */
352
#define R3_PSDnoa (0x00D00E0AL)
/* D0 - */
353
#define R3_PSDPxoxn (0x00D1066AL)
/* D1 - */
354
#define R3_PDSnax (0x00D20705L)
/* D2 - */
355
#define R3_PSDPSaoxx (0x00D616EAL)
/* D6 - */
356
#define R3_PDSPxax (0x00D80745L)
/* D8 - */
357
#define R3_PDSoa (0x00E003A5L)
/* E0 - */
358
#define R3_PDSoxn (0x00E10185L)
/* E1 - */
359
#define R3_PSDPaoxn (0x00E306EAL)
/* E3 - */
360
#define R3_PDSPaoxn (0x00E506E5L)
/* E5 - */
361
#define R3_PDSono (0x00F10885L)
/* F1 - */
362
#define R3_PDSnao (0x00F20B05L)
/* F2 - */
363
#define R3_PSDnao (0x00F40B0AL)
/* F4 - */
364
#define R3_PDSxo (0x00F60265L)
/* F6 - */
365
#define R3_PDSano (0x00F708C5L)
/* F7 - P and( not( D or S )) */
366
#define R3_PDSao (0x00F802E5L)
/* F8 - P and( D or S ) */
367
#define R3_PDSxno (0x00F90845L)
/* F9 - P xor( not( D or S )) */
368
#define R3_PSDnoo (0x00FD0A0AL)
/* FD - not( P or ( S or D )) */
369
372
#endif //NO_TERNARY
373
#endif//ndef __TernaryOp_h_incl__
374
// EOF
Common.h
Common include; Added types, small "ubiquitous" utilities, et c.
TernaryOp.h
Generated by
1.8.15