ReactOS  0.4.14-dev-384-g5b37caa
DibLib.c
Go to the documentation of this file.
1 
2 #include "DibLib.h"
3 
4 /*
5  * M D S P Generic function
6  * -----------------------
7  * 0 0 0 0 -> BLACKNESS, WHITENESS
8  * 0 0 0 1 -> PATCOPY, NOTPATCOPY
9  * 0 0 1 0 -> SRCCOPY, NOTSRCCOPY
10  * 0 0 1 1 SrcPatBlt
11  * 0 1 0 0 -> NOOP, DESTINVERT
12  * 0 1 0 1 PatPaint
13  * 0 1 1 0 SrcPaint
14  * 0 1 1 1 BitBlt
15  * 1 0 0 0 MaskCopy, -> SRCCOPY / SRCINVERT using Mask als source
16  * 1 0 0 1 MaskPatBlt
17  * 1 0 1 0 MaskSrcBlt
18  * 1 0 1 1 MaskSrcPatBlt
19  * 1 1 0 0 MaskPaint
20  * 1 1 0 1 MaskPatPaint
21  * 1 1 1 0 MaskSrcPaint
22  * 1 1 1 1 MaskBlt
23  */
24 
25 
26 const BYTE ajShift4[2] = {4, 0};
27 
28 enum
29 {
51 };
52 
53 const PFN_DIBFUNCTION
55 {
76  Dib_BitBlt,
77 };
78 
79 const UCHAR
81 {
82  INDEX_BitBlt_BLACKNESS, // BLACKNESS
83  INDEX_BitBlt, // DPSoon,
84  INDEX_BitBlt, // DPSona,
85  INDEX_SrcPatBlt, // PSon,
86  INDEX_BitBlt, // SDPona,
87  INDEX_PatPaint, // DPon,
88  INDEX_BitBlt, // PDSxnon,
89  INDEX_BitBlt, // PDSaon,
90  INDEX_BitBlt, // SDPnaa,
91  INDEX_BitBlt, // PDSxon,
92  INDEX_PatPaint, // DPna,
93  INDEX_BitBlt, // PSDnaon,
94  INDEX_SrcPatBlt, // SPna,
95  INDEX_BitBlt, // PDSnaon,
96  INDEX_BitBlt, // PDSonon,
98  INDEX_BitBlt, // PDSona,
99  INDEX_BitBlt_NOTSRCERASE, // DSon / NOTSRCERASE
100  INDEX_BitBlt, // SDPxnon,
101  INDEX_BitBlt, // SDPaon,
102  INDEX_BitBlt, // DPSxnon,
103  INDEX_BitBlt, // DPSaon,
104  INDEX_BitBlt, // PSDPSanaxx,
105  INDEX_BitBlt, // SSPxDSxaxn,
106  INDEX_BitBlt, // SPxPDxa,
107  INDEX_BitBlt, // SDPSanaxn,
108  INDEX_BitBlt, // PDSPaox,
109  INDEX_BitBlt, // SDPSxaxn,
110  INDEX_BitBlt, // PSDPaox,
111  INDEX_BitBlt, // DSPDxaxn,
112  INDEX_BitBlt, // PDSox,
113  INDEX_BitBlt, // PDSoan,
114  INDEX_BitBlt, // DPSnaa,
115  INDEX_BitBlt, // SDPxon,
116  INDEX_SrcPaint, // DSna,
117  INDEX_BitBlt, // SPDnaon,
118  INDEX_BitBlt, // SPxDSxa,
119  INDEX_BitBlt, // PDSPanaxn,
120  INDEX_BitBlt, // SDPSaox,
121  INDEX_BitBlt, // SDPSxnox,
122  INDEX_BitBlt, // DPSxa,
123  INDEX_BitBlt, // PSDPSaoxxn,
124  INDEX_BitBlt, // DPSana,
125  INDEX_BitBlt, // SSPxPDxaxn,
126  INDEX_BitBlt, // SPDSoax,
127  INDEX_BitBlt, // PSDnox,
128  INDEX_BitBlt, // PSDPxox,
129  INDEX_BitBlt, // PSDnoan,
130  INDEX_SrcPatBlt, // PSna,
131  INDEX_BitBlt, // SDPnaon,
132  INDEX_BitBlt, // SDPSoox,
133  INDEX_BitBlt_NOTSRCCOPY, // Sn / NOTSRCCOPY
134  INDEX_BitBlt, // SPDSaox,
135  INDEX_BitBlt, // SPDSxnox,
136  INDEX_BitBlt, // SDPox,
137  INDEX_BitBlt, // SDPoan,
138  INDEX_BitBlt, // PSDPoax,
139  INDEX_BitBlt, // SPDnox,
140  INDEX_BitBlt, // SPDSxox,
141  INDEX_BitBlt, // SPDnoan,
142  INDEX_SrcPatBlt, // PSx,
143  INDEX_BitBlt, // SPDSonox,
144  INDEX_BitBlt, // SPDSnaox,
145  INDEX_SrcPatBlt, // PSan,
146  INDEX_BitBlt, // PSDnaa,
147  INDEX_BitBlt, // DPSxon,
148  INDEX_BitBlt, // SDxPDxa,
149  INDEX_BitBlt, // SPDSanaxn,
150  INDEX_BitBlt_SRCERASE, // SDna / SRCERASE
151  INDEX_BitBlt, // DPSnaon,
152  INDEX_BitBlt, // DSPDaox,
153  INDEX_BitBlt, // PSDPxaxn,
154  INDEX_BitBlt, // SDPxa,
155  INDEX_BitBlt, // PDSPDaoxxn,
156  INDEX_BitBlt, // DPSDoax,
157  INDEX_BitBlt, // PDSnox,
158  INDEX_BitBlt, // SDPana,
159  INDEX_BitBlt, // SSPxDSxoxn,
160  INDEX_BitBlt, // PDSPxox,
161  INDEX_BitBlt, // PDSnoan,
162  INDEX_PatPaint, // PDna,
163  INDEX_BitBlt, // DSPnaon,
164  INDEX_BitBlt, // DPSDaox,
165  INDEX_BitBlt, // SPDSxaxn,
166  INDEX_BitBlt, // DPSonon,
167  INDEX_BitBlt_DSTINVERT, // Dn / DSTINVERT
168  INDEX_BitBlt, // DPSox,
169  INDEX_BitBlt, // DPSoan,
170  INDEX_BitBlt, // PDSPoax,
171  INDEX_BitBlt, // DPSnox,
172  INDEX_BitBlt_PATINVERT, // DPx / PATINVERT
173  INDEX_BitBlt, // DPSDonox,
174  INDEX_BitBlt, // DPSDxox,
175  INDEX_BitBlt, // DPSnoan,
176  INDEX_BitBlt, // DPSDnaox,
177  INDEX_PatPaint, // DPan,
178  INDEX_BitBlt, // PDSxa,
179  INDEX_BitBlt, // DSPDSaoxxn,
180  INDEX_BitBlt, // DSPDoax,
181  INDEX_BitBlt, // SDPnox,
182  INDEX_BitBlt, // SDPSoax,
183  INDEX_BitBlt, // DSPnox,
184  INDEX_BitBlt_SRCINVERT, // DSx / SRCINVERT
185  INDEX_BitBlt, // SDPSonox,
186  INDEX_BitBlt, // DSPDSonoxxn,
187  INDEX_BitBlt, // PDSxxn,
188  INDEX_BitBlt, // DPSax,
189  INDEX_BitBlt, // PSDPSoaxxn,
190  INDEX_BitBlt, // SDPax,
191  INDEX_BitBlt, // PDSPDoaxxn,
192  INDEX_BitBlt, // SDPSnoax,
193  INDEX_BitBlt, // PDSxnan,
194  INDEX_BitBlt, // PDSana,
195  INDEX_BitBlt, // SSDxPDxaxn,
196  INDEX_BitBlt, // SDPSxox,
197  INDEX_BitBlt, // SDPnoan,
198  INDEX_BitBlt, // DSPDxox,
199  INDEX_BitBlt, // DSPnoan,
200  INDEX_BitBlt, // SDPSnaox,
201  INDEX_SrcPaint, // DSan,
202  INDEX_BitBlt, // PDSax,
203  INDEX_BitBlt, // DSPDSoaxxn,
204  INDEX_BitBlt, // DPSDnoax,
205  INDEX_BitBlt, // SDPxnan,
206  INDEX_BitBlt, // SPDSnoax,
207  INDEX_BitBlt, // DPSxnan,
208  INDEX_BitBlt, // SPxDSxo,
209  INDEX_BitBlt, // DPSaan,
210  INDEX_BitBlt, // DPSaa,
211  INDEX_BitBlt, // SPxDSxon,
212  INDEX_BitBlt, // DPSxna,
213  INDEX_BitBlt, // SPDSnoaxn,
214  INDEX_BitBlt, // SDPxna,
215  INDEX_BitBlt, // PDSPnoaxn,
216  INDEX_BitBlt, // DSPDSoaxx,
217  INDEX_BitBlt, // PDSaxn,
218  INDEX_BitBlt_SRCAND, // DSa / SRCAND
219  INDEX_BitBlt, // SDPSnaoxn,
220  INDEX_BitBlt, // DSPnoa,
221  INDEX_BitBlt, // DSPDxoxn,
222  INDEX_BitBlt, // SDPnoa,
223  INDEX_BitBlt, // SDPSxoxn,
224  INDEX_BitBlt, // SSDxPDxax,
225  INDEX_BitBlt, // PDSanan,
226  INDEX_BitBlt, // PDSxna,
227  INDEX_BitBlt, // SDPSnoaxn,
228  INDEX_BitBlt, // DPSDPoaxx,
229  INDEX_BitBlt, // SPDaxn,
230  INDEX_BitBlt, // PSDPSoaxx,
231  INDEX_BitBlt, // DPSaxn,
232  INDEX_BitBlt, // DPSxx,
233  INDEX_BitBlt, // PSDPSonoxx,
234  INDEX_BitBlt, // SDPSonoxn,
235  INDEX_SrcPaint, // DSxn,
236  INDEX_BitBlt, // DPSnax,
237  INDEX_BitBlt, // SDPSoaxn,
238  INDEX_BitBlt, // SPDnax,
239  INDEX_BitBlt, // DSPDoaxn,
240  INDEX_BitBlt, // DSPDSaoxx,
241  INDEX_BitBlt, // PDSxan,
242  INDEX_PatPaint, // DPa,
243  INDEX_BitBlt, // PDSPnaoxn,
244  INDEX_BitBlt, // DPSnoa,
245  INDEX_BitBlt, // DPSDxoxn,
246  INDEX_BitBlt, // PDSPonoxn,
247  INDEX_PatPaint, // PDxn,
248  INDEX_BitBlt, // DSPnax,
249  INDEX_BitBlt, // PDSPoaxn,
250  INDEX_BitBlt, // DPSoa,
251  INDEX_BitBlt, // DPSoxn,
252  INDEX_BitBlt_NOOP, // D,
253  INDEX_BitBlt, // DPSono,
254  INDEX_BitBlt, // SPDSxax,
255  INDEX_BitBlt, // DPSDaoxn,
256  INDEX_BitBlt, // DSPnao,
257  INDEX_PatPaint, // DPno,
258  INDEX_BitBlt, // PDSnoa,
259  INDEX_BitBlt, // PDSPxoxn,
260  INDEX_BitBlt, // SSPxDSxox,
261  INDEX_BitBlt, // SDPanan,
262  INDEX_BitBlt, // PSDnax,
263  INDEX_BitBlt, // DPSDoaxn,
264  INDEX_BitBlt, // DPSDPaoxx,
265  INDEX_BitBlt, // SDPxan,
266  INDEX_BitBlt, // PSDPxax,
267  INDEX_BitBlt, // DSPDaoxn,
268  INDEX_BitBlt, // DPSnao,
269  INDEX_BitBlt_MERGEPAINT, // DSno / MERGEPAINT
270  INDEX_BitBlt, // SPDSanax,
271  INDEX_BitBlt, // SDxPDxan,
272  INDEX_BitBlt, // DPSxo,
273  INDEX_BitBlt, // DPSano,
274  INDEX_BitBlt_MERGECOPY, // PSa / MERGECOPY
275  INDEX_BitBlt, // SPDSnaoxn,
276  INDEX_BitBlt, // SPDSonoxn,
277  INDEX_SrcPatBlt, // PSxn,
278  INDEX_BitBlt, // SPDnoa,
279  INDEX_BitBlt, // SPDSxoxn,
280  INDEX_BitBlt, // SDPnax,
281  INDEX_BitBlt, // PSDPoaxn,
282  INDEX_BitBlt, // SDPoa,
283  INDEX_BitBlt, // SPDoxn,
284  INDEX_BitBlt, // DPSDxax,
285  INDEX_BitBlt, // SPDSaoxn,
286  INDEX_BitBlt_SRCCOPY, // S / SRCCOPY
287  INDEX_BitBlt, // SDPono,
288  INDEX_BitBlt, // SDPnao,
289  INDEX_SrcPatBlt, // SPno,
290  INDEX_BitBlt, // PSDnoa,
291  INDEX_BitBlt, // PSDPxoxn,
292  INDEX_BitBlt, // PDSnax,
293  INDEX_BitBlt, // SPDSoaxn,
294  INDEX_BitBlt, // SSPxPDxax,
295  INDEX_BitBlt, // DPSanan,
296  INDEX_BitBlt, // PSDPSaoxx,
297  INDEX_BitBlt, // DPSxan,
298  INDEX_BitBlt, // PDSPxax,
299  INDEX_BitBlt, // SDPSaoxn,
300  INDEX_BitBlt, // DPSDanax,
301  INDEX_BitBlt, // SPxDSxan,
302  INDEX_BitBlt, // SPDnao,
303  INDEX_SrcPaint, // SDno,
304  INDEX_BitBlt, // SDPxo,
305  INDEX_BitBlt, // SDPano,
306  INDEX_BitBlt, // PDSoa,
307  INDEX_BitBlt, // PDSoxn,
308  INDEX_BitBlt, // DSPDxax,
309  INDEX_BitBlt, // PSDPaoxn,
310  INDEX_BitBlt, // SDPSxax,
311  INDEX_BitBlt, // PDSPaoxn,
312  INDEX_BitBlt, // SDPSanax,
313  INDEX_BitBlt, // SPxPDxan,
314  INDEX_BitBlt, // SSPxDSxax,
315  INDEX_BitBlt, // DSPDSanaxxn,
316  INDEX_BitBlt, // DPSao,
317  INDEX_BitBlt, // DPSxno,
318  INDEX_BitBlt, // SDPao,
319  INDEX_BitBlt, // SDPxno,
320  INDEX_BitBlt_SRCPAINT, // DSo / SRCPAINT
321  INDEX_BitBlt, // SDPnoo,
322  INDEX_BitBlt_PATCOPY, // P / PATCOPY
323  INDEX_BitBlt, // PDSono,
324  INDEX_BitBlt, // PDSnao,
325  INDEX_SrcPatBlt, // PSno,
326  INDEX_BitBlt, // PSDnao,
327  INDEX_PatPaint, // PDno,
328  INDEX_BitBlt, // PDSxo,
329  INDEX_BitBlt, // PDSano,
330  INDEX_BitBlt, // PDSao,
331  INDEX_BitBlt, // PDSxno,
332  INDEX_PatPaint, // DPo,
333  INDEX_BitBlt_PATPAINT, // DPSnoo, // PATPAINT
334  INDEX_SrcPatBlt, // PSo,
335  INDEX_BitBlt, // PSDnoo,
336  INDEX_BitBlt, // DPSoo,
337  INDEX_BitBlt_WHITENESS //WHITENESS
338 };
339 
340 const PFN_DIBFUNCTION
342 {
343  Dib_MaskCopy,
351 };
VOID FASTCALL Dib_BitBlt_SRCERASE(PBLTDATA pBltData)
VOID FASTCALL Dib_BitBlt_NOTSRCCOPY(PBLTDATA pBltData)
VOID FASTCALL Dib_SrcPaint(PBLTDATA pBltData)
Definition: SrcPaint.c:17
VOID FASTCALL Dib_MaskCopy(PBLTDATA pBltData)
Definition: MaskCopy.c:9
VOID FASTCALL Dib_BitBlt_SRCCOPY(PBLTDATA pBltData)
VOID FASTCALL Dib_MaskPatBlt(PBLTDATA pBltData)
Definition: MaskPatBlt.c:22
VOID FASTCALL Dib_BitBlt_SRCAND(PBLTDATA pBltData)
Definition: BitBlt_SRCAND.c:17
VOID FASTCALL Dib_MaskSrcPaint(PBLTDATA pBltData)
Definition: MaskSrcPaint.c:17
VOID FASTCALL Dib_MaskSrcBlt(PBLTDATA pBltData)
Definition: MaskSrcBlt.c:17
VOID FASTCALL Dib_MaskPaint(PBLTDATA pBltData)
Definition: MaskPaint.c:17
VOID FASTCALL Dib_SrcPatBlt(PBLTDATA pBltData)
Definition: SrcPatBlt.c:22
const PFN_DIBFUNCTION gapfnMaskFunction[8]
Definition: DibLib.c:341
VOID FASTCALL Dib_BitBlt_MERGECOPY(PBLTDATA pBltData)
VOID FASTCALL Dib_MaskBlt(PBLTDATA pBltData)
Definition: MaskBlt.c:22
VOID(FASTCALL * PFN_DIBFUNCTION)(PBLTDATA pBltData)
VOID FASTCALL Dib_BitBlt_PATPAINT(PBLTDATA pBltData)
VOID FASTCALL Dib_BitBlt_PATINVERT(PBLTDATA pBltData)
unsigned char UCHAR
Definition: xmlstorage.h:181
VOID FASTCALL Dib_BitBlt_BLACKNESS(PBLTDATA pBltData)
Definition: BitBlt_other.c:8
VOID FASTCALL Dib_BitBlt_WHITENESS(PBLTDATA pBltData)
Definition: BitBlt_other.c:17
VOID FASTCALL Dib_BitBlt_NOOP(PBLTDATA pBltData)
Definition: BitBlt_other.c:26
VOID FASTCALL Dib_MaskSrcPatBlt(PBLTDATA pBltData)
Definition: MaskSrcPatBlt.c:22
unsigned char BYTE
Definition: mem.h:68
const UCHAR gajIndexPerRop[256]
Definition: DibLib.c:80
VOID FASTCALL Dib_BitBlt_PATCOPY(PBLTDATA pBltData)
VOID FASTCALL Dib_BitBlt_SRCINVERT(PBLTDATA pBltData)
const PFN_DIBFUNCTION gapfnDibFunction[]
Definition: DibLib.c:54
VOID FASTCALL Dib_BitBlt(PBLTDATA pBltData)
Definition: BitBlt.c:22
VOID FASTCALL Dib_PatPaint(PBLTDATA pBltData)
Definition: PatPaint.c:22
VOID FASTCALL Dib_BitBlt_DSTINVERT(PBLTDATA pBltData)
VOID FASTCALL Dib_BitBlt_NOTSRCERASE(PBLTDATA pBltData)
VOID FASTCALL Dib_BitBlt_NOTPATCOPY(PBLTDATA pBltData)
VOID FASTCALL Dib_MaskPatPaint(PBLTDATA pBltData)
Definition: MaskPatPaint.c:22
VOID FASTCALL Dib_BitBlt_SRCPAINT(PBLTDATA pBltData)
const BYTE ajShift4[2]
Definition: DibLib.c:26
VOID FASTCALL Dib_BitBlt_MERGEPAINT(PBLTDATA pBltData)