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 dstsurf=(%d|%d) (%d|%d), src=(%d|%d) w=%d h=%d\n",
633 ptSource.
x, ptSource.
y, SourceSize.
cx, SourceSize.
cy);
641 pMaskSurf ? &ptSource :
NULL,
652 ret = bResult ? ScanLines : 0;
693 DPRINT(
"Entered GreGetDIBitsInternal()\n");
723 if(bitmap_type == -1)
725 DPRINT(
"Wrong bitmap format\n");
730 else if(bitmap_type == 0)
740 DPRINT1(
"Error, could not convert the BITMAPCOREINFO!\n");
744 rgbQuads =
Info->bmiColors;
751 if (
width < 0 || (
bpp == 0 && Bits))
766 Info->bmiHeader.biClrUsed = 0;
767 Info->bmiHeader.biClrImportant = 0;
777 Info->bmiHeader.biPlanes = 1;
780 Info->bmiHeader.biHeight,
781 Info->bmiHeader.biBitCount);
782 Info->bmiHeader.biCompression = (
Info->bmiHeader.biBitCount == 16 ||
Info->bmiHeader.biBitCount == 32) ?
784 Info->bmiHeader.biXPelsPerMeter = 0;
785 Info->bmiHeader.biYPelsPerMeter = 0;
787 if (
Info->bmiHeader.biBitCount <= 8 &&
Info->bmiHeader.biClrUsed == 0)
788 Info->bmiHeader.biClrUsed = 1 <<
Info->bmiHeader.biBitCount;
796 Info->bmiHeader.biClrUsed = 1 <<
bpp;
806 if(colors != 256)
Info->bmiHeader.biClrUsed = colors;
807 for(
i = 0;
i < colors;
i++)
809 rgbQuads[
i].rgbRed = psurf->
ppal->IndexedColors[
i].peRed;
810 rgbQuads[
i].rgbGreen = psurf->
ppal->IndexedColors[
i].peGreen;
811 rgbQuads[
i].rgbBlue = psurf->
ppal->IndexedColors[
i].peBlue;
812 rgbQuads[
i].rgbReserved = 0;
817 for(
i = 0;
i < 256;
i++)
825 for(
i = 0;
i < 256;
i++)
846 rgbQuads[
i].rgbReserved = 0;
855 rgbQuads[0].rgbRed = rgbQuads[0].rgbGreen = rgbQuads[0].rgbBlue = 0;
856 rgbQuads[0].rgbReserved = 0;
857 rgbQuads[1].rgbRed = rgbQuads[1].rgbGreen = rgbQuads[1].rgbBlue = 0xff;
858 rgbQuads[1].rgbReserved = 0;
877 for (
i = 10;
i < 246;
i++)
879 rgbQuads[
i].rgbRed = (
i & 0x07) << 5;
880 rgbQuads[
i].rgbGreen = (
i & 0x38) << 2;
881 rgbQuads[
i].rgbBlue =
i & 0xc0;
882 rgbQuads[
i].rgbReserved = 0;
942 Info->bmiHeader.biPlanes = 1;
944 if(Bits && ScanLines)
956 if (StartScan >=
abs(
Info->bmiHeader.biHeight))
963 ScanLines =
min(ScanLines,
abs(
Info->bmiHeader.biHeight) - StartScan);
972 -(
LONG)ScanLines : ScanLines;
980 DPRINT1(
"Unable to create a DIB Section!\n");
1037 ScanLines = (
UINT)newLines;
1066 NtGdiGetDIBitsInternal(
1083 if (
iUsage > 2)
return 0;
1096 cjAlloc =
sizeof(BITMAPV5HEADER) + 256 *
sizeof(
RGBQUAD);
1201 PSURFACE psurfTmp = 0, psurfDst = 0;
1213 if (!pdc->dclevel.pSurface)
1227 if ((sizel.cx == cxSrc) && (sizel.cy == cySrc) && (dwRop ==
SRCCOPY))
1276 DPRINT1(
"Could not lock dc\n");
1332 psurfDst = pdc->dclevel.pSurface;
1338 RGB(0xff, 0xff, 0xff),
1339 pdc->pdcattr->crBackgroundClr,
1340 pdc->pdcattr->crForegroundClr);
1352 &pdc->eboFill.BrushObject,
1387 ULONG BmpFormat = 0;
1403 if (col ==
RGB(0, 0, 0))
1409 fColor = (col !=
RGB(0xff,0xff,0xff));
1426 DPRINT1(
"IntCreateCompatibleBitmap() failed!\n");
1521 DPRINT1(
"Got an exception! pjInit = %p\n", pjInit);
1568 DPRINT1(
"NtGdiCreateCompatibleDC failed\n");
1580 DPRINT1(
"Failed to lock hdcDest %p\n", hdcDest);
1608 Bmp =
IntCreateDIBitmap(Dc,
cx,
cy, planes,
bpp,
compression, fInit, pjInit,
cjMaxBits,
pbmi,
iUsage);
1627 UINT cjInfo, cjBits;
1639 if (cjPackedDIB < pbmi->bmiHeader.biSize)
1646 if (cjPackedDIB <= cjInfo)
1652 pjBits = (
PBYTE)pvPackedDIB + cjInfo;
1653 cjBits = cjPackedDIB - cjInfo;
1749 void *mapBits =
NULL;
1760 DPRINT(
"format (%ld,%ld), planes %u, bpp %u, size %lu, colors %lu (%s)\n",
1761 bi->biWidth, bi->biHeight, bi->biPlanes, bi->biBitCount,
1765 if (bi->biCompression ==
BI_RLE4 || bi->biCompression ==
BI_RLE8)
1767 DPRINT1(
"no compressed format allowed\n");
1771 effHeight = bi->biHeight >= 0 ? bi->biHeight : -bi->biHeight;
1773 bm.bmWidth = bi->biWidth;
1774 bm.bmHeight = effHeight;
1775 bm.bmWidthBytes = ovr_pitch ? ovr_pitch :
WIDTH_BYTES_ALIGN32(bm.bmWidth, bi->biBitCount);
1777 bm.bmPlanes = bi->biPlanes;
1778 bm.bmBitsPixel = bi->biBitCount;
1783 totalSize = (bi->biSizeImage && (bi->biCompression !=
BI_RGB) && (bi->biCompression !=
BI_BITFIELDS))
1784 ? bi->biSizeImage : (
ULONG)(bm.bmWidthBytes * effHeight);
1800 DPRINT1(
"ZwQuerySystemInformation failed (0x%lx)\n",
Status);
1805 mapSize = totalSize + (
offset - mapOffset);
1827 if (mapBits) bm.bmBits = (
char *)mapBits + (
offset - mapOffset);
1829 else if (ovr_pitch &&
offset)
1834 bm.bmBits = EngAllocUserMem(totalSize, 0);
1837 DPRINT1(
"Failed to allocate memory\n");
1852 BitmapFormat(bi->biBitCount * bi->biPlanes, bi->biCompression),
1860 DPRINT1(
"GreCreateBitmapEx failed\n");
1867 DPRINT1(
"SURFACE_LockSurface failed\n");
1877 bmp->hSecure = hSecure;
1880 bmp->biClrImportant = bi->biClrImportant;
1887 if (!
res || !
bmp || !bm.bmBits || !ppalDIB)
1889 DPRINT(
"Got an error res=%p, bmp=%p, bm.bmBits=%p\n",
res,
bmp, bm.bmBits);
1963 *planes =
header->biPlanes;
1969 DPRINT1(
"(%u): unknown/wrong size for header\n",
header->biSize );
1995 unsigned int colorsize;
2009 colors =
info->bmiHeader.biClrUsed;
2010 if (colors > 256) colors = 256;
2011 if (!colors && (
info->bmiHeader.biBitCount <= 8))
2012 colors = 1 <<
info->bmiHeader.biBitCount;
2015 return size + colors * colorsize;
2033 nNumColors = 1 << lpbmi->bmiHeader.biBitCount;
2034 if (lpbmi->bmiHeader.biClrUsed)
2036 nNumColors =
min(nNumColors, lpbmi->bmiHeader.biClrUsed);
2040 if (ppalNew ==
NULL)
2042 DPRINT1(
"Could not allocate palette\n");
2046 lpIndex = (
USHORT *)((
PBYTE)lpbmi + lpbmi->bmiHeader.biSize);
2048 for (
i = 0;
i < nNumColors;
i++)
2069 UINT numColors = 0, ColorsSize = 0;
2074 if(pbmci->bmciHeader.bcBitCount <= 8)
2076 numColors = 1 << pbmci->bmciHeader.bcBitCount;
2079 ColorsSize = numColors *
sizeof(
WORD);
2083 ColorsSize = numColors *
sizeof(
RGBQUAD);
2093 if(!pNewBmi)
return NULL;
2115 for(
i=0;
i<numColors;
i++)
2117 pNewBmi->
bmiColors[
i].rgbRed = pbmci->bmciColors[
i].rgbtRed;
2118 pNewBmi->
bmiColors[
i].rgbGreen = pbmci->bmciColors[
i].rgbtGreen;
2119 pNewBmi->
bmiColors[
i].rgbBlue = pbmci->bmciColors[
i].rgbtBlue;
2132 if(converted == orig)
2164 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
#define IntLPtoDP(pdc, ppt, count)
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
#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)
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]