HANDLE hPageQuery
);
+typedef BOOL
+(WINAPI* LPKETO)(
+ HDC hdc,
+ int x,
+ int y,
+ UINT fuOptions,
+ const RECT *lprc,
+ LPCWSTR lpString,
+ UINT uCount,
+ const INT *lpDx,
+ INT unknown
+);
+
+typedef DWORD
+(WINAPI* LPKGCP)(
+ HDC hdc,
+ LPCWSTR lpString,
+ INT uCount,
+ INT nMaxExtent,
+ LPGCP_RESULTSW lpResults,
+ DWORD dwFlags,
+ DWORD dwUnused
+);
+
+extern HINSTANCE hLpk;
+extern LPKETO LpkExtTextOut;
+extern LPKGCP LpkGetCharacterPlacement;
+
/* DEFINES *******************************************************************/
#define HANDLE_LIST_INC 20
#define SAPCALLBACKDELAY 244
+#define LPK_INIT 1
+#define LPK_ETO 2
+#define LPK_GCP 3
+
/* MACRO ********************************************************************/
#define ROP_USES_SOURCE(Rop) (((Rop) << 2 ^ Rop) & 0xCC0000)
#define UMPDEV_SUPPORT_ESCAPE 0x0004
typedef struct _UMPDEV
{
- DWORD Sig; // Init with PDEV_UMPD_ID
+ DWORD_PTR Sig; // Init with PDEV_UMPD_ID
struct _UMPDEV *pumpdNext;
PDRIVER_INFO_5W pdi5Info;
HMODULE hModule;
DeleteRegion( HRGN );
BOOL
-GdiIsHandleValid(HGDIOBJ hGdiObj);
+WINAPI
+GdiValidateHandle(HGDIOBJ);
BOOL
GdiGetHandleUserData(
LPENUMLOGFONTEXA fontA,
CONST ENUMLOGFONTEXW *fontW );
+BOOL
+WINAPI
+LoadLPK(
+ INT LpkFunctionID
+);
+
+VOID
+WINAPI
+GdiInitializeLanguagePack(
+ _In_ DWORD InitParam);
+
+VOID
+WINAPI
+InitializeLpkHooks(
+ _In_ FARPROC *hookfuncs);
+
BOOL
WINAPI
GetETM(HDC hdc,
}
/* Get the size of the entry */
- if (Cmd == GdiBCPatBlt) cjSize = 0;
- else if (Cmd == GdiBCPolyPatBlt) cjSize = 0;
+ if (Cmd == GdiBCPatBlt) cjSize = sizeof(GDIBSPATBLT);
+ else if (Cmd == GdiBCPolyPatBlt) cjSize = sizeof(GDIBSPPATBLT);
else if (Cmd == GdiBCTextOut) cjSize = 0;
else if (Cmd == GdiBCExtTextOut) cjSize = 0;
else if (Cmd == GdiBCSetBrushOrg) cjSize = sizeof(GDIBSSETBRHORG);
DCFUNC_SetViewportOrgEx,
DCFUNC_SetWindowExtEx,
DCFUNC_SetWindowOrgEx,
+ DCFUNC_SetWorldTransform,
DCFUNC_StretchBlt,
DCFUNC_StrokeAndFillPath,
DCFUNC_StrokePath,