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
327
328
332 {
333 DPRINT1(
"Storage Allocation Failed.\n");
335 }
336
337
338
339
340
341
342 if (OneDone)
343 {
344
349 }
350 else
351 {
352
358 }
359
360
364
365
366 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
367 {
368
369 DestBits = DestLine;
370 SourceBits = SourceLine;
371
373
374
375 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
376 {
378
379 SourceBits -= SrcDelta;
381 }
382
384
385
386 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
387 {
388 *DestBits = store[
Index];
389
392 }
393
394 SourceLine += 1;
395 DestLine += 1;
396 }
398 }
399
400 }
401 }
402 break;
403
405 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
407
408 DPRINT(
"BMF_16BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
412
414
415 if (bTopToBottom)
416 {
417
419 }
420 DestLine = DestBits;
421
422 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
423 {
424 SourceBits = SourceLine;
425
426 if (bLeftToRight)
427 {
428
430 }
431 DestBits = DestLine;
432
433 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
434 {
435 xColor = *((
PWORD) SourceBits);
437
439 DestBits += 1;
440 }
443 }
444 break;
445
447 DPRINT(
"24BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
451
453 DestLine = DestBits;
454
455 if (bTopToBottom)
456 {
457
459 }
460
461 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
462 {
463 SourceBits = SourceLine;
464 DestBits = DestLine;
465
466 if (bLeftToRight)
467 {
468
470 }
471
472 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
473 {
474 xColor = (*(SourceBits + 2) << 0x10) +
475 (*(SourceBits + 1) << 0x08) +
476 (*(SourceBits));
479 DestBits += 1;
480 }
483 }
484 break;
485
487 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
489
491
492 if (bTopToBottom)
493 {
494
496 }
497 DestLine = DestBits;
498
499 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
500 {
501 SourceBits = SourceLine;
502 DestBits = DestLine;
503
504 if (bLeftToRight)
505 {
506
508 }
509
510 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
511 {
512 xColor = *((
PDWORD) SourceBits);
514
516 DestBits += 1;
517 }
520 }
521 break;
522
523 default:
526 }
527
529}
#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)