17#define DEC_OR_INC(var, decTrue, amount) \
18 ((var) = (decTrue) ? ((var) - (amount)) : ((var) + (amount)))
65 PBYTE SourceBits, DestBits, SourceLine, DestLine;
66 PBYTE SourceBits_4BPP, SourceLine_4BPP;
67 BOOLEAN bTopToBottom, bLeftToRight;
69 DPRINT(
"DIB_8BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
80 DPRINT(
"bTopToBottom is '%d' and bLeftToRight is '%d'.\n", bTopToBottom, bLeftToRight);
85 DPRINT(
"BPP is '%d' & BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
93 DPRINT(
"1BPP Case Selected with DestRect Width of '%d'.\n",
107 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
134 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
146 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
148 SourceLine_4BPP = SourceBits_4BPP;
181 DPRINT(
"8BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
188 (!bTopToBottom && !bLeftToRight))
192 DPRINT(
"BltInfo->DestRect.top < BltInfo->SourcePoint.y.\n");
194 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
203 DPRINT(
"BltInfo->DestRect.top >= BltInfo->SourcePoint.y.\n");
216 DPRINT(
"XO_TRIVIAL is NOT TRUE or we have flips.\n");
218 if (!bTopToBottom && !bLeftToRight)
223 DPRINT(
"Dest.top < SourcePoint.y.\n");
226 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
228 SourceBits = SourceLine;
240 DPRINT(
"Dest.top >= SourcePoint.y.\n");
245 SourceBits = SourceLine;
263 DPRINT(
"Flip is bLeftToRight.\n");
270 DPRINT1(
"Storage Allocation Failed.\n");
286 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
288 SourceBits = SourceLine;
296 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
307 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
309 *DestBits = store[
Index];
323 DPRINT(
"Flip is bTopToBottom.\n");
332 DPRINT1(
"Storage Allocation Failed.\n");
363 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
367 SourceBits = SourceLine;
372 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
383 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
385 *DestBits = store[
Index];
402 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
405 DPRINT(
"BMF_16BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
419 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
421 SourceBits = SourceLine;
430 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
432 xColor = *((
PWORD) SourceBits);
444 DPRINT(
"24BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
458 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
460 SourceBits = SourceLine;
469 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
471 xColor = (*(SourceBits + 2) << 0x10) +
472 (*(SourceBits + 1) << 0x08) +
484 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
496 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
498 SourceBits = SourceLine;
507 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
509 xColor = *((
PDWORD) SourceBits);
537 for (DestY = DestRect->
top; DestY< DestRect->
bottom; DestY++)
550 LONG RoundedRight,
X,
Y, SourceX = 0, SourceY = 0;
558 DstHeight = DestRect->
bottom - DestRect->
top;
559 DstWidth = DestRect->
right - DestRect->
left;
560 SrcHeight = SourceRect->
bottom - SourceRect->
top;
561 SrcWidth = SourceRect->
right - SourceRect->
left;
563 RoundedRight = DestRect->
right - ((DestRect->
right - DestRect->
left) & 0x3);
571 SourceY = SourceRect->
top+(
Y - DestRect->
top) * SrcHeight / DstHeight;
572 for (
X = DestRect->
left;
X < RoundedRight;
X += 4, DestBits++)
576 SourceX = SourceRect->
left+(
X - DestRect->
left) * SrcWidth / DstWidth;
577 if (SourceX >= 0 && SourceY >= 0 &&
588 SourceX = SourceRect->
left+(
X+1 - DestRect->
left) * SrcWidth / DstWidth;
589 if (SourceX >= 0 && SourceY >= 0 &&
600 SourceX = SourceRect->
left+(
X+2 - DestRect->
left) * SrcWidth / DstWidth;
601 if (SourceX >= 0 && SourceY >= 0 &&
612 SourceX = SourceRect->
left+(
X+3 - DestRect->
left) * SrcWidth / DstWidth;
613 if (SourceX >= 0 && SourceY >= 0 &&
627 if(X < DestRect->
right)
629 for (;
X < DestRect->
right;
X++)
631 SourceX = SourceRect->
left+(
X - DestRect->
left) * SrcWidth / DstWidth;
632 if (SourceX >= 0 && SourceY >= 0 &&
ULONG DIB_8BPP_GetPixel(SURFOBJ *SurfObj, LONG x, LONG y)
BOOLEAN DIB_8BPP_BitBltSrcCopy(PBLTINFO BltInfo)
#define DEC_OR_INC(var, decTrue, amount)
BOOLEAN DIB_8BPP_ColorFill(SURFOBJ *DestSurface, RECTL *DestRect, ULONG color)
BOOLEAN DIB_8BPP_TransparentBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, RECTL *DestRect, RECTL *SourceRect, XLATEOBJ *ColorTranslation, ULONG iTransColor)
VOID DIB_8BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
VOID DIB_8BPP_VLine(SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c)
VOID DIB_8BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
#define ExAllocatePoolWithTag(hernya, size, tag)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLenum const GLvoid * addr
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)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
XLATEOBJ * XlateSourceToDest
#define RtlMoveMemory(Destination, Source, Length)
_In_ WDFCOLLECTION _In_ ULONG Index
unsigned char altnotmask[2]
ULONG DIB_1BPP_GetPixel(SURFOBJ *, LONG, LONG)
#define DIB_GetSourceIndex(SourceSurf, sx, sy)
#define BitsPerFormat(Format)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_ RECTL _In_ ULONG iTransColor
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2