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;
93 for (
i = 0;
i < cColors;
i++)
110 for (
i = 0;
i < cColors;
i++)
134 for (
i = 0;
i < cColors;
i++)
150 for (
i = 0;
i < cColors;
i++)
164 ULONG flRedMask, flGreenMask, flBlueMask;
183 flRedMask = pdwColors[0];
184 flGreenMask = pdwColors[1];
185 flBlueMask = pdwColors[2];
192 if (cBitsPixel == 16)
196 flGreenMask = 0x03E0;
202 flRedMask = 0xFF0000;
203 flGreenMask = 0x00FF00;
204 flBlueMask = 0x0000FF;
243 if (!bmi || !Bits)
return 0;
246 if ((bmi->bmiHeader.biCompression ==
BI_RGB) ||
252 bmi->bmiHeader.biBitCount);
255 else if (bmi->bmiHeader.biSizeImage != 0)
258 cjSizeImage = bmi->bmiHeader.biSizeImage;
263 DPRINT1(
"Compressed format without a size!");
268 if ((cjSizeImage >
cjMaxBits) || (cjSizeImage == 0))
270 DPRINT1(
"Invalid bitmap size! cjSizeImage = %lu, cjMaxBits = %lu\n",
279 bmi->bmiHeader.biCompression),
286 DPRINT1(
"Error: Could not create a bitmap.\n");
294 if(!(psurfSrc && psurfDst))
296 DPRINT1(
"Error: Could not lock surfaces\n");
312 RGB(0xff, 0xff, 0xff),
313 RGB(0xff, 0xff, 0xff),
316 rcDst.
top = StartScan;
383 if ((
x + NumPixels) > Width)
384 NumPixels = Width -
x;
410 if (
i >= (BitsSize - 1))
430 ToSkip = (NumPixels / 2) + (NumPixels & 1);
432 if ((
i + ToSkip) > BitsSize)
434 ToSkip = (ToSkip + 1) & ~1;
436 if ((
x + NumPixels) > Width)
437 NumPixels = Width -
x;
470 IN BOOL bTransformCoordinates,
490 if (!pbmiSafe)
return 0;
506 ScanLines =
min(ScanLines,
abs(bmi->bmiHeader.biHeight) - StartScan);
530 if (bTransformCoordinates)
534 rcDest.
left += pDC->ptlDCOrig.x;
535 rcDest.
top += pDC->ptlDCOrig.y;
538 rcDest.
top += StartScan;
548 SourceSize.
cx = bmi->bmiHeader.biWidth;
549 SourceSize.
cy = ScanLines;
557 bmi->bmiHeader.biCompression),
559 bmi->bmiHeader.biSizeImage,
578 if ((bmi->bmiHeader.biCompression ==
BI_RLE8) || (bmi->bmiHeader.biCompression ==
BI_RLE4))
582 bmi->bmiHeader.biCompression,
610 pSurf = pDC->dclevel.pSurface;
624 RGB(0xff, 0xff, 0xff),
625 pDC->pdcattr->crBackgroundClr,
626 pDC->pdcattr->crForegroundClr);
631 DPRINT(
"BitsToDev with rcDest=(%d|%d) (%d|%d), ptSource=(%d|%d) w=%d h=%d\n",
633 ptSource.
x, ptSource.
y, SourceSize.
cx, SourceSize.
cy);
639 ptSource.
y -= SourceSize.
cy;
649 pMaskSurf ? &ptSource :
NULL,
660 ret = bResult ? ScanLines : 0;
701 DPRINT(
"Entered GreGetDIBitsInternal()\n");
731 if(bitmap_type == -1)
733 DPRINT1(
"Wrong bitmap format\n");
738 else if(bitmap_type == 0)
748 DPRINT1(
"Error, could not convert the BITMAPCOREINFO!\n");
752 rgbQuads =
Info->bmiColors;
759 if (
width < 0 || (
bpp == 0 && Bits))
774 Info->bmiHeader.biClrUsed = 0;
775 Info->bmiHeader.biClrImportant = 0;
785 Info->bmiHeader.biPlanes = 1;
788 Info->bmiHeader.biHeight,
789 Info->bmiHeader.biBitCount);
790 Info->bmiHeader.biCompression = (
Info->bmiHeader.biBitCount == 16 ||
Info->bmiHeader.biBitCount == 32) ?
792 Info->bmiHeader.biXPelsPerMeter = 0;
793 Info->bmiHeader.biYPelsPerMeter = 0;
795 if (
Info->bmiHeader.biBitCount <= 8 &&
Info->bmiHeader.biClrUsed == 0)
796 Info->bmiHeader.biClrUsed = 1 <<
Info->bmiHeader.biBitCount;
804 Info->bmiHeader.biClrUsed = 1 <<
bpp;
814 if(colors != 256)
Info->bmiHeader.biClrUsed = colors;
815 for(
i = 0;
i < colors;
i++)
817 rgbQuads[
i].rgbRed = psurf->
ppal->IndexedColors[
i].peRed;
818 rgbQuads[
i].rgbGreen = psurf->
ppal->IndexedColors[
i].peGreen;
819 rgbQuads[
i].rgbBlue = psurf->
ppal->IndexedColors[
i].peBlue;
820 rgbQuads[
i].rgbReserved = 0;
825 for(
i = 0;
i < 256;
i++)
833 for(
i = 0;
i < 256;
i++)
854 rgbQuads[
i].rgbReserved = 0;
863 rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = rgbQuads[0].rgbBlue = 0;
864 rgbQuads[0].rgbReserved = 0;
865 rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = rgbQuads[1].rgbBlue = 0xff;
866 rgbQuads[1].rgbReserved = 0;
885 for (
i = 10;
i < 246;
i++)
887 rgbQuads[
i].rgbRed = (
i & 0x07) << 5;
888 rgbQuads[
i].rgbGreen = (
i & 0x38) << 2;
889 rgbQuads[
i].rgbBlue =
i & 0xc0;
890 rgbQuads[
i].rgbReserved = 0;
950 Info->bmiHeader.biPlanes = 1;
952 if(Bits && ScanLines)
964 if (StartScan >=
abs(
Info->bmiHeader.biHeight))
971 ScanLines =
min(ScanLines,
abs(
Info->bmiHeader.biHeight) - StartScan);
980 -(
LONG)ScanLines : ScanLines;
988 DPRINT1(
"Unable to create a DIB Section!\n");
1045 ScanLines = (
UINT)newLines;
1074 NtGdiGetDIBitsInternal(
1091 if (
iUsage > 2)
return 0;
1104 cjAlloc =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD);
1209 PSURFACE psurfTmp = 0, psurfDst = 0;
1221 if (!pdc->dclevel.pSurface)
1235 if ((sizel.cx == cxSrc) && (sizel.cy == cySrc) && (dwRop ==
SRCCOPY))
1284 DPRINT1(
"Could not lock dc\n");
1340 psurfDst = pdc->dclevel.pSurface;
1346 RGB(0xff, 0xff, 0xff),
1347 pdc->pdcattr->crBackgroundClr,
1348 pdc->pdcattr->crForegroundClr);
1360 &pdc->eboFill.BrushObject,
1395 ULONG BmpFormat = 0;
1411 if (col ==
RGB(0, 0, 0))
1417 fColor = (col !=
RGB(0xff,0xff,0xff));
1434 DPRINT1(
"IntCreateCompatibleBitmap() failed!\n");
1529 DPRINT1(
"Got an exception! pjInit = %p\n", pjInit);
1576 DPRINT1(
"NtGdiCreateCompatibleDC failed\n");
1588 DPRINT1(
"Failed to lock hdcDest %p\n", hdcDest);
1616 Bmp =
IntCreateDIBitmap(Dc,
cx,
cy, planes,
bpp,
compression, fInit, pjInit,
cjMaxBits,
pbmi,
iUsage);
1635 UINT cjInfo, cjBits;
1647 if (cjPackedDIB < pbmi->bmiHeader.biSize)
1654 if (cjPackedDIB <= cjInfo)
1660 pjBits = (
PBYTE)pvPackedDIB + cjInfo;
1661 cjBits = cjPackedDIB - cjInfo;
1757 void *mapBits =
NULL;
1768 DPRINT(
"format (%ld,%ld), planes %u, bpp %u, size %lu, colors %lu (%s)\n",
1769 bi->biWidth, bi->biHeight, bi->biPlanes, bi->biBitCount,
1773 if (bi->biCompression ==
BI_RLE4 || bi->biCompression ==
BI_RLE8)
1775 DPRINT1(
"no compressed format allowed\n");
1779 effHeight = bi->biHeight >= 0 ? bi->biHeight : -bi->biHeight;
1781 bm.bmWidth = bi->biWidth;
1782 bm.bmHeight = effHeight;
1783 bm.bmWidthBytes = ovr_pitch ? ovr_pitch :
WIDTH_BYTES_ALIGN32(bm.bmWidth, bi->biBitCount);
1785 bm.bmPlanes = bi->biPlanes;
1786 bm.bmBitsPixel = bi->biBitCount;
1791 totalSize = (bi->biSizeImage && (bi->biCompression !=
BI_RGB) && (bi->biCompression !=
BI_BITFIELDS))
1792 ? bi->biSizeImage : (
ULONG)(bm.bmWidthBytes * effHeight);
1808 DPRINT1(
"ZwQuerySystemInformation failed (0x%lx)\n",
Status);
1813 mapSize = totalSize + (
offset - mapOffset);
1835 if (mapBits) bm.bmBits = (
char *)mapBits + (
offset - mapOffset);
1837 else if (ovr_pitch &&
offset)
1842 bm.bmBits = EngAllocUserMem(totalSize, 0);
1845 DPRINT1(
"Failed to allocate memory\n");
1860 BitmapFormat(bi->biBitCount * bi->biPlanes, bi->biCompression),
1868 DPRINT1(
"GreCreateBitmapEx failed\n");
1875 DPRINT1(
"SURFACE_LockSurface failed\n");
1885 bmp->hSecure = hSecure;
1888 bmp->biClrImportant = bi->biClrImportant;
1895 if (!
res || !
bmp || !bm.bmBits || !ppalDIB)
1897 DPRINT(
"Got an error res=%p, bmp=%p, bm.bmBits=%p\n",
res,
bmp, bm.bmBits);
1971 *planes =
header->biPlanes;
1977 DPRINT1(
"(%u): unknown/wrong size for header\n",
header->biSize );
2003 unsigned int colorsize;
2017 colors =
info->bmiHeader.biClrUsed;
2018 if (colors > 256) colors = 256;
2019 if (!colors && (
info->bmiHeader.biBitCount <= 8))
2020 colors = 1 <<
info->bmiHeader.biBitCount;
2023 return size + colors * colorsize;
2041 nNumColors = 1 << lpbmi->bmiHeader.biBitCount;
2042 if (lpbmi->bmiHeader.biClrUsed)
2044 nNumColors =
min(nNumColors, lpbmi->bmiHeader.biClrUsed);
2048 if (ppalNew ==
NULL)
2050 DPRINT1(
"Could not allocate palette\n");
2054 lpIndex = (
USHORT *)((
PBYTE)lpbmi + lpbmi->bmiHeader.biSize);
2056 for (
i = 0;
i < nNumColors;
i++)
2077 UINT numColors = 0, ColorsSize = 0;
2082 if(pbmci->bmciHeader.bcBitCount <= 8)
2084 numColors = 1 << pbmci->bmciHeader.bcBitCount;
2087 ColorsSize = numColors *
sizeof(
WORD);
2091 ColorsSize = numColors *
sizeof(
RGBQUAD);
2101 if(!pNewBmi)
return NULL;
2123 for(
i=0;
i<numColors;
i++)
2125 pNewBmi->
bmiColors[
i].rgbRed = pbmci->bmciColors[
i].rgbtRed;
2126 pNewBmi->
bmiColors[
i].rgbGreen = pbmci->bmciColors[
i].rgbtGreen;
2127 pNewBmi->
bmiColors[
i].rgbBlue = pbmci->bmciColors[
i].rgbtBlue;
2140 if(converted == orig)
2172 for(
i=0;
i<numColors;
i++)
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)
#define ERROR_INVALID_PARAMETER
GLint GLint GLsizei width
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)
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
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)
ENGAPI BOOL APIENTRY EngDeleteSurface(_In_ _Post_ptr_invalid_ HSURF hsurf)
FORCEINLINE PDC DC_LockDc(HDC hdc)
BITMAPINFOHEADER bmiHeader
#define WIDTH_BYTES_ALIGN32(cx, bpp)
#define SURFACE_ShareUnlockSurface(pBMObj)
HBITMAP NTAPI GreCreateDIBitmapFromPackedDIB(_In_reads_(cjPackedDIB) PVOID pvPackedDIB, _In_ UINT cjPackedDIB, _In_ ULONG uUsage)
#define DIB_PAL_BRUSHHACK
HBITMAP APIENTRY DIB_CreateDIBSection(PDC dc, CONST BITMAPINFO *bmi, UINT usage, LPVOID *bits, HANDLE section, DWORD offset, DWORD ovr_pitch)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO pbmi
#define BitsPerFormat(Format)
struct tagBITMAPINFOHEADER BITMAPINFOHEADER
_Must_inspect_result_ _In_ USAGE _In_ USHORT _In_ USAGE Usage
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT _In_ UINT _In_ UINT cjMaxInfo
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
#define ERROR_INVALID_HANDLE
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)
struct _BITMAPCOREINFO * PBITMAPCOREINFO
static const RGBQUAD DefLogPaletteQuads[20]
PALETTEENTRY * IndexedColors
struct _PALETTE *const ppal
#define ERROR_NOT_ENOUGH_MEMORY
GLint GLint GLint GLint GLint x
HPALETTE FASTCALL DIB_MapPaletteColors(PPALETTE ppalDc, CONST BITMAPINFO *lpbmi)
HBITMAP FASTCALL IntCreateCompatibleBitmap(PDC Dc, INT Width, INT Height, UINT Planes, UINT Bpp)
_In_ HBITMAP _In_ UINT iStartScan
#define SURFACE_ShareLockSurface(hBMObj)
PPALETTE NTAPI CreateDIBPalette(_In_ const BITMAPINFO *pbmi, _In_ PDC pdc, _In_ ULONG iUsage)
INT FASTCALL DIB_BitmapInfoSize(const BITMAPINFO *info, WORD coloruse)
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
#define ERROR_NO_SYSTEM_RESOURCES
struct BITMAPV4HEADER * PBITMAPV4HEADER
static IMAGE_SECTION_HEADER section
FORCEINLINE VOID PALETTE_vSetRGBColorForIndex(PPALETTE ppal, ULONG ulIndex, COLORREF crColor)
_In_ DWORD _In_ DWORD dwOffset
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
BITMAPCOREHEADER bmciHeader
BITMAPINFO *FASTCALL DIB_ConvertBitmapInfo(CONST BITMAPINFO *pbmi, DWORD Usage)
PPALETTE NTAPI PALETTE_AllocPalette(_In_ ULONG iMode, _In_ ULONG cColors, _In_opt_ const PALETTEENTRY *pEntries, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define PALETTE_UnlockPalette(pPalette)
int FASTCALL DIB_GetBitmapInfo(const BITMAPINFOHEADER *header, LONG *width, LONG *height, WORD *planes, WORD *bpp, DWORD *compr, DWORD *size)
#define WIN32_ROP3_TO_ENG_ROP4(dwRop4)
static int __cdecl compr(const void *a, const void *b)
INT APIENTRY GreGetDIBitsInternal(HDC hDC, HBITMAP hBitmap, UINT StartScan, UINT ScanLines, LPBYTE Bits, LPBITMAPINFO Info, UINT Usage, UINT MaxBits, UINT MaxInfo)
#define EXCEPTION_EXECUTE_HANDLER
_Out_opt_ int _Out_opt_ int * cy
NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
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)
ENGAPI VOID APIENTRY EngFreeUserMem(_Pre_notnull_ __drv_freesMem(UserMem) PVOID pv)
BOOL APIENTRY IntEngCopyBits(SURFOBJ *psoTrg, SURFOBJ *psoSrc, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT _In_ UINT cjMaxBits
VOID NTAPI EXLATEOBJ_vCleanup(_Inout_ PEXLATEOBJ pexlo)
ULONG FASTCALL BitmapFormat(ULONG cBits, ULONG iCompression)
#define PALETTE_ShareLockPalette(hpal)
typedef HSURF(APIENTRY FN_DrvEnableSurface)(_In_ DHPDEV dhpdev)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER SectionOffset
#define NtCurrentProcess()
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 _SEH2_YIELD(STMT_)
FORCEINLINE ULONG PALETTE_ulGetRGBColorFromIndex(PPALETTE ppal, ULONG ulIndex)
#define NT_SUCCESS(StatCode)
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)
PPALETTE NTAPI PALETTE_AllocPalWithHandle(_In_ ULONG iMode, _In_ ULONG cColors, _In_opt_ const PALETTEENTRY *pEntries, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
ENGAPI SURFOBJ *APIENTRY EngLockSurface(_In_ HSURF hsurf)
INT APIENTRY DIB_GetDIBImageBytes(INT width, INT height, INT depth)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
FORCEINLINE VOID SURFACE_vSetPalette(_Inout_ PSURFACE psurf, _In_ PPALETTE ppal)
#define ExAllocatePoolWithTag(hernya, size, tag)
GLint GLint GLsizei GLsizei GLsizei depth
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID FASTCALL DIB_FreeConvertedBitmapInfo(BITMAPINFO *converted, BITMAPINFO *orig, DWORD usage)
_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
GLsizeiptr const GLvoid GLenum usage
#define memcpy(s1, s2, n)
VOID FASTCALL SetLastNtError(NTSTATUS Status)
__kernel_entry W32KAPI HDC APIENTRY NtGdiCreateCompatibleDC(_In_opt_ HDC hdc)
GLint GLint GLsizei GLsizei height
FORCEINLINE VOID RECTL_vOffsetRect(_Inout_ RECTL *prcl, _In_ INT cx, _In_ INT cy)
FORCEINLINE VOID RECTL_vSetRect(_Out_ RECTL *prcl, _In_ LONG left, _In_ LONG top, _In_ LONG right, _In_ LONG bottom)
VOID DIB_1BPP_HLine(SURFOBJ *, LONG, LONG, LONG, ULONG)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiDeleteObjectApp(_In_ HANDLE hobj)
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
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
_In_ ULONG _In_ ULONG rgb
ENGAPI VOID APIENTRY EngUnsecureMem(_In_ HANDLE hSecure)
#define PALETTE_ShareUnlockPalette(ppal)
ENGAPI VOID APIENTRY EngUnlockSurface(_In_ _Post_ptr_invalid_ SURFOBJ *pso)
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)
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT iUsage
VOID FASTCALL DC_vPrepareDCsForBlit(PDC pdcDest, const RECT *rcDest, PDC pdcSrc, const RECT *rcSrc)
GLint GLint GLint GLint GLint GLint y
static HBITMAP IntGdiCreateMaskFromRLE(DWORD Width, DWORD Height, ULONG Compression, const BYTE *Bits, DWORD BitsSize)
VOID FASTCALL DC_vFinishBlit(PDC pdc1, PDC pdc2)
VOID FASTCALL IntUpdateBoundsRect(PDC, PRECTL)
#define _Out_writes_bytes_opt_(s)
#define RtlZeroMemory(Destination, Length)
char * cleanup(char *str)
#define RtlCopyMemory(Destination, Source, Length)
ENGAPI HANDLE APIENTRY EngSecureMem(_In_reads_bytes_(cjLength) PVOID Address, _In_ ULONG cjLength)
_In_ HBITMAP _In_ UINT _In_ UINT cScans
#define _SEH2_EXCEPT(...)
#define ExFreePoolWithTag(_P, _T)
#define _SEH2_GetExceptionCode()
static INT FASTCALL IntSetDIBits(PDC DC, HBITMAP hBitmap, UINT StartScan, UINT ScanLines, CONST VOID *Bits, ULONG cjMaxBits, CONST BITMAPINFO *bmi, UINT ColorUse)
_In_ const BITMAPINFO _In_ UINT _In_opt_ HANDLE hSection
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
#define ROP4_FROM_INDEX(index)
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
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)
static BOOLEAN IntLPtoDP(DC *pdc, PPOINTL ppt, UINT count)
HBITMAP NTAPI GreCreateBitmap(_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cPlanes, _In_ ULONG cBitsPixel, _In_opt_ PVOID pvBits)
PULONG MinorVersion OPTIONAL
static const BYTE masks[8]