145{
147 PBYTE SourceBits, DestBits, SourceLine, DestLine;
148 PBYTE SourceBits_4BPP, SourceLine_4BPP;
149 PWORD Source32, Dest32;
151 BOOLEAN bTopToBottom, bLeftToRight;
152
153 DPRINT(
"DIB_16BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
157
158
160
161
163
164 DPRINT(
"BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
166
167
169
170 DPRINT(
"BPP is '%d/%d' & BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
172
174
176 {
178 DPRINT(
"1BPP Case Selected with DestRect Width of '%d'.\n",
181
182
184
185 if (bTopToBottom)
186 {
187
189 }
190
191 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
192 {
194
195 if (bLeftToRight)
196 {
197
201 }
202 else
203 {
206 }
207
208 for (
i = StartLeft;
i < EndRight;
i++)
209 {
211 {
214 }
215 else
216 {
219 }
221 }
223 }
224 break;
225
227 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
229
230
234
235 if (bTopToBottom)
236 {
237
239 }
240
241 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
242 {
243 SourceLine_4BPP = SourceBits_4BPP;
245 if (bLeftToRight)
246 {
247
249 }
250
252
254 {
259 {
262 }
263 else
264 {
266 }
268 }
270 }
271 break;
272
274 DPRINT(
"8BPP Case Selected with DestRect Width of '%d'.\n",
276
277
281 DestLine = DestBits;
282
283 if (bTopToBottom)
284 {
285
288 }
289
290 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
291 {
292 SourceBits = SourceLine;
293 DestBits = DestLine;
294
295 if (bLeftToRight)
296 {
297
299 }
300
301 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
302 {
306 DestBits += 2;
307 }
310 }
311 break;
312
314 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
316
317 DPRINT(
"BMF_16BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
321
324 (!bTopToBottom && !bLeftToRight))
325 {
326 DPRINT(
"XO_TRIVIAL is TRUE.\n");
328 {
329
334
335 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
336 {
340
343 }
344 }
345 else
346 {
347
353
358
361 {
365
368 }
369 }
370 }
371 else
372 {
373 DPRINT(
"XO_TRIVIAL is NOT TRUE.\n");
374 if (!bTopToBottom && !bLeftToRight)
375
376 {
377 DPRINT(
"Flip is None.\n");
379 {
384
385 DestLine = DestBits;
386 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
387 {
388 SourceBits = SourceLine;
389 DestBits = DestLine;
392 {
395 *((
WORD *)SourceBits));
396 SourceBits += 2;
397 DestBits += 2;
398 }
401 }
402 }
403 else
404 {
411
416
419 {
420 SourceBits = SourceLine;
421 DestBits = DestLine;
424 {
427 *((
WORD *)SourceBits));
428 SourceBits += 2;
429 DestBits += 2;
430 }
433 }
434 }
435 }
436 else
437 {
438
440
441 if (bLeftToRight)
442 {
443 DPRINT(
"Flip is bLeftToRight.\n");
444
445
449 {
450 DPRINT1(
"Storage Allocation Failed.\n");
452 }
454
455
459
460
464
466 {
467
469 Source32 = (
WORD *) SourceBits;
470
472
473
475 {
478 }
479
481
482
484 {
487 }
488
491 }
493 TopToBottomDone =
TRUE;
494 }
495
496 if (bTopToBottom)
497 {
498 DPRINT(
"Flip is bTopToBottom.\n");
499
500
504 {
505 DPRINT1(
"Storage Allocation Failed.\n");
507 }
508
509
513
514
518
520 {
522 }
523
524 if (bLeftToRight)
525 {
526 DPRINT(
"Adjusting DestBits for bLeftToRight.\n");
527 DestBits += 2;
528 }
529
530
531
532
533
534
535 if (TopToBottomDone)
536 {
537
538 SourceBits = DestBits;
539 }
540
542 {
543
546 Source32 = (
WORD *) SourceBits;
547
549
550
551 for (
i = BltInfo->
DestRect.
top; i <= BltInfo->DestRect.bottom - 1;
i++)
552 {
556 }
557
559
560
562 {
563 *Dest32 = store[
Index];
566 }
567 SourceBits += 2;
568 DestBits += 2;
569 }
571 }
572
573 }
574 }
575 break;
576
578
579 DPRINT(
"BMF_24BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
583
584
588
589 if (bTopToBottom)
590 {
591
593 }
594 DestLine = DestBits;
595
596 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
597 {
598 SourceBits = SourceLine;
599 DestBits = DestLine;
600
601 if (bLeftToRight)
602 {
603
605 }
606 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
607 {
608 xColor = (*(SourceBits + 2) << 0x10) +
609 (*(SourceBits + 1) << 0x08) + (*(SourceBits));
610
613
615 DestBits += 2;
616 }
619 }
620 break;
621
623 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
625
629
630 if (bTopToBottom)
631 {
632
634 }
635 DestLine = DestBits;
636
637 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
638 {
639 SourceBits = SourceLine;
640 DestBits = DestLine;
641
642 if (bLeftToRight)
643 {
644
646 }
647
648 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
649 {
654 DestBits += 2;
655 }
656
659 }
660 break;
661
662 default:
663 DPRINT1(
"DIB_16BPP_BitBltSrcCopy: Unhandled Source BPP: %u\n",
666 }
667
669}
#define DEC_OR_INC(var, decTrue, amount)
#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)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)