151{
153 PBYTE SourceBits, DestBits, SourceLine, DestLine;
154 PBYTE SourceBits_4BPP, SourceLine_4BPP;
155 PWORD Source32, Dest32;
157 BOOLEAN bTopToBottom, bLeftToRight;
158
159 DPRINT(
"DIB_16BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
163
164
166
167
169
170 DPRINT(
"BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
172
173
175
176 DPRINT(
"BPP is '%d/%d' & BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
178
180
182 {
184 DPRINT(
"1BPP Case Selected with DestRect Width of '%d'.\n",
187
188
190
191 if (bTopToBottom)
192 {
193
195 }
196
197 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
198 {
200
201 if (bLeftToRight)
202 {
203
207 }
208 else
209 {
212 }
213
214 for (
i = StartLeft;
i < EndRight;
i++)
215 {
217 {
220 }
221 else
222 {
225 }
227 }
229 }
230 break;
231
233 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
235
236
240
241 if (bTopToBottom)
242 {
243
245 }
246
247 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
248 {
249 SourceLine_4BPP = SourceBits_4BPP;
251 if (bLeftToRight)
252 {
253
255 }
256
258
260 {
265 {
268 }
269 else
270 {
272 }
274 }
276 }
277 break;
278
280 DPRINT(
"8BPP Case Selected with DestRect Width of '%d'.\n",
282
283
287 DestLine = DestBits;
288
289 if (bTopToBottom)
290 {
291
294 }
295
296 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
297 {
298 SourceBits = SourceLine;
299 DestBits = DestLine;
300
301 if (bLeftToRight)
302 {
303
305 }
306
307 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
308 {
312 DestBits += 2;
313 }
316 }
317 break;
318
320 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
322
323 DPRINT(
"BMF_16BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
327
330 (!bTopToBottom && !bLeftToRight))
331 {
332 DPRINT(
"XO_TRIVIAL is TRUE.\n");
334 {
335
340
341 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
342 {
346
349 }
350 }
351 else
352 {
353
359
364
367 {
371
374 }
375 }
376 }
377 else
378 {
379 DPRINT(
"XO_TRIVIAL is NOT TRUE.\n");
380 if (!bTopToBottom && !bLeftToRight)
381
382 {
383 DPRINT(
"Flip is None.\n");
385 {
390
391 DestLine = DestBits;
392 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
393 {
394 SourceBits = SourceLine;
395 DestBits = DestLine;
398 {
401 *((
WORD *)SourceBits));
402 SourceBits += 2;
403 DestBits += 2;
404 }
407 }
408 }
409 else
410 {
417
422
425 {
426 SourceBits = SourceLine;
427 DestBits = DestLine;
430 {
433 *((
WORD *)SourceBits));
434 SourceBits += 2;
435 DestBits += 2;
436 }
439 }
440 }
441 }
442 else
443 {
444
446
447 if (bLeftToRight)
448 {
449 DPRINT(
"Flip is bLeftToRight.\n");
450
451
455 {
456 DPRINT1(
"Storage Allocation Failed.\n");
458 }
460
461
465
466
470
472 {
473
475 Source32 = (
WORD *) SourceBits;
476
478
479
481 {
484 }
485
487
488
490 {
493 }
494
497 }
499 TopToBottomDone =
TRUE;
500 }
501
502 if (bTopToBottom)
503 {
504 DPRINT(
"Flip is bTopToBottom.\n");
505
506
510 {
511 DPRINT1(
"Storage Allocation Failed.\n");
513 }
514
515
519
520
524
526 {
528 }
529
530 if (bLeftToRight)
531 {
532 DPRINT(
"Adjusting DestBits for bLeftToRight.\n");
533 DestBits += 2;
534 }
535
536
537
538
539
540
541 if (TopToBottomDone)
542 {
543
544 SourceBits = DestBits;
545 }
546
548 {
549
552 Source32 = (
WORD *) SourceBits;
553
555
556
557 for (
i = BltInfo->
DestRect.
top; i <= BltInfo->DestRect.bottom - 1;
i++)
558 {
562 }
563
565
566
568 {
569 *Dest32 = store[
Index];
572 }
573 SourceBits += 2;
574 DestBits += 2;
575 }
577 }
578
579 }
580 }
581 break;
582
584
585 DPRINT(
"BMF_24BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
589
590
594
595 if (bTopToBottom)
596 {
597
599 }
600 DestLine = DestBits;
601
602 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
603 {
604 SourceBits = SourceLine;
605 DestBits = DestLine;
606
607 if (bLeftToRight)
608 {
609
611 }
612 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
613 {
614 xColor = (*(SourceBits + 2) << 0x10) +
615 (*(SourceBits + 1) << 0x08) + (*(SourceBits));
616
619
621 DestBits += 2;
622 }
625 }
626 break;
627
629 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
631
635
636 if (bTopToBottom)
637 {
638
640 }
641 DestLine = DestBits;
642
643 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
644 {
645 SourceBits = SourceLine;
646 DestBits = DestLine;
647
648 if (bLeftToRight)
649 {
650
652 }
653
654 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
655 {
660 DestBits += 2;
661 }
662
665 }
666 break;
667
668 default:
669 DPRINT1(
"DIB_16BPP_BitBltSrcCopy: Unhandled Source BPP: %u\n",
672 }
673
675}
#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)