74 #define HANDLE_LIST_INC 20 76 #define METAFILE_MEMORY 1 77 #define METAFILE_DISK 2 79 #define SAPCALLBACKDELAY 244 88 #define ROP_USES_SOURCE(Rop) (((Rop) << 2 ^ Rop) & 0xCC0000) 89 #define RCAST(_Type, _Value) (*((_Type*)&_Value)) 149 #define PDEV_UMPD_ID 0xFEDCBA98 151 #define UMPDEV_NO_ESCAPE 0x0002 152 #define UMPDEV_SUPPORT_ESCAPE 0x0004 171 #define LOCALFONT_COUNT 10 287 UINT *BitmapInfoSize,
490 #define FOtoF(pfo) EFtoF((EFLOAT_S*)pfo) 492 #define FOtoF(pfo) (*(pfo)) 500 #if defined(_M_IX86) && defined(__GNUC__) 502 __asm__ __volatile__ (
"fistpl %0" :
"=m" (
result) :
"t" (
f) :
"st");
504 #elif defined(_M_IX86) && defined(_MSC_VER) 513 return (
int)(
f >= 0 ?
f+0.5 :
f-0.5);
606 #define HANDLE_METADC0P(_RetType, _Func, dwError, hdc, ...) \ 607 if (GDI_HANDLE_GET_TYPE(hdc) != GDILoObjType_LO_DC_TYPE) \ 609 DWORD_PTR dwResult; \ 610 if (METADC_Dispatch(DCFUNC_##_Func, &dwResult, (DWORD_PTR)dwError, hdc)) \ 612 return (_RetType)dwResult; \ 616 #define HANDLE_METADC(_RetType, _Func, dwError, hdc, ...) \ 617 if (GDI_HANDLE_GET_TYPE(hdc) != GDILoObjType_LO_DC_TYPE) \ 619 DWORD_PTR dwResult = 1; \ 620 if (METADC_Dispatch(DCFUNC_##_Func, &dwResult, (DWORD_PTR)dwError, hdc, __VA_ARGS__)) \ 622 return (_RetType)dwResult; \ 722 #define HANDLE_METADC2(_RetType, _Func, hdc, ...) \ 723 if (GDI_HANDLE_GET_TYPE(hdc) != GDILoObjType_LO_DC_TYPE) \ 726 if (METADC_##_Func(&result, hdc, __VA_ARGS__)) \ 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 * u
HGDIOBJ WINAPI GetDCObject(HDC, INT)
HPEN WINAPI GdiSelectPen(_In_ HDC hdc, _In_ HPEN hpen)
VOID HEAP_free(LPVOID memory)
struct tagMF_ENTRY * PMF_ENTRY
struct _GDIBSSETBRHORG GDIBSSETBRHORG
HDC WINAPI GdiConvertAndCheckDC(HDC hdc)
int FASTCALL DocumentEventEx(PVOID, HANDLE, HDC, int, ULONG, PVOID, ULONG, PVOID)
HANDLE(WINAPI * COMMITSPOOLDATA)(HANDLE, HANDLE, DWORD)
_In_ ULONG_PTR _In_opt_ DESIGNVECTOR * pdv
BOOL(WINAPI * READPRINTER)(HANDLE, PVOID, DWORD, PDWORD)
FORCEINLINE int _lrintf(float f)
struct _devicemodeW * PDEVMODEW
_In_ int _Inout_ LPRECT lprc
LONG(WINAPI * DOCUMENTPROPERTIESW)(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD)
BOOL(WINAPI * ENDDOCPRINTER)(HANDLE)
INT(WINAPI * DOCUMENTEVENT)(HANDLE, HDC, INT, ULONG, PVOID, ULONG, PVOID)
VOID FASTCALL NewTextMetricW2A(NEWTEXTMETRICA *tma, NEWTEXTMETRICW *tmw)
BOOL WINAPI METADC_DeleteDC(_In_ HDC hdc)
PVOID WINAPI GdiGetClientObjLink(_In_ HGDIOBJ hobj)
PVOID WINAPI GdiRemoveClientObjLink(_In_ HGDIOBJ hobj)
BOOL FASTCALL GdiSetLDC(HDC hdc, PVOID pvLDC)
int WINAPI GdiGetBitmapBitsSize(BITMAPINFO *lpbmi)
FONT_ATTR lfa[LOCALFONT_COUNT]
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
UINT WINAPI UserRealizePalette(HDC hDC)
BOOL(WINAPI * CLOSESPOOLFILEHANDLE)(HANDLE, HANDLE)
BOOL WINAPI METADC_PatBlt(_In_ HDC hdc, _In_ INT xLeft, _In_ INT yTop, _In_ INT nWidth, _In_ INT nHeight, _In_ DWORD dwRop)
HGDIOBJ WINAPI GdiCreateClientObj(_In_ PVOID pvObject, _In_ GDILOOBJTYPE eObjType)
GLint GLint GLint GLint GLint x
BOOL(WINAPI * ENDPAGEPRINTER)(HANDLE)
struct tagMF_ENTRY MF_ENTRY
BOOL(WINAPI * CLOSEPRINTER)(HANDLE)
BOOL(WINAPI * SPLREADPRINTER)(HANDLE, LPBYTE *, DWORD)
VOID FASTCALL FONT_TextMetricWToA(const TEXTMETRICW *ptmW, LPTEXTMETRICA ptmA)
BOOL(WINAPI * RESETPRINTERW)(HANDLE, LPPRINTER_DEFAULTSW)
FLOATL FASTCALL EFtoF(EFLOAT_S *efp)
static char memory[1024 *256]
BOOL(WINAPI * SPLDRIVERUNLOADCOMPLETE)(LPWSTR)
VOID NTAPI LogFontA2W(LPLOGFONTW pW, CONST LOGFONTA *pA)
DWORD(WINAPI * QUERYSPOOLMODE)(HANDLE, DWORD, DWORD)
FORCEINLINE PRGN_ATTR GdiGetRgnAttr(HRGN hrgn)
ULONG Buffer[GDI_BATCH_BUFFER_SIZE]
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BOOL WINAPI LoadLPK(INT LpkFunctionID)
BOOL WINAPI GdiCreateClientObjLink(_In_ HGDIOBJ hobj, _In_ PVOID pvObject)
BOOL(WINAPI * GETPRINTERW)(HANDLE, DWORD, LPBYTE, DWORD, LPDWORD)
__asm__("\t.globl GetPhys\n" "GetPhys:\t\n" "mflr 0\n\t" "stwu 0,-16(1)\n\t" "mfmsr 5\n\t" "andi. 6,5,0xffef\n\t" "mtmsr 6\n\t" "isync\n\t" "sync\n\t" "lwz 3,0(3)\n\t" "mtmsr 5\n\t" "isync\n\t" "sync\n\t" "lwz 0,0(1)\n\t" "addi 1,1,16\n\t" "mtlr 0\n\t" "blr")
BOOL METADC_Dispatch(_In_ DCFUNC eFunction, _Out_ PDWORD_PTR pdwResult, _In_ DWORD_PTR dwError, _In_ HDC hdc,...)
BOOL WINAPI CalculateColorTableSize(CONST BITMAPINFOHEADER *BitmapInfoHeader, UINT *ColorSpec, UINT *ColorTableSize)
VOID WINAPI GdiInitializeLanguagePack(_In_ DWORD InitParam)
struct _GDIBSPPATBLT GDIBSPPATBLT
struct _GDIBSOBJECT GDIBSOBJECT
struct tagMETAFILEDC METAFILEDC
DWORD WINAPI GdiGetCodePage(HDC)
NTSTATUS HEAP_strdupA2W(LPWSTR *ppszW, LPCSTR lpszA)
BOOL FASTCALL EndPagePrinterEx(PVOID, HANDLE)
struct _PRINTER_DEFAULTSW * LPPRINTER_DEFAULTSW
DWORD(WINAPI * LPKGCP)(HDC hdc, LPCWSTR lpString, INT uCount, INT nMaxExtent, LPGCP_RESULTSW lpResults, DWORD dwFlags, DWORD dwUnused)
HGDIOBJ WINAPI GdiFixUpHandle(HGDIOBJ hGO)
PGDI_TABLE_ENTRY GdiHandleTable
#define GDI_HANDLE_GET_TYPE(h)
VOID NTAPI LogFontW2A(LPLOGFONTA pA, CONST LOGFONTW *pW)
int WINAPI GdiAddFontResourceW(LPCWSTR lpszFilename, FLONG fl, DESIGNVECTOR *pdv)
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
VOID GdiSAPCallback(PLDC pldc)
BOOL FASTCALL DeleteRegion(HRGN)
PLDC FASTCALL GdiGetLDC(HDC hDC)
BOOL(WINAPI * STARTPAGEPRINTER)(HANDLE)
BOOL GdiGetHandleUserData(HGDIOBJ hGdiObj, DWORD ObjectType, PVOID *UserData)
DWORD(WINAPI * STARTDOCPRINTERW)(HANDLE, DWORD, PBYTE)
DWORD WINAPI GetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
struct _GDIBSTEXTOUT GDIBSTEXTOUT
PGDI_SHARED_HANDLE_TABLE GdiSharedHandleTable
BOOL(WINAPI * LPKGTEP)(HDC hdc, LPCWSTR lpString, INT cString, INT nMaxExtent, LPINT lpnFit, LPINT lpnDx, LPSIZE lpSize, DWORD dwUnused, int unknown)
VOID FASTCALL NewTextMetricExW2A(NEWTEXTMETRICEXA *tma, NEWTEXTMETRICEXW *tmw)
PVOID WINAPI GdiDeleteClientObj(_In_ HGDIOBJ hobj)
HANDLE(WINAPI * GETSPOOLFILEHANDLE)(HANDLE)
struct tagMETAFILEDC * PMETAFILEDC
BOOL(WINAPI * QUERYCOLORPROFILE)(HANDLE, PDEVMODEW, ULONG, VOID *, ULONG, FLONG)
GDI_TEB_BATCH GdiTebBatch
static const WCHAR fontW[]
union _LARGE_INTEGER LARGE_INTEGER
HBRUSH WINAPI GdiSelectBrush(_In_ HDC hdc, _In_ HBRUSH hbr)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
struct _LOCALFONT LOCALFONT
BOOL(WINAPI * GETPRINTERDRIVERW)(HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD)
HFONT WINAPI GdiSelectFont(_In_ HDC hdc, _In_ HFONT hfont)
struct _UMPDEV * pumpdNext
struct tagENHMETAFILE ENHMETAFILE
struct _GDIBSEXTSELCLPRGN GDIBSEXTSELCLPRGN
VOID WINAPI GdiSetLastError(DWORD dwErrCode)
PVOID HEAP_alloc(DWORD len)
struct _GDIBSPATBLT GDIBSPATBLT
BOOL(WINAPI * ABORTPRINTER)(HANDLE)
struct _GDIBSEXTTEXTOUT GDIBSEXTTEXTOUT
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
_In_ UINT _In_ DWORD _Out_ DWORD * pdwResult
HGDIOBJ FASTCALL hGetPEBHandle(HANDLECACHETYPE, COLORREF)
VOID WINAPI METADC_DeleteObject(HGDIOBJ hobj)
DWORD WINAPI GetAndSetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
BOOL WINAPI METADC_ExtTextOutW(HDC hdc, INT x, INT y, UINT fuOptions, const RECT *lprc, LPCWSTR lpString, UINT cchString, const INT *lpDx)
BOOL WINAPI GetETM(HDC hdc, EXTTEXTMETRIC *petm)
OPENPRINTERW fpOpenPrinterW
RTL_CRITICAL_SECTION semLocal
GLint GLint GLint GLint GLint GLint y
LPKGCP LpkGetCharacterPlacement
_In_ UINT _In_ DWORD dwIn
enum _HANDLECACHETYPE HANDLECACHETYPE
BOOL(WINAPI * SEEKPRINTER)(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD, BOOL)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
BOOL(WINAPI * ISVALIDDEVMODEW)(PDEVMODEW, size_t)
INT(CALLBACK * EMFPLAYPROC)(HDC hdc, INT iFunction, HANDLE hPageQuery)
BOOL WINAPI METADC_GetAndSetDCDWord(_Out_ PDWORD pdwResult, _In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
LPBITMAPINFO WINAPI ConvertBitmapInfo(CONST BITMAPINFO *BitmapInfo, UINT ColorSpec, UINT *BitmapInfoSize, BOOL FollowedByData)
FORCEINLINE PVOID GdiAllocBatchCommand(HDC hdc, USHORT Cmd)
BOOL FASTCALL LoadTheSpoolerDrv(VOID)
CLOSEPRINTER fpClosePrinter
BOOL(WINAPI * LPKETO)(HDC hdc, int x, int y, UINT fuOptions, const RECT *lprc, LPCWSTR lpString, UINT uCount, const INT *lpDx, INT unknown)
enum GDILoObjType GDILOOBJTYPE
VOID WINAPI EnumLogFontExW2A(LPENUMLOGFONTEXA fontA, CONST ENUMLOGFONTEXW *fontW)
struct tagENHMETAFILE * PENHMETAFILE
BOOL(WINAPI * OPENPRINTERW)(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW)
union _LARGE_INTEGER * PLARGE_INTEGER
LPWSTR(WINAPI * STARTDOCDLGW)(HANDLE, DOCINFOW *)
BOOL WINAPI GdiValidateHandle(HGDIOBJ)
DWORD(WINAPI * QUERYREMOTEFONTS)(DWORD, DWORD, DWORD)
LPKGTEP LpkGetTextExtentExPoint
INT WINAPI METADC16_Escape(_In_ HDC hdc, _In_ INT nEscape, _In_ INT cbInput, _In_ LPCSTR lpvInData, _Out_ LPVOID lpvOutData)
VOID WINAPI InitializeLpkHooks(_In_ FARPROC *hookfuncs)
struct _LOCALFONT * PLOCALFONT