15 #define DEC_OR_INC(var, decTrue, amount) \ 16 ((var) = (decTrue) ? ((var) - (amount)) : ((var) + (amount))) 72 BYTE *DstStart, *DstEnd, *SrcStart, *SrcEnd;
85 SrcStart = (
BYTE*)SourceSurf->
pvScan0 + SourcePoint->
y * SourceSurf->
lDelta + SourcePoint->
x / 8;
89 if (DstStart > DstEnd)
96 if (SrcStart > SrcEnd)
104 Overlap = ((SrcStart >= DstStart) && (SrcStart < DstEnd)) || ((SrcEnd >= DstStart) && (SrcEnd < DstEnd));
111 LONG ySrc = bTopToBottom ? SourcePoint->
y +
Height -
y - 1 : SourcePoint->
y +
y;
116 LONG xSrc = bLeftToRight ? SourcePoint->
x +
Width -
x - 1 : SourcePoint->
x +
x;
133 LONG ySrc = bTopToBottom ? SourcePoint->
y +
Height -
y - 1 : SourcePoint->
y +
y;
138 LONG xSrc = bLeftToRight ? SourcePoint->
x +
Width -
x - 1 : SourcePoint->
x +
x;
140 Row[
x / 8] |= 1 << (
x & 7);
163 BOOLEAN bTopToBottom, bLeftToRight;
168 DPRINT(
"DIB_1BPP_BitBltSrcCopy: SrcSurf cx/cy (%d/%d), DestSuft cx/cy (%d/%d) dstRect: (%d,%d)-(%d,%d)\n",
182 DPRINT(
"BPP is '%d' & BltInfo->SourcePoint.x is '%d' & BltInfo->SourcePoint.y is '%d'.\n",
188 DPRINT(
"1BPP Case Selected with DestRect Width of '%d'.\n",
193 bTopToBottom, bLeftToRight );
196 DPRINT(
"4BPP Case Selected with DestRect Width of '%d'.\n",
205 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
227 DPRINT(
"8BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
238 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
260 DPRINT(
"16BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
271 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
293 DPRINT(
"24BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
304 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
326 DPRINT(
"32BPP-dstRect: (%d,%d)-(%d,%d) and Width of '%d'.\n",
337 for (
j=BltInfo->
DestRect.
top; j<BltInfo->DestRect.bottom;
j++)
370 LONG SourceX, SourceY;
401 for (DestY = BltInfo->
DestRect.
top; DestY < BltInfo->DestRect.bottom; DestY++)
415 Dest = *((
PBYTE)DestBits);
416 NoBits = 31 - (DestX & 31);
429 for (
k = 31 - NoBits;
k >= 0;
k++)
430 Pattern |= (
DIB_GetSourceIndex(PatternObj, (
X + BrushOrigin.x +
k) % PatternWidth, PatternY) << (31 -
k));
434 Dest &= ~((1 << (31 - NoBits)) - 1);
435 Dest |= *((
PBYTE)DestBits) & ((1 << (31 - NoBits)) - 1);
444 for (; DestX < RoundedRight; DestX += 32, DestBits++, SourceX += 32)
475 if (DestX < BltInfo->DestRect.right)
515 for (DestY = DestRect->
top; DestY< DestRect->
bottom; DestY++)
521 #endif // !_USE_DIBLIB_
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
BOOLEAN DIB_1BPP_ColorFill(SURFOBJ *DestSurface, RECTL *DestRect, ULONG color)
XLATEOBJ * XlateSourceToDest
ULONG DIB_16BPP_GetPixel(SURFOBJ *, LONG, LONG)
VOID DIB_1BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
#define BitsPerFormat(Format)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
ULONG DIB_24BPP_GetPixel(SURFOBJ *, LONG, LONG)
GLint GLint GLint GLint GLint x
_In_ HFONT _Out_ PUINT Height
ULONG DIB_32BPP_GetPixel(SURFOBJ *, LONG, LONG)
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_ RECTL _In_ ULONG iTransColor
ULONG DIB_4BPP_GetPixel(SURFOBJ *, LONG, LONG)
static BOOLEAN DIB_1BPP_BitBltSrcCopy_From1BPP(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, XLATEOBJ *pxlo, PRECTL DestRect, POINTL *SourcePoint, BOOLEAN bTopToBottom, BOOLEAN bLeftToRight)
#define DIB_GetSource(SourceSurf, sx, sy, ColorTranslation)
#define DIB_GetSourceIndex(SourceSurf, sx, sy)
#define DEC_OR_INC(var, decTrue, amount)
#define ROP4_USES_SOURCE(Rop4)
FORCEINLINE LONG RECTL_lGetWidth(_In_ const RECTL *prcl)
ULONG DIB_DoRop(ULONG Rop, ULONG Dest, ULONG Source, ULONG Pattern)
ULONG DIB_1BPP_GetPixel(SURFOBJ *SurfObj, LONG x, LONG y)
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
ULONG DIB_8BPP_GetPixel(SURFOBJ *, LONG, LONG)
_In_ WDFCOLLECTION _In_ ULONG Index
GLenum const GLvoid * addr
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
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
#define ROP4_USES_PATTERN(Rop4)
GLint GLint GLint GLint GLint GLint y
BOOLEAN DIB_1BPP_BitBltSrcCopy(PBLTINFO BltInfo)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
FORCEINLINE LONG RECTL_lGetHeight(_In_ const RECTL *prcl)
BOOLEAN DIB_1BPP_BitBlt(PBLTINFO BltInfo)
VOID DIB_1BPP_VLine(SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c)
#define ALIGN_UP_BY(size, align)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
#define ExFreePoolWithTag(_P, _T)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
BOOLEAN DIB_1BPP_TransparentBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, RECTL *DestRect, RECTL *SourceRect, XLATEOBJ *ColorTranslation, ULONG iTransColor)
VOID DIB_1BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo