17#define DEC_OR_INC(var, decTrue, amount) \
18 ((var) = (decTrue) ? ((var) - (amount)) : ((var) + (amount)))
25 *(
addr + 2) = (
c >> 16) & 0xFF;
57 PBYTE SourceBits, DestBits, SourceLine, DestLine;
58 PBYTE SourceBits_4BPP, SourceLine_4BPP;
59 PWORD SourceBits_16BPP, SourceLine_16BPP;
60 BOOLEAN bTopToBottom, bLeftToRight;
62 DPRINT(
"DIB_24BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
73 DPRINT(
"BltInfo->SourcePoint.x is '%d' and BltInfo->SourcePoint.y is '%d'.\n",
95 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
120 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
132 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
134 SourceLine_4BPP = SourceBits_4BPP;
150 *DestLine++ = xColor & 0xff;
169 DPRINT(
"8BPP Case Selected with DestRect Width of '%d'.\n",
182 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
184 SourceBits = SourceLine;
193 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
196 *DestBits = xColor & 0xff;
197 *(
PWORD)(DestBits + 1) = (
WORD)(xColor >> 8);
208 DPRINT(
"16BPP Case Selected with DestRect Width of '%d'.\n",
220 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
222 SourceLine_16BPP = SourceBits_16BPP;
234 *DestLine++ = xColor & 0xff;
237 DEC_OR_INC(SourceLine_16BPP, bLeftToRight, 1);
252 DPRINT(
"24BPP Case Selected with DestRect Width of '%d'.\n",
258 (!bTopToBottom && !bLeftToRight))
260 DPRINT(
"XO_TRIVIAL is TRUE.\n");
265 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
286 DPRINT(
"XO_TRIVIAL is NOT TRUE.\n");
288 if (!bTopToBottom && !bLeftToRight)
294 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
313 DPRINT(
"Flip is bLeftToRight.\n");
321 DPRINT1(
"Storage Allocation Failed.\n");
332 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
341 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
351 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
359 TopToBottomDone =
TRUE;
364 DPRINT(
"Flip is bTopToBottom.\n");
372 DPRINT1(
"Storage Allocation Failed.\n");
401 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
409 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
425 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
440 DPRINT(
"32BPP Case Selected with DestRect Width of '%d'.\n",
452 for (
j = BltInfo->
DestRect.
top; j < BltInfo->DestRect.bottom;
j++)
454 SourceBits = SourceLine;
462 for (
i = BltInfo->
DestRect.
left; i < BltInfo->DestRect.right;
i++)
465 *DestBits = xColor & 0xff;
466 *(
PWORD)(DestBits + 1) = (
WORD)(xColor >> 8);
488 LONG SourceX, SourceY;
520 for (DestY = BltInfo->
DestRect.
top; DestY < BltInfo->DestRect.bottom; DestY++)
524 for (DestX = BltInfo->
DestRect.
left; DestX < BltInfo->DestRect.right; DestX++, DestBits += 3, SourceX++)
526 Dest = *((
PUSHORT)DestBits) + (*(DestBits + 2) << 16);
539 *(
PUSHORT)(DestBits) = Dest & 0xFFFF;
540 *(DestBits + 2) = (
BYTE)(Dest >> 16);
565#if defined(_M_IX86) && !defined(_MSC_VER)
571 for (DestY = DestRect->
top; DestY< DestRect->
bottom; DestY++)
611 "andl $0xffffff, %%ecx\n\t"
612 "movl %%ecx, %%ebx\n\t"
614 "movl %%ecx, %%eax\n\t"
615 "shll $16, %%eax\n\t"
616 "orl %%eax, %%ebx\n\t"
617 "movl %%ecx, %%edx\n\t"
619 "movl %%ecx, %%eax\n\t"
620 "shrl $16, %%eax\n\t"
621 "orl %%eax, %%edx\n\t"
622 "movl %%ecx, %%eax\n\t"
623 "shll $24, %%eax\n\t"
624 "orl %%ecx, %%eax\n\t"
629 "movl %%eax, (%%edi)\n\t"
630 "movl %%ebx, 4(%%edi)\n\t"
631 "movl %%edx, 8(%%edi)\n\t"
632 "addl $12, %%edi\n\t"
638 :
"%eax",
"%ebx",
"%ecx",
"%edx",
"%edi");
651 for (DestY = DestRect->
top; DestY< DestRect->
bottom; DestY++)
664 LONG X,
Y, SourceX, SourceY = 0, wd;
673 DstHeight = DestRect->
bottom - DestRect->
top;
674 DstWidth = DestRect->
right - DestRect->
left;
675 SrcHeight = SourceRect->
bottom - SourceRect->
top;
676 SrcWidth = SourceRect->
right - SourceRect->
left;
679 (DestRect->
left * 3) +
685 SourceY = SourceRect->
top+(
Y - DestRect->
top) * SrcHeight / DstHeight;
686 for(
X = DestRect->
left; X < DestRect->
right;
X++, DestBits += 3)
688 SourceX = SourceRect->
left+(
X - DestRect->
left) * SrcWidth / DstWidth;
689 if (SourceX >= 0 && SourceY >= 0 &&
696 *(
PUSHORT)(DestBits) = Dest & 0xFFFF;
697 *(DestBits + 2) = (
BYTE)(Dest >> 16);
736 DPRINT(
"DIB_24BPP_AlphaBlend: srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
743 DPRINT1(
"BlendOp != AC_SRC_OVER\n");
759 DPRINT1(
"Source bitmap must be 32bpp when AC_SRC_ALPHA is set\n");
764 (DestRect->
left * 3));
768 SrcY = SourceRect->
top;
769 while (++Rows <= DestRect->
bottom - DestRect->
top)
772 SrcX = SourceRect->
left;
773 while (++Cols <= DestRect->
right - DestRect->
left)
788 DstPixel.
col.red =
Clamp8((*
Dst * (255 - Alpha)) / 255 + SrcPixel.
col.red) ;
789 DstPixel.
col.green =
Clamp8((*(
Dst+1) * (255 - Alpha) / 255 + SrcPixel.
col.green)) ;
790 DstPixel.
col.blue =
Clamp8((*(
Dst+2) * (255 - Alpha)) / 255 + SrcPixel.
col.blue) ;
791 *
Dst++ = DstPixel.
col.red;
792 *
Dst++ = DstPixel.
col.green;
793 *
Dst++ = DstPixel.
col.blue;
794 SrcX = SourceRect->
left + (Cols*(SourceRect->
right - SourceRect->
left))/(DestRect->
right - DestRect->
left);
BOOLEAN DIB_24BPP_BitBltSrcCopy(PBLTINFO BltInfo)
#define DEC_OR_INC(var, decTrue, amount)
BOOLEAN DIB_24BPP_BitBlt(PBLTINFO BltInfo)
VOID DIB_24BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
BOOLEAN DIB_24BPP_ColorFill(SURFOBJ *DestSurface, RECTL *DestRect, ULONG color)
BOOLEAN DIB_24BPP_AlphaBlend(SURFOBJ *Dest, SURFOBJ *Source, RECTL *DestRect, RECTL *SourceRect, CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation, BLENDOBJ *BlendObj)
ULONG DIB_24BPP_GetPixel(SURFOBJ *SurfObj, LONG x, LONG y)
BOOLEAN DIB_24BPP_TransparentBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, RECTL *DestRect, RECTL *SourceRect, XLATEOBJ *ColorTranslation, ULONG iTransColor)
VOID DIB_24BPP_VLine(SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c)
static __inline UCHAR Clamp8(ULONG val)
static const BLENDFUNCTION BlendFunc
#define ExAllocatePoolWithTag(hernya, size, tag)
GLint GLint GLint GLint GLint x
GLclampf GLclampf GLclampf alpha
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 ROP4_USES_PATTERN(Rop4)
#define ROP4_USES_SOURCE(Rop4)
#define ExFreePoolWithTag(_P, _T)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
BLENDFUNCTION BlendFunction
XLATEOBJ * XlateSourceToDest
#define RtlMoveMemory(Destination, Source, Length)
struct NICEPIXEL32::@5078 col
_In_ WDFCOLLECTION _In_ ULONG Index
ULONG DIB_DoRop(ULONG Rop, ULONG Dest, ULONG Source, ULONG Pattern)
unsigned char altnotmask[2]
#define DIB_GetSource(SourceSurf, sx, sy, ColorTranslation)
VOID DIB_24BPP_HLine(SURFOBJ *, LONG, LONG, LONG, ULONG)
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
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2