55{
57 PBYTE SourceBits, DestBits, SourceLine, DestLine;
58 PBYTE SourceBits_4BPP, SourceLine_4BPP;
59 PWORD SourceBits_16BPP, SourceLine_16BPP;
60 BOOLEAN bTopToBottom, bLeftToRight;
61
62 DPRINT(
"DIB_24BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
66
67
69
70
72
73 DPRINT(
"BltInfo->SourcePoint.x is '%d' and BltInfo->SourcePoint.y is '%d'.\n",
75
76
78
80
82 {
85
86
88
89 if (bTopToBottom)
90 {
91
93 }
94
95 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
96 {
98
99 if (bLeftToRight)
100 {
101
103 }
104
106 {
108 {
110 } else {
112 }
114 }
116 }
117 break;
118
120 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
122
123
125
126 if (bTopToBottom)
127 {
128
130 }
131
132 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
133 {
134 SourceLine_4BPP = SourceBits_4BPP;
135 DestLine = DestBits;
137
138 if (bLeftToRight)
139 {
140
142 }
143
145
147 {
150 *DestLine++ = xColor & 0xff;
152 DestLine += 2;
156 }
157 else
158 {
160 }
162 }
165 }
166 break;
167
169 DPRINT(
"8BPP Case Selected with DestRect Width of '%d'.\n",
171
172
174
175 if (bTopToBottom)
176 {
177
179 }
180 DestLine = DestBits;
181
182 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
183 {
184 SourceBits = SourceLine;
185 DestBits = DestLine;
186
187 if (bLeftToRight)
188 {
189
191 }
192
193 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
194 {
196 *DestBits = xColor & 0xff;
197 *(
PWORD)(DestBits + 1) = (
WORD)(xColor >> 8);
199 DestBits += 3;
200 }
201
204 }
205 break;
206
208 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
210
211
213
214 if (bTopToBottom)
215 {
216
218 }
219
220 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
221 {
222 SourceLine_16BPP = SourceBits_16BPP;
223 DestLine = DestBits;
224
225 if (bLeftToRight)
226 {
227
229 }
230
232 {
234 *DestLine++ = xColor & 0xff;
236 DestLine += 2;
237 DEC_OR_INC(SourceLine_16BPP, bLeftToRight, 1);
238 }
239 if (bTopToBottom)
240 {
242 }
243 else
244 {
246 }
248 }
249 break;
250
252 DPRINT(
"24BPP Case Selected with DestRect Width of '%d'.\n",
254
255
258 (!bTopToBottom && !bLeftToRight))
259 {
260 DPRINT(
"XO_TRIVIAL is TRUE.\n");
262 {
263
265 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
266 {
270 }
271 }
272 else
273 {
277 {
281 }
282 }
283 }
284 else
285 {
286 DPRINT(
"XO_TRIVIAL is NOT TRUE.\n");
287
288 if (!bTopToBottom && !bLeftToRight)
289
290 {
293
294 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
295 {
298 {
301 sx++;
302 }
303 sy++;
304 }
305 }
306 else
307 {
308
310
311 if (bLeftToRight)
312 {
313 DPRINT(
"Flip is bLeftToRight.\n");
315
316
320 {
321 DPRINT1(
"Storage Allocation Failed.\n");
323 }
324
326
328
329
331
332 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
333 {
334
335
337
339
340
341 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
342 {
345 sx--;
346 }
347
349
350
351 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
352 {
355 }
356 sy++;
357 }
359 TopToBottomDone =
TRUE;
360 }
361
362 if (bTopToBottom)
363 {
364 DPRINT(
"Flip is bTopToBottom.\n");
366
367
371 {
372 DPRINT1(
"Storage Allocation Failed.\n");
374 }
375
376
377
378
379
380
381
382 if (TopToBottomDone)
383 {
386
387
389 }
390 else
391 {
393
394
396
397
399 }
400
401 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
402 {
403
404
407
408
409 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
410 {
411 if (TopToBottomDone)
412 {
414 }
415 else
416 {
418 }
420 sy--;
421 }
422
424
425 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
426 {
429 }
430 sx++;
431 }
433 }
434
435 }
436 }
437 break;
438
440 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
442
444
445 if (bTopToBottom)
446 {
447
449 }
450 DestLine = DestBits;
451
452 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
453 {
454 SourceBits = SourceLine;
455 DestBits = DestLine;
456
457 if (bLeftToRight)
458 {
459
461 }
462 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
463 {
465 *DestBits = xColor & 0xff;
466 *(
PWORD)(DestBits + 1) = (
WORD)(xColor >> 8);
468 DestBits += 3;
469 }
470
473 }
474 break;
475
476 default:
479 }
480
482}
#define DEC_OR_INC(var, decTrue, amount)
VOID DIB_24BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
ULONG DIB_24BPP_GetPixel(SURFOBJ *SurfObj, LONG x, LONG y)
#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)
#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)