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!");
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 ScanLines =
min(ScanLines,
abs(bmi->bmiHeader.biHeight) - StartScan);
545 if (bTransformCoordinates)
549 rcDest.
left += pDC->ptlDCOrig.x;
550 rcDest.
top += pDC->ptlDCOrig.y;
553 rcDest.
top += StartScan;
563 SourceSize.
cx = bmi->bmiHeader.biWidth;
564 SourceSize.
cy = ScanLines;
572 bmi->bmiHeader.biCompression),
574 bmi->bmiHeader.biSizeImage,
593 if ((bmi->bmiHeader.biCompression ==
BI_RLE8) || (bmi->bmiHeader.biCompression ==
BI_RLE4))
597 bmi->bmiHeader.biCompression,
625 pSurf = pDC->dclevel.pSurface;
639 RGB(0xff, 0xff, 0xff),
640 pDC->pdcattr->crBackgroundClr,
641 pDC->pdcattr->crForegroundClr);
646 DPRINT(
"BitsToDev with rcDest=(%d|%d) (%d|%d), ptSource=(%d|%d) w=%d h=%d\n",
648 ptSource.
x, ptSource.
y, SourceSize.
cx, SourceSize.
cy);
654 ptSource.
y -= SourceSize.
cy;
664 pMaskSurf ? &ptSource :
NULL,
675 ret = bResult ? ScanLines : 0;
716 DPRINT(
"Entered GreGetDIBitsInternal()\n");
746 if(bitmap_type == -1)
748 DPRINT1(
"Wrong bitmap format\n");
753 else if(bitmap_type == 0)
763 DPRINT1(
"Error, could not convert the BITMAPCOREINFO!\n");
767 rgbQuads =
Info->bmiColors;
774 if (
width < 0 || (
bpp == 0 && Bits))
789 Info->bmiHeader.biClrUsed = 0;
790 Info->bmiHeader.biClrImportant = 0;
800 Info->bmiHeader.biPlanes = 1;
803 Info->bmiHeader.biHeight,
804 Info->bmiHeader.biBitCount);
805 Info->bmiHeader.biCompression = (
Info->bmiHeader.biBitCount == 16 ||
Info->bmiHeader.biBitCount == 32) ?
807 Info->bmiHeader.biXPelsPerMeter = 0;
808 Info->bmiHeader.biYPelsPerMeter = 0;
810 if (
Info->bmiHeader.biBitCount <= 8 &&
Info->bmiHeader.biClrUsed == 0)
811 Info->bmiHeader.biClrUsed = 1 <<
Info->bmiHeader.biBitCount;
819 Info->bmiHeader.biClrUsed = 1 <<
bpp;
829 if(colors != 256)
Info->bmiHeader.biClrUsed = colors;
830 for(
i = 0;
i < colors;
i++)
832 rgbQuads[
i].rgbRed = psurf->
ppal->IndexedColors[
i].peRed;
833 rgbQuads[
i].rgbGreen = psurf->
ppal->IndexedColors[
i].peGreen;
834 rgbQuads[
i].rgbBlue = psurf->
ppal->IndexedColors[
i].peBlue;
835 rgbQuads[
i].rgbReserved = 0;
840 for(
i = 0;
i < 256;
i++)
848 for(
i = 0;
i < 256;
i++)
869 rgbQuads[
i].rgbReserved = 0;
878 rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = rgbQuads[0].rgbBlue = 0;
879 rgbQuads[0].rgbReserved = 0;
880 rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = rgbQuads[1].rgbBlue = 0xff;
881 rgbQuads[1].rgbReserved = 0;
900 for (
i = 10;
i < 246;
i++)
902 rgbQuads[
i].rgbRed = (
i & 0x07) << 5;
903 rgbQuads[
i].rgbGreen = (
i & 0x38) << 2;
904 rgbQuads[
i].rgbBlue =
i & 0xc0;
905 rgbQuads[
i].rgbReserved = 0;
965 Info->bmiHeader.biPlanes = 1;
967 if(Bits && ScanLines)
979 if (StartScan >=
abs(
Info->bmiHeader.biHeight))
986 ScanLines =
min(ScanLines,
abs(
Info->bmiHeader.biHeight) - StartScan);
995 -(
LONG)ScanLines : ScanLines;
1003 DPRINT1(
"Unable to create a DIB Section!\n");
1060 ScanLines = (
UINT)newLines;
1089NtGdiGetDIBitsInternal(
1106 if (
iUsage > 2)
return 0;
1119 cjAlloc =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD);
1223 PSURFACE psurfTmp = 0, psurfDst = 0;
1232 HPALETTE hPal =
NULL;
1233 ULONG BmpFormat = 0;
1234 INT LinesCopied = 0;
1237 if (dwUsage > 2)
return 0;
1242 DPRINT1(
"Error, Invalid Parameter.\n");
1258 cjAlloc =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD);
1297 if (!pdc->dclevel.pSurface)
1341 DPRINT1(
"NtGdiCreateCompatibleDC failed to create hdc.\n");
1351 DPRINT1(
"NtGdiCreateCompatibleBitmap failed to create bitmap.\n");
1378 if (cxSrc == cxDst && cySrc == cyDst)
1388 cxSrc, cySrc, dwRop, 0);
1407 DPRINT1(
"Could not lock dc\n");
1462 psurfDst = pdc->dclevel.pSurface;
1468 RGB(0xff, 0xff, 0xff),
1469 pdc->pdcattr->crBackgroundClr,
1470 pdc->pdcattr->crForegroundClr);
1482 &pdc->eboFill.BrushObject,
1534 ULONG BmpFormat = 0;
1550 if (col ==
RGB(0, 0, 0))
1556 fColor = (col !=
RGB(0xff,0xff,0xff));
1573 DPRINT1(
"IntCreateCompatibleBitmap() failed!\n");
1581 if (Palette ==
NULL)
1674 DPRINT1(
"Got an exception! pjInit = %p\n", pjInit);
1721 DPRINT1(
"NtGdiCreateCompatibleDC failed\n");
1733 DPRINT1(
"Failed to lock hdcDest %p\n", hdcDest);
1761 Bmp =
IntCreateDIBitmap(Dc,
cx,
cy, planes,
bpp,
compression, fInit, pjInit,
cjMaxBits,
pbmi,
iUsage);
1780 UINT cjInfo, cjBits;
1792 if (cjPackedDIB < pbmi->bmiHeader.biSize)
1799 if (cjPackedDIB <= cjInfo)
1805 pjBits = (
PBYTE)pvPackedDIB + cjInfo;
1806 cjBits = cjPackedDIB - cjInfo;
1902 void *mapBits =
NULL;
1913 DPRINT(
"format (%ld,%ld), planes %u, bpp %u, size %lu, colors %lu (%s)\n",
1914 bi->biWidth, bi->biHeight, bi->biPlanes, bi->biBitCount,
1918 if (bi->biCompression ==
BI_RLE4 || bi->biCompression ==
BI_RLE8)
1920 DPRINT1(
"no compressed format allowed\n");
1924 effHeight = bi->biHeight >= 0 ? bi->biHeight : -bi->biHeight;
1926 bm.bmWidth = bi->biWidth;
1927 bm.bmHeight = effHeight;
1928 bm.bmWidthBytes = ovr_pitch ? ovr_pitch :
WIDTH_BYTES_ALIGN32(bm.bmWidth, bi->biBitCount);
1930 bm.bmPlanes = bi->biPlanes;
1931 bm.bmBitsPixel = bi->biBitCount;
1936 totalSize = (bi->biSizeImage && (bi->biCompression !=
BI_RGB) && (bi->biCompression !=
BI_BITFIELDS))
1937 ? bi->biSizeImage : (
ULONG)(bm.bmWidthBytes * effHeight);
1953 DPRINT1(
"ZwQuerySystemInformation failed (0x%lx)\n",
Status);
1958 mapSize = totalSize + (
offset - mapOffset);
1980 if (mapBits) bm.bmBits = (
char *)mapBits + (
offset - mapOffset);
1982 else if (ovr_pitch &&
offset)
1987 bm.bmBits = EngAllocUserMem(totalSize, 0);
1990 DPRINT1(
"Failed to allocate memory\n");
2005 BitmapFormat(bi->biBitCount * bi->biPlanes, bi->biCompression),
2013 DPRINT1(
"GreCreateBitmapEx failed\n");
2020 DPRINT1(
"SURFACE_LockSurface failed\n");
2030 bmp->hSecure = hSecure;
2033 bmp->biClrImportant = bi->biClrImportant;
2040 if (!
res || !
bmp || !bm.bmBits || !ppalDIB)
2042 DPRINT(
"Got an error res=%p, bmp=%p, bm.bmBits=%p\n",
res,
bmp, bm.bmBits);
2116 *planes =
header->biPlanes;
2122 DPRINT1(
"(%u): unknown/wrong size for header\n",
header->biSize );
2148 unsigned int colorsize;
2162 colors =
info->bmiHeader.biClrUsed;
2163 if (colors > 256) colors = 256;
2164 if (!colors && (
info->bmiHeader.biBitCount <= 8))
2165 colors = 1 <<
info->bmiHeader.biBitCount;
2168 return size + colors * colorsize;
2186 nNumColors = 1 << lpbmi->bmiHeader.biBitCount;
2187 if (lpbmi->bmiHeader.biClrUsed)
2189 nNumColors =
min(nNumColors, lpbmi->bmiHeader.biClrUsed);
2193 if (ppalNew ==
NULL)
2195 DPRINT1(
"Could not allocate palette\n");
2199 lpIndex = (
USHORT *)((
PBYTE)lpbmi + lpbmi->bmiHeader.biSize);
2201 for (
i = 0;
i < nNumColors;
i++)
2222 UINT numColors = 0, ColorsSize = 0;
2227 if(pbmci->bmciHeader.bcBitCount <= 8)
2229 numColors = 1 << pbmci->bmciHeader.bcBitCount;
2232 ColorsSize = numColors *
sizeof(
WORD);
2236 ColorsSize = numColors *
sizeof(
RGBQUAD);
2246 if(!pNewBmi)
return NULL;
2268 for(
i=0;
i<numColors;
i++)
2285 if(converted == orig)
2317 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)
#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 GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
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]
#define _Out_writes_bytes_opt_(size)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER SectionOffset
#define NtCurrentProcess()
__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
_Out_opt_ int _Out_opt_ int * cy
#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)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
static int __cdecl compr(const void *a, const void *b)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
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(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)
#define ERROR_NO_SYSTEM_RESOURCES
_In_ const BITMAPINFO _In_ UINT _In_opt_ HANDLE hSection
struct _BITMAPCOREINFO * PBITMAPCOREINFO
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)