63{
65 PBYTE SourceBits, DestBits, SourceLine, DestLine;
66 PBYTE SourceBits_4BPP, SourceLine_4BPP;
67 BOOLEAN bTopToBottom, bLeftToRight;
68
69 DPRINT(
"DIB_8BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
73
74
76
77
79
80 DPRINT(
"bTopToBottom is '%d' and bLeftToRight is '%d'.\n", bTopToBottom, bLeftToRight);
81
82
84
85 DPRINT(
"BPP is '%d' & BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
87
89
91 {
93 DPRINT(
"1BPP Case Selected with DestRect Width of '%d'.\n",
95
97
98
100
101 if (bTopToBottom)
102 {
103
105 }
106
107 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
108 {
110
111 if (bLeftToRight)
112 {
113
115 }
116
118 {
120 {
122 }
123 else
124 {
126 }
128 }
130 }
131 break;
132
134 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
136
137
139
140 if (bTopToBottom)
141 {
142
144 }
145
146 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
147 {
148 SourceLine_4BPP = SourceBits_4BPP;
150
151 if (bLeftToRight)
152 {
153
155 }
156
158
160 {
165 {
168 }
169 else
170 {
172 }
173
175 }
177 }
178 break;
179
181 DPRINT(
"8BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
185
188 (!bTopToBottom && !bLeftToRight))
189 {
191 {
192 DPRINT(
"BltInfo->DestRect.top < BltInfo->SourcePoint.y.\n");
194 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
195 {
199 }
200 }
201 else
202 {
203 DPRINT(
"BltInfo->DestRect.top >= BltInfo->SourcePoint.y.\n");
207 {
211 }
212 }
213 }
214 else
215 {
216 DPRINT(
"XO_TRIVIAL is NOT TRUE or we have flips.\n");
217
218 if (!bTopToBottom && !bLeftToRight)
219
220 {
222 {
223 DPRINT(
"Dest.top < SourcePoint.y.\n");
225 DestLine = DestBits;
226 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
227 {
228 SourceBits = SourceLine;
229 DestBits = DestLine;
231 {
233 }
236 }
237 }
238 else
239 {
240 DPRINT(
"Dest.top >= SourcePoint.y.\n");
244 {
245 SourceBits = SourceLine;
246 DestBits = DestLine;
248 {
250 }
253 }
254 }
255 }
256 else
257 {
258
260
261 if (bLeftToRight)
262 {
263 DPRINT(
"Flip is bLeftToRight.\n");
264
265
269 {
270 DPRINT1(
"Storage Allocation Failed.\n");
272 }
274
275
280
281
285
286 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
287 {
288 SourceBits = SourceLine;
289 DestBits = DestLine;
290
291
293
295
296 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
297 {
300 *SourceBits);
301 SourceBits--;
303 }
304
306
307 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
308 {
309 *DestBits = store[
Index];
310 DestBits++;
312 }
313
316 }
319 }
320
321 if (bTopToBottom)
322 {
323 DPRINT(
"Flip is bTopToBottom.\n");
324
326
327
331 {
332 DPRINT1(
"Storage Allocation Failed.\n");
334 }
335
336
337
338
339
340
341 if (OneDone)
342 {
343
347 }
348 else
349 {
350
355 }
356
357
361
362
363 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
364 {
365
366 DestBits = DestLine;
367 SourceBits = SourceLine;
368
370
371
372 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
373 {
375
378 }
379
381
382
383 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
384 {
385 *DestBits = store[
Index];
386
389 }
390
391 SourceLine += 1;
392 DestLine += 1;
393 }
395 }
396
397 }
398 }
399 break;
400
402 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
404
405 DPRINT(
"BMF_16BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
409
411
412 if (bTopToBottom)
413 {
414
416 }
417 DestLine = DestBits;
418
419 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
420 {
421 SourceBits = SourceLine;
422
423 if (bLeftToRight)
424 {
425
427 }
428 DestBits = DestLine;
429
430 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
431 {
432 xColor = *((
PWORD) SourceBits);
434
436 DestBits += 1;
437 }
440 }
441 break;
442
444 DPRINT(
"24BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
448
450 DestLine = DestBits;
451
452 if (bTopToBottom)
453 {
454
456 }
457
458 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
459 {
460 SourceBits = SourceLine;
461 DestBits = DestLine;
462
463 if (bLeftToRight)
464 {
465
467 }
468
469 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
470 {
471 xColor = (*(SourceBits + 2) << 0x10) +
472 (*(SourceBits + 1) << 0x08) +
473 (*(SourceBits));
476 DestBits += 1;
477 }
480 }
481 break;
482
484 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
486
488
489 if (bTopToBottom)
490 {
491
493 }
494 DestLine = DestBits;
495
496 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
497 {
498 SourceBits = SourceLine;
499 DestBits = DestLine;
500
501 if (bLeftToRight)
502 {
503
505 }
506
507 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
508 {
509 xColor = *((
PDWORD) SourceBits);
511
513 DestBits += 1;
514 }
517 }
518 break;
519
520 default:
523 }
524
526}
#define DEC_OR_INC(var, decTrue, amount)
VOID DIB_8BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
#define ExAllocatePoolWithTag(hernya, size, tag)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define ExFreePoolWithTag(_P, _T)
XLATEOBJ * XlateSourceToDest
#define RtlMoveMemory(Destination, Source, Length)
_In_ WDFCOLLECTION _In_ ULONG Index
unsigned char altnotmask[2]
ULONG DIB_1BPP_GetPixel(SURFOBJ *, LONG, LONG)
#define BitsPerFormat(Format)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)