17 { 0x00, 0x00, 0x00, 0x00 },
18 { 0x00, 0x00, 0x80, 0x00 },
19 { 0x00, 0x80, 0x00, 0x00 },
20 { 0x00, 0x80, 0x80, 0x00 },
21 { 0x80, 0x00, 0x00, 0x00 },
22 { 0x80, 0x00, 0x80, 0x00 },
23 { 0x80, 0x80, 0x00, 0x00 },
24 { 0xc0, 0xc0, 0xc0, 0x00 },
25 { 0xc0, 0xdc, 0xc0, 0x00 },
26 { 0xf0, 0xca, 0xa6, 0x00 },
27 { 0xf0, 0xfb, 0xff, 0x00 },
28 { 0xa4, 0xa0, 0xa0, 0x00 },
29 { 0x80, 0x80, 0x80, 0x00 },
30 { 0x00, 0x00, 0xff, 0x00 },
31 { 0x00, 0xff, 0x00, 0x00 },
32 { 0x00, 0xff, 0xff, 0x00 },
33 { 0xff, 0x00, 0x00, 0x00 },
34 { 0xff, 0x00, 0xff, 0x00 },
35 { 0xff, 0xff, 0x00, 0x00 },
36 { 0xff, 0xff, 0xff, 0x00 }
47 ULONG i, cBitsPixel, cColors;
63 cColors = 1 << cBitsPixel;
74 DPRINT1(
"Failed to allocate palette.\n");
98 for (
i = 0;
i < cColors;
i++)
115 for (
i = 0;
i < cColors;
i++)
150 for (
i = 0;
i < cColors; ++
i)
153 COLORREF crColor =
RGB(colors[
i].rgbRed, colors[
i].rgbGreen, colors[
i].rgbBlue);
165 for (
i = 0;
i < cColors;
i++)
179 ULONG flRedMask, flGreenMask, flBlueMask;
198 flRedMask = pdwColors[0];
199 flGreenMask = pdwColors[1];
200 flBlueMask = pdwColors[2];
207 if (cBitsPixel == 16)
211 flGreenMask = 0x03E0;
217 flRedMask = 0xFF0000;
218 flGreenMask = 0x00FF00;
219 flBlueMask = 0x0000FF;
258 if (!bmi || !Bits)
return 0;
261 if ((bmi->bmiHeader.biCompression ==
BI_RGB) ||
267 bmi->bmiHeader.biBitCount);
270 else if (bmi->bmiHeader.biSizeImage != 0)
273 cjSizeImage = bmi->bmiHeader.biSizeImage;
278 DPRINT1(
"Compressed format without a size\n");
283 if ((cjSizeImage >
cjMaxBits) || (cjSizeImage == 0))
285 DPRINT1(
"Invalid bitmap size! cjSizeImage = %lu, cjMaxBits = %lu\n",
294 bmi->bmiHeader.biCompression),
301 DPRINT1(
"Error: Could not create a bitmap.\n");
309 if(!(psurfSrc && psurfDst))
311 DPRINT1(
"Error: Could not lock surfaces\n");
327 RGB(0xff, 0xff, 0xff),
328 RGB(0xff, 0xff, 0xff),
331 rcDst.
top = StartScan;
398 if ((
x + NumPixels) >
Width)
425 if (
i >= (BitsSize - 1))
445 ToSkip = (NumPixels / 2) + (NumPixels & 1);
447 if ((
i + ToSkip) > BitsSize)
449 ToSkip = (ToSkip + 1) & ~1;
451 if ((
x + NumPixels) >
Width)
485 IN BOOL bTransformCoordinates,
505 if (!pbmiSafe)
return 0;
521 DPRINT(
"StartScan %d ScanLines %d Bits %p bmi %p ColorUse %d\n"
522 " Height %d Width %d biSizeImage %d\n"
523 " biHeight %d biWidth %d biBitCount %d\n"
524 " XSrc %d YSrc %d XDest %d YDest %d\n",
525 StartScan, ScanLines, Bits, bmi, ColorUse,
527 bmi->bmiHeader.biHeight, bmi->bmiHeader.biWidth,
528 bmi->bmiHeader.biBitCount,
529 XSrc, YSrc, XDest, YDest);
533 ScanLines =
min(ScanLines,
abs(bmi->bmiHeader.biHeight) - StartScan);
559 if (bTransformCoordinates)
563 rcDest.
left += pDC->ptlDCOrig.x;
564 rcDest.
top += pDC->ptlDCOrig.y;
567 rcDest.
top += StartScan;
577 SourceSize.
cx = bmi->bmiHeader.biWidth;
578 SourceSize.
cy = ScanLines;
586 bmi->bmiHeader.biCompression),
588 bmi->bmiHeader.biSizeImage,
607 if ((bmi->bmiHeader.biCompression ==
BI_RLE8) || (bmi->bmiHeader.biCompression ==
BI_RLE4))
611 bmi->bmiHeader.biCompression,
639 pSurf = pDC->dclevel.pSurface;
653 RGB(0xff, 0xff, 0xff),
654 pDC->pdcattr->crBackgroundClr,
655 pDC->pdcattr->crForegroundClr);
660 DPRINT(
"BitsToDev with rcDest=(%d|%d) (%d|%d), ptSource=(%d|%d) w=%d h=%d\n",
662 ptSource.
x, ptSource.
y, SourceSize.
cx, SourceSize.
cy);
668 ptSource.
y -= SourceSize.
cy;
678 pMaskSurf ? &ptSource :
NULL,
689 ret = bResult ? ScanLines : 0;
729 DPRINT(
"Entered GreGetDIBitsInternal()\n");
759 if(bitmap_type == -1)
761 DPRINT1(
"Wrong bitmap format\n");
766 else if(bitmap_type == 0)
776 DPRINT1(
"Error, could not convert the BITMAPCOREINFO!\n");
780 rgbQuads =
Info->bmiColors;
805 Info->bmiHeader.biClrUsed = 0;
806 Info->bmiHeader.biClrImportant = 0;
816 Info->bmiHeader.biPlanes = 1;
819 Info->bmiHeader.biHeight,
820 Info->bmiHeader.biBitCount);
821 Info->bmiHeader.biCompression = (
Info->bmiHeader.biBitCount == 16 ||
Info->bmiHeader.biBitCount == 32) ?
823 Info->bmiHeader.biXPelsPerMeter = 0;
824 Info->bmiHeader.biYPelsPerMeter = 0;
826 if (
Info->bmiHeader.biBitCount <= 8 &&
Info->bmiHeader.biClrUsed == 0)
827 Info->bmiHeader.biClrUsed = 1 <<
Info->bmiHeader.biBitCount;
835 Info->bmiHeader.biClrUsed = 1 <<
bpp;
845 if(colors != 256)
Info->bmiHeader.biClrUsed = colors;
846 for(
i = 0;
i < colors;
i++)
848 rgbQuads[
i].rgbRed = psurf->
ppal->IndexedColors[
i].peRed;
849 rgbQuads[
i].rgbGreen = psurf->
ppal->IndexedColors[
i].peGreen;
850 rgbQuads[
i].rgbBlue = psurf->
ppal->IndexedColors[
i].peBlue;
851 rgbQuads[
i].rgbReserved = 0;
856 for(
i = 0;
i < 256;
i++)
864 for(
i = 0;
i < 256;
i++)
885 rgbQuads[
i].rgbReserved = 0;
894 rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = rgbQuads[0].rgbBlue = 0;
895 rgbQuads[0].rgbReserved = 0;
896 rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = rgbQuads[1].rgbBlue = 0xff;
897 rgbQuads[1].rgbReserved = 0;
916 for (
i = 10;
i < 246;
i++)
918 rgbQuads[
i].rgbRed = (
i & 0x07) << 5;
919 rgbQuads[
i].rgbGreen = (
i & 0x38) << 2;
920 rgbQuads[
i].rgbBlue =
i & 0xc0;
921 rgbQuads[
i].rgbReserved = 0;
981 Info->bmiHeader.biPlanes = 1;
983 if(Bits && ScanLines)
995 if (StartScan >=
abs(
Info->bmiHeader.biHeight))
1002 ScanLines =
min(ScanLines,
abs(
Info->bmiHeader.biHeight) - StartScan);
1011 -(
LONG)ScanLines : ScanLines;
1019 DPRINT1(
"Unable to create a DIB Section!\n");
1076 ScanLines = (
UINT)newLines;
1083 if (width < 0 || Info->bmiHeader.biSizeImage == 0)
1125 if (
iUsage > 2)
return 0;
1138 cjAlloc =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD);
1241 PSURFACE psurfTmp = 0, psurfDst = 0;
1250 HPALETTE hPal =
NULL;
1251 ULONG BmpFormat = 0;
1252 INT LinesCopied = 0;
1255 if (dwUsage > 2)
return 0;
1260 DPRINT1(
"Error, Invalid Parameter.\n");
1276 cjAlloc =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD);
1315 if (!pdc->dclevel.pSurface)
1359 DPRINT1(
"NtGdiCreateCompatibleDC failed to create hdc.\n");
1369 DPRINT1(
"NtGdiCreateCompatibleBitmap failed to create bitmap.\n");
1396 if (cxSrc == cxDst && cySrc == cyDst)
1425 DPRINT1(
"Could not lock dc\n");
1480 psurfDst = pdc->dclevel.pSurface;
1486 RGB(0xff, 0xff, 0xff),
1487 pdc->pdcattr->crBackgroundClr,
1488 pdc->pdcattr->crForegroundClr);
1500 &pdc->eboFill.BrushObject,
1551 ULONG BmpFormat = 0;
1567 if (col ==
RGB(0, 0, 0))
1573 fColor = (col !=
RGB(0xff,0xff,0xff));
1590 DPRINT1(
"IntCreateCompatibleBitmap() failed!\n");
1598 if (Palette ==
NULL)
1691 DPRINT1(
"Got an exception! pjInit = %p\n", pjInit);
1738 DPRINT1(
"NtGdiCreateCompatibleDC failed\n");
1750 DPRINT1(
"Failed to lock hdcDest %p\n", hdcDest);
1778 Bmp =
IntCreateDIBitmap(Dc,
cx,
cy, planes,
bpp,
compression, fInit, pjInit,
cjMaxBits,
pbmi,
iUsage);
1797 UINT cjInfo, cjBits;
1809 if (cjPackedDIB < pbmi->bmiHeader.biSize)
1816 if (cjPackedDIB <= cjInfo)
1822 pjBits = (
PBYTE)pvPackedDIB + cjInfo;
1823 cjBits = cjPackedDIB - cjInfo;
1919 void *mapBits =
NULL;
1930 DPRINT(
"format (%ld,%ld), planes %u, bpp %u, size %lu, colors %lu (%s)\n",
1931 bi->biWidth, bi->biHeight, bi->biPlanes, bi->biBitCount,
1935 if (bi->biCompression ==
BI_RLE4 || bi->biCompression ==
BI_RLE8)
1937 DPRINT1(
"no compressed format allowed\n");
1941 effHeight = bi->biHeight >= 0 ? bi->biHeight : -bi->biHeight;
1953 totalSize = (bi->biSizeImage && (bi->biCompression !=
BI_RGB) && (bi->biCompression !=
BI_BITFIELDS))
1970 DPRINT1(
"ZwQuerySystemInformation failed (0x%lx)\n",
Status);
1975 mapSize = totalSize + (
offset - mapOffset);
1997 if (mapBits) bm.
bmBits = (
char *)mapBits + (
offset - mapOffset);
1999 else if (ovr_pitch &&
offset)
2004 bm.
bmBits = EngAllocUserMem(totalSize, 0);
2007 DPRINT1(
"Failed to allocate memory\n");
2021 BitmapFormat(bi->biBitCount * bi->biPlanes, bi->biCompression),
2029 DPRINT1(
"GreCreateBitmapEx failed\n");
2036 DPRINT1(
"SURFACE_LockSurface failed\n");
2046 bmp->hSecure = hSecure;
2049 bmp->biClrImportant = bi->biClrImportant;
2132 *planes =
header->biPlanes;
2138 DPRINT1(
"(%u): unknown/wrong size for header\n",
header->biSize );
2164 unsigned int colorsize;
2182 if (
info->bmiHeader.biBitCount == 0)
2184 return info->bmiHeader.biSize;
2186 colors =
info->bmiHeader.biClrUsed;
2187 if (colors > 256) colors = 256;
2188 if (!colors && (
info->bmiHeader.biBitCount <= 8))
2189 colors = 1 <<
info->bmiHeader.biBitCount;
2192 return size + colors * colorsize;
2210 nNumColors = 1 << lpbmi->bmiHeader.biBitCount;
2211 if (lpbmi->bmiHeader.biClrUsed)
2213 nNumColors =
min(nNumColors, lpbmi->bmiHeader.biClrUsed);
2217 if (ppalNew ==
NULL)
2219 DPRINT1(
"Could not allocate palette\n");
2223 lpIndex = (
USHORT *)((
PBYTE)lpbmi + lpbmi->bmiHeader.biSize);
2225 for (
i = 0;
i < nNumColors;
i++)
2246 UINT numColors = 0, ColorsSize = 0;
2251 if(pbmci->bmciHeader.bcBitCount <= 8)
2253 numColors = 1 << pbmci->bmciHeader.bcBitCount;
2256 ColorsSize = numColors *
sizeof(
WORD);
2260 ColorsSize = numColors *
sizeof(
RGBQUAD);
2270 if(!pNewBmi)
return NULL;
2292 for(
i=0;
i<numColors;
i++)
2309 if(converted == orig)
2341 for(
i=0;
i<numColors;
i++)
#define R3_OPINDEX_SRCCOPY
BOOL APIENTRY IntEngCopyBits(SURFOBJ *psoTrg, SURFOBJ *psoSrc, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc)
HBITMAP FASTCALL IntCreateCompatibleBitmap(PDC Dc, INT Width, INT Height, UINT Planes, UINT Bpp)
HBITMAP NTAPI GreCreateBitmapEx(_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cjWidthBytes, _In_ ULONG iFormat, _In_ USHORT fjBitmap, _In_ ULONG cjSizeImage, _In_opt_ PVOID pvBits, _In_ FLONG flags)
HBITMAP NTAPI GreCreateBitmap(_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cPlanes, _In_ ULONG cBitsPixel, _In_opt_ PVOID pvBits)
_In_ fcb _In_ chunk _In_ uint64_t _In_ uint64_t _In_ bool _In_opt_ void _In_opt_ PIRP _In_ LIST_ENTRY _In_ uint8_t compression
static BOOLEAN IntLPtoDP(DC *pdc, PPOINTL ppt, UINT count)
VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdcDest, const RECT *rcDest, PDC pdcSrc, const RECT *rcSrc)
VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
VOID FASTCALL IntUpdateBoundsRect(PDC, PRECTL)
HPALETTE NTAPI GdiSelectPalette(_In_ HDC hDC, _In_ HPALETTE hpal, _In_ BOOL ForceBackground)
FORCEINLINE PDC DC_LockDc(HDC hdc)
#define ERROR_NOT_ENOUGH_MEMORY
HBITMAP NTAPI GreCreateDIBitmapFromPackedDIB(_In_reads_(cjPackedDIB) PVOID pvPackedDIB, _In_ UINT cjPackedDIB, _In_ ULONG uUsage)
static const RGBQUAD DefLogPaletteQuads[20]
BITMAPINFO *FASTCALL DIB_ConvertBitmapInfo(CONST BITMAPINFO *pbmi, DWORD Usage)
int FASTCALL DIB_GetBitmapInfo(const BITMAPINFOHEADER *header, LONG *width, LONG *height, WORD *planes, WORD *bpp, DWORD *compr, DWORD *size)
VOID FASTCALL DIB_FreeConvertedBitmapInfo(BITMAPINFO *converted, BITMAPINFO *orig, DWORD usage)
static INT FASTCALL IntSetDIBits(PDC DC, HBITMAP hBitmap, UINT StartScan, UINT ScanLines, CONST VOID *Bits, ULONG cjMaxBits, CONST BITMAPINFO *bmi, UINT ColorUse)
INT FASTCALL DIB_BitmapInfoSize(const BITMAPINFO *info, WORD coloruse)
W32KAPI INT APIENTRY NtGdiSetDIBitsToDeviceInternal(IN HDC hDC, IN INT XDest, IN INT YDest, IN DWORD Width, IN DWORD Height, IN INT XSrc, IN INT YSrc, IN DWORD StartScan, IN DWORD ScanLines, IN LPBYTE Bits, IN LPBITMAPINFO bmi, IN DWORD ColorUse, IN UINT cjMaxBits, IN UINT cjMaxInfo, IN BOOL bTransformCoordinates, IN OPTIONAL HANDLE hcmXform)
HBITMAP NTAPI GreCreateDIBitmapInternal(IN HDC hDc, IN INT cx, IN INT cy, IN DWORD fInit, IN OPTIONAL LPBYTE pjInit, IN OPTIONAL PBITMAPINFO pbmi, IN DWORD iUsage, IN FLONG fl, IN UINT cjMaxBits, IN HANDLE hcmXform)
HBITMAP APIENTRY NtGdiCreateDIBSection(IN HDC hDC, IN OPTIONAL HANDLE hSection, IN DWORD dwOffset, IN BITMAPINFO *bmi, IN DWORD Usage, IN UINT cjHeader, IN FLONG fl, IN ULONG_PTR dwColorSpace, OUT PVOID *Bits)
HPALETTE FASTCALL DIB_MapPaletteColors(PPALETTE ppalDc, CONST BITMAPINFO *lpbmi)
static HBITMAP IntGdiCreateMaskFromRLE(DWORD Width, DWORD Height, ULONG Compression, const BYTE *Bits, DWORD BitsSize)
INT APIENTRY DIB_GetDIBImageBytes(INT width, INT height, INT depth)
W32KAPI INT APIENTRY NtGdiStretchDIBitsInternal(IN HDC hdc, IN INT xDst, IN INT yDst, IN INT cxDst, IN INT cyDst, IN INT xSrc, IN INT ySrc, IN INT cxSrc, IN INT cySrc, IN OPTIONAL LPBYTE pjInit, IN LPBITMAPINFO pbmi, IN DWORD dwUsage, IN DWORD dwRop, IN UINT cjMaxInfo, IN UINT cjMaxBits, IN HANDLE hcmXform)
PPALETTE NTAPI CreateDIBPalette(_In_ const BITMAPINFO *pbmi, _In_ PDC pdc, _In_ ULONG iUsage)
INT APIENTRY GreGetDIBitsInternal(HDC hDC, HBITMAP hBitmap, UINT StartScan, UINT ScanLines, LPBYTE Bits, LPBITMAPINFO Info, UINT Usage, UINT MaxBits, UINT MaxInfo)
HBITMAP APIENTRY NtGdiCreateDIBitmapInternal(IN HDC hDc, IN INT cx, IN INT cy, IN DWORD fInit, IN OPTIONAL LPBYTE pjInit, IN OPTIONAL LPBITMAPINFO pbmi, IN DWORD iUsage, IN UINT cjMaxInitInfo, IN UINT cjMaxBits, IN FLONG fl, IN HANDLE hcmXform)
HBITMAP APIENTRY DIB_CreateDIBSection(PDC dc, CONST BITMAPINFO *bmi, UINT usage, LPVOID *bits, HANDLE section, DWORD offset, DWORD ovr_pitch)
HBITMAP FASTCALL IntCreateDIBitmap(PDC Dc, INT width, INT height, UINT planes, UINT bpp, ULONG compression, DWORD init, LPBYTE bits, ULONG cjMaxBits, PBITMAPINFO data, DWORD coloruse)
_Check_return_ _In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS _Out_ UINT _Out_ UINT * Height
_Check_return_ _In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS _Out_ UINT * Width
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
#define ERROR_INVALID_HANDLE
static void cleanup(void)
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
#define GDI_OBJECT_TYPE_PALETTE
GLint GLint GLsizei GLsizei GLsizei depth
GLint GLint GLint GLint GLint x
GLint GLint GLsizei GLsizei height
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei width
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLsizeiptr const GLvoid GLenum usage
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
_Must_inspect_result_ _In_ USAGE _In_ USHORT _In_ USAGE Usage
#define EXCEPTION_EXECUTE_HANDLER
#define ROP4_FROM_INDEX(index)
BOOL APIENTRY IntEngStretchBlt(SURFOBJ *DestObj, SURFOBJ *SourceObj, SURFOBJ *Mask, CLIPOBJ *ClipRegion, XLATEOBJ *ColorTranslation, COLORADJUSTMENT *pca, RECTL *DestRect, RECTL *SourceRect, POINTL *pMaskOrigin, BRUSHOBJ *Brush, POINTL *BrushOrigin, ULONG Mode)
#define WIN32_ROP3_TO_ENG_ROP4(dwRop4)
#define memcpy(s1, s2, n)
#define ExFreePoolWithTag(_P, _T)
static const BYTE masks[8]
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER SectionOffset
#define _Out_writes_bytes_opt_(s)
#define NtCurrentProcess()
_Out_opt_ int _Out_opt_ int * cy
__kernel_entry W32KAPI HBITMAP APIENTRY NtGdiCreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT _In_ UINT _In_ UINT cjMaxInfo
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT _In_ UINT cjMaxBits
__kernel_entry W32KAPI HDC APIENTRY NtGdiCreateCompatibleDC(_In_opt_ HDC hdc)
_In_ DWORD _In_ DWORD dwOffset
__kernel_entry W32KAPI BOOL APIENTRY NtGdiBitBlt(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ DWORD rop4, _In_ DWORD crBackColor, _In_ FLONG fl)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiStretchBlt(_In_ HDC hdcDst, _In_ INT xDst, _In_ INT yDst, _In_ INT cxDst, _In_ INT cyDst, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ INT cxSrc, _In_ INT cySrc, _In_ DWORD dwRop, _In_ DWORD dwBackColor)
_In_ HBITMAP _In_ UINT _In_ UINT cScans
__kernel_entry W32KAPI HBITMAP APIENTRY NtGdiSelectBitmap(_In_ HDC hdc, _In_ HBITMAP hbm)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO pbmi
__kernel_entry W32KAPI HANDLE APIENTRY NtGdiGetDCObject(_In_ HDC hdc, _In_ INT itype)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiDeleteObjectApp(_In_ HANDLE hobj)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT iUsage
_In_ HBITMAP _In_ UINT iStartScan
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
PULONG MinorVersion OPTIONAL
BITMAPCOREHEADER bmciHeader
PALETTEENTRY * IndexedColors
struct _PALETTE *const ppal
BITMAPINFOHEADER bmiHeader
#define WIDTH_BYTES_ALIGN32(cx, bpp)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
static int __cdecl compr(const void *a, const void *b)
VOID DIB_1BPP_HLine(SURFOBJ *, LONG, LONG, LONG, ULONG)
BOOL APIENTRY IntEngBitBlt(SURFOBJ *psoTrg, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush, ROP4 Rop4)
VOID FASTCALL SetLastNtError(_In_ NTSTATUS Status)
ULONG FASTCALL BitmapFormat(ULONG cBits, ULONG iCompression)
#define SURFACE_ShareUnlockSurface(pBMObj)
FORCEINLINE VOID SURFACE_vSetPalette(_Inout_ PSURFACE psurf, _In_ PPALETTE ppal)
#define SURFACE_ShareLockSurface(hBMObj)
#define BitsPerFormat(Format)
#define DIB_PAL_BRUSHHACK
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
PPALETTE NTAPI PALETTE_AllocPalWithHandle(_In_ ULONG iMode, _In_ ULONG cColors, _In_opt_ const PALETTEENTRY *pEntries, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
PPALETTE NTAPI PALETTE_AllocPalette(_In_ ULONG iMode, _In_ ULONG cColors, _In_opt_ const PALETTEENTRY *pEntries, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
#define PALETTE_UnlockPalette(pPalette)
FORCEINLINE VOID PALETTE_vSetRGBColorForIndex(PPALETTE ppal, ULONG ulIndex, COLORREF crColor)
#define PALETTE_ShareLockPalette(hpal)
#define PALETTE_ShareUnlockPalette(ppal)
FORCEINLINE ULONG PALETTE_ulGetRGBColorFromIndex(PPALETTE ppal, ULONG ulIndex)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
FORCEINLINE VOID RECTL_vSetRect(_Out_ RECTL *prcl, _In_ LONG left, _In_ LONG top, _In_ LONG right, _In_ LONG bottom)
FORCEINLINE VOID RECTL_vOffsetRect(_Inout_ RECTL *prcl, _In_ INT cx, _In_ INT cy)
ENGAPI BOOL APIENTRY EngDeleteSurface(_In_ _Post_ptr_invalid_ HSURF hsurf)
ENGAPI SURFOBJ *APIENTRY EngLockSurface(_In_ HSURF hsurf)
_In_ ULONG _In_ ULONG rgb
ENGAPI VOID APIENTRY EngFreeUserMem(_Pre_notnull_ __drv_freesMem(UserMem) PVOID pv)
typedef HSURF(APIENTRY FN_DrvEnableSurface)(_In_ DHPDEV dhpdev)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
ENGAPI HANDLE APIENTRY EngSecureMem(_In_reads_bytes_(cjLength) PVOID Address, _In_ ULONG cjLength)
ENGAPI VOID APIENTRY EngUnsecureMem(_In_ HANDLE hSecure)
ENGAPI VOID APIENTRY EngUnlockSurface(_In_ _Post_ptr_invalid_ SURFOBJ *pso)
W32KAPI INT WINAPI NtGdiGetDIBitsInternal(HDC hdc, HBITMAP hbitmap, UINT startscan, UINT lines, void *bits, BITMAPINFO *info, UINT coloruse, UINT max_bits, UINT max_info)
#define ERROR_NO_SYSTEM_RESOURCES
_In_ const BITMAPINFO _In_ UINT _In_opt_ HANDLE hSection
struct _BITMAPCOREINFO * PBITMAPCOREINFO
struct tagBITMAPCOREHEADER BITMAPCOREHEADER
struct BITMAPV4HEADER * PBITMAPV4HEADER
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
VOID NTAPI EXLATEOBJ_vCleanup(_Inout_ PEXLATEOBJ pexlo)