From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 11 --- dlls/win32u/syscall.c | 11 +++ dlls/win32u/win32u.spec | 22 ++--- dlls/win32u/win32u_private.h | 24 ----- dlls/win32u/wrappers.c | 85 ------------------ dlls/wow64win/gdi.c | 164 +++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 11 +++ 7 files changed, 197 insertions(+), 131 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index c78b8850e91..1df4c83ed55 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1030,9 +1030,6 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca )
static struct unix_funcs unix_funcs = { - NtGdiAlphaBlend, - NtGdiBitBlt, - NtGdiComputeXformCoefficients, NtGdiCreateCompatibleBitmap, NtGdiCreateCompatibleDC, NtGdiCreateDIBitmapInternal, @@ -1079,18 +1076,12 @@ static struct unix_funcs unix_funcs = NtGdiGetTextFaceW, NtGdiGetTextMetricsW, NtGdiIntersectClipRect, - NtGdiMaskBlt, - NtGdiModifyWorldTransform, NtGdiOffsetClipRgn, - NtGdiPatBlt, - NtGdiPlgBlt, NtGdiPtVisible, NtGdiRectVisible, NtGdiResetDC, NtGdiResizePalette, NtGdiRestoreDC, - NtGdiScaleViewportExtEx, - NtGdiScaleWindowExtEx, NtGdiSelectBitmap, NtGdiSelectBrush, NtGdiSelectFont, @@ -1100,9 +1091,7 @@ static struct unix_funcs unix_funcs = NtGdiSetDeviceGammaRamp, NtGdiSetLayout, NtGdiSetSystemPaletteUse, - NtGdiStretchBlt, NtGdiStretchDIBitsInternal, - NtGdiTransparentBlt, NtGdiUnrealizeObject, NtGdiUpdateColors, NtUserDrawCaptionTemp, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index d3ff0a7696f..40229632d16 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -40,11 +40,14 @@ static void * const syscalls[] = NtGdiAbortPath, NtGdiAddFontMemResourceEx, NtGdiAddFontResourceW, + NtGdiAlphaBlend, NtGdiAngleArc, NtGdiArcInternal, NtGdiBeginPath, + NtGdiBitBlt, NtGdiCloseFigure, NtGdiCombineRgn, + NtGdiComputeXformCoefficients, NtGdiCreateBitmap, NtGdiCreateClientObj, NtGdiCreateDIBBrush, @@ -100,10 +103,14 @@ static void * const syscalls[] = NtGdiInitSpool, NtGdiInvertRgn, NtGdiLineTo, + NtGdiMaskBlt, + NtGdiModifyWorldTransform, NtGdiMoveTo, NtGdiOffsetRgn, NtGdiOpenDCW, + NtGdiPatBlt, NtGdiPathToRegion, + NtGdiPlgBlt, NtGdiPolyDraw, NtGdiPolyPolyDraw, NtGdiPtInRegion, @@ -113,6 +120,8 @@ static void * const syscalls[] = NtGdiRemoveFontResourceW, NtGdiRoundRect, NtGdiSaveDC, + NtGdiScaleViewportExtEx, + NtGdiScaleWindowExtEx, NtGdiSelectClipPath, NtGdiSetBitmapBits, NtGdiSetBitmapDimension, @@ -127,10 +136,12 @@ static void * const syscalls[] = NtGdiSetVirtualResolution, NtGdiStartDoc, NtGdiStartPage, + NtGdiStretchBlt, NtGdiStrokeAndFillPath, NtGdiStrokePath, NtGdiSwapBuffers, NtGdiTransformPoints, + NtGdiTransparentBlt, NtGdiWidenPath, NtUserActivateKeyboardLayout, NtUserAddClipboardFormatListener, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 0bf64260561..cdd39aebf8a 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -112,7 +112,7 @@ @ stub NtGdiAddInitialFonts @ stub NtGdiAddRemoteFontToDC @ stub NtGdiAddRemoteMMInstanceToDC -@ stdcall NtGdiAlphaBlend(long long long long long long long long long long long ptr) +@ stdcall -syscall NtGdiAlphaBlend(long long long long long long long long long long long ptr) @ stdcall -syscall NtGdiAngleArc(long long long long long long) @ stub NtGdiAnyLinkedFonts @ stdcall -syscall NtGdiArcInternal(long long long long long long long long long long) @@ -123,7 +123,7 @@ @ stub NtGdiBRUSHOBJ_ulGetBrushColor @ stub NtGdiBeginGdiRendering @ stdcall -syscall NtGdiBeginPath(long) -@ stdcall NtGdiBitBlt(long long long long long long long long long long long) +@ stdcall -syscall NtGdiBitBlt(long long long long long long long long long long long) @ stub NtGdiCLIPOBJ_bEnum @ stub NtGdiCLIPOBJ_cEnumStart @ stub NtGdiCLIPOBJ_ppoGetPath @@ -136,7 +136,7 @@ @ stub NtGdiColorCorrectPalette @ stdcall -syscall NtGdiCombineRgn(long long long long) @ stub NtGdiCombineTransform -@ stdcall NtGdiComputeXformCoefficients(long) +@ stdcall -syscall NtGdiComputeXformCoefficients(long) @ stub NtGdiConfigureOPMProtectedOutput @ stub NtGdiConvertMetafileRect @ stdcall -syscall NtGdiCreateBitmap(long long long long ptr) @@ -540,9 +540,9 @@ @ stub NtGdiMakeInfoDC @ stub NtGdiMakeObjectUnXferable @ stub NtGdiMakeObjectXferable -@ stdcall NtGdiMaskBlt(long long long long long long long long long long long long long) +@ stdcall -syscall NtGdiMaskBlt(long long long long long long long long long long long long long) @ stub NtGdiMirrorWindowOrg -@ stdcall NtGdiModifyWorldTransform(long ptr long) +@ stdcall -syscall NtGdiModifyWorldTransform(long ptr long) @ stub NtGdiMonoBitmap @ stdcall -syscall NtGdiMoveTo(long long long ptr) @ stdcall NtGdiOffsetClipRgn(long long long) @@ -553,9 +553,9 @@ @ stub NtGdiPATHOBJ_vEnumStart @ stub NtGdiPATHOBJ_vEnumStartClipLines @ stub NtGdiPATHOBJ_vGetBounds -@ stdcall NtGdiPatBlt(long long long long long long) +@ stdcall -syscall NtGdiPatBlt(long long long long long long) @ stdcall -syscall NtGdiPathToRegion(long) -@ stdcall NtGdiPlgBlt(long ptr long long long long long long long long long) +@ stdcall -syscall NtGdiPlgBlt(long ptr long long long long long long long long long) @ stdcall -syscall NtGdiPolyDraw(long ptr ptr long) @ stub NtGdiPolyPatBlt @ stdcall -syscall NtGdiPolyPolyDraw(long ptr ptr long long) @@ -582,8 +582,8 @@ @ stdcall -syscall NtGdiSaveDC(long) @ stub NtGdiScaleRgn @ stub NtGdiScaleValues -@ stdcall NtGdiScaleViewportExtEx(long long long long long ptr) -@ stdcall NtGdiScaleWindowExtEx(long long long long long ptr) +@ stdcall -syscall NtGdiScaleViewportExtEx(long long long long long ptr) +@ stdcall -syscall NtGdiScaleWindowExtEx(long long long long long ptr) @ stdcall NtGdiSelectBitmap(long long) @ stdcall NtGdiSelectBrush(long long) @ stdcall -syscall NtGdiSelectClipPath(long long) @@ -620,13 +620,13 @@ @ stdcall -syscall NtGdiSetVirtualResolution(long long long long long) @ stdcall -syscall NtGdiStartDoc(long ptr ptr long) @ stdcall -syscall NtGdiStartPage(long) -@ stdcall NtGdiStretchBlt(long long long long long long long long long long long long) +@ stdcall -syscall NtGdiStretchBlt(long long long long long long long long long long long long) @ stdcall NtGdiStretchDIBitsInternal(long long long long long long long long long ptr ptr long long long long long) @ stdcall -syscall NtGdiStrokeAndFillPath(long) @ stdcall -syscall NtGdiStrokePath(long) @ stdcall -syscall NtGdiSwapBuffers(long) @ stdcall -syscall NtGdiTransformPoints(long ptr ptr long long) -@ stdcall NtGdiTransparentBlt(long long long long long long long long long long long) +@ stdcall -syscall NtGdiTransparentBlt(long long long long long long long long long long long) @ stub NtGdiUMPDEngFreeUserMem @ stub NtGdiUnloadPrinterDriver @ stub NtGdiUnmapMemFont diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 6e361973f0e..ebfe18fcbc2 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -35,12 +35,6 @@ struct unix_funcs { /* win32u functions */ - BOOL (WINAPI *pNtGdiAlphaBlend)( HDC hdc_dst, int x_dst, int y_dst, int width_dst, int height_dst, - HDC hdc_src, int x_src, int y_src, int width_src, int height_src, - DWORD blend_function, HANDLE xform ); - BOOL (WINAPI *pNtGdiBitBlt)( HDC hdc_dst, INT x_dst, INT y_dst, INT width, INT height, HDC hdc_src, - INT x_src, INT y_src, DWORD rop, DWORD bk_color, FLONG fl ); - BOOL (WINAPI *pNtGdiComputeXformCoefficients)( HDC hdc ); HBITMAP (WINAPI *pNtGdiCreateCompatibleBitmap)( HDC hdc, INT width, INT height ); HDC (WINAPI *pNtGdiCreateCompatibleDC)( HDC hdc ); HBITMAP (WINAPI *pNtGdiCreateDIBitmapInternal)( HDC hdc, INT width, INT height, DWORD init, @@ -103,25 +97,13 @@ struct unix_funcs INT (WINAPI *pNtGdiGetTextFaceW)( HDC hdc, INT count, WCHAR *name, BOOL alias_name ); BOOL (WINAPI *pNtGdiGetTextMetricsW)( HDC hdc, TEXTMETRICW *metrics, ULONG flags ); INT (WINAPI *pNtGdiIntersectClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom ); - BOOL (WINAPI *pNtGdiMaskBlt)( HDC hdc, INT x_dst, INT y_dst, INT width_dst, INT height_dst, - HDC hdc_src, INT x_src, INT y_src, HBITMAP mask, - INT x_mask, INT y_mask, DWORD rop, DWORD bk_color ); - BOOL (WINAPI *pNtGdiModifyWorldTransform)( HDC hdc, const XFORM *xform, DWORD mode ); INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); - BOOL (WINAPI *pNtGdiPatBlt)( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop ); - BOOL (WINAPI *pNtGdiPlgBlt)( HDC hdc, const POINT *point, HDC hdc_src, INT x_src, INT y_src, - INT width, INT height, HBITMAP mask, INT x_mask, INT y_mask, - DWORD bk_color ); BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y ); BOOL (WINAPI *pNtGdiRectVisible)( HDC hdc, const RECT *rect ); BOOL (WINAPI *pNtGdiResetDC)( HDC hdc, const DEVMODEW *devmode, BOOL *banding, DRIVER_INFO_2W *driver_info, void *dev ); BOOL (WINAPI *pNtGdiResizePalette)( HPALETTE palette, UINT count ); BOOL (WINAPI *pNtGdiRestoreDC)( HDC hdc, INT level ); - BOOL (WINAPI *pNtGdiScaleViewportExtEx)( HDC hdc, INT x_num, INT x_denom, - INT y_num, INT y_denom, SIZE *size ); - BOOL (WINAPI *pNtGdiScaleWindowExtEx)( HDC hdc, INT x_num, INT x_denom, - INT y_num, INT y_denom, SIZE *size ); HGDIOBJ (WINAPI *pNtGdiSelectBitmap)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectBrush)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectFont)( HDC hdc, HGDIOBJ handle ); @@ -135,17 +117,11 @@ struct unix_funcs BOOL (WINAPI *pNtGdiSetDeviceGammaRamp)( HDC hdc, void *ptr ); DWORD (WINAPI *pNtGdiSetLayout)( HDC hdc, LONG wox, DWORD layout ); UINT (WINAPI *pNtGdiSetSystemPaletteUse)( HDC hdc, UINT use ); - BOOL (WINAPI *pNtGdiStretchBlt)( HDC hdc, INT x_dst, INT y_dst, INT width_dst, INT height_dst, - HDC hdc_src, INT x_src, INT y_src, INT width_src, INT height_src, - DWORD rop, COLORREF bk_color ); INT (WINAPI *pNtGdiStretchDIBitsInternal)( HDC hdc, INT x_dst, INT y_dst, INT width_dst, INT height_dst, INT x_src, INT y_src, INT width_src, INT height_src, const void *bits, const BITMAPINFO *bmi, UINT coloruse, DWORD rop, UINT max_info, UINT max_bits, HANDLE xform ); - BOOL (WINAPI *pNtGdiTransparentBlt)( HDC hdc, int x_dst, int y_dst, int width_dst, int height_dst, - HDC hdc_src, int x_src, int y_src, int width_src, int height_src, - UINT color ); BOOL (WINAPI *pNtGdiUnrealizeObject)( HGDIOBJ obj ); BOOL (WINAPI *pNtGdiUpdateColors)( HDC hdc ); BOOL (WINAPI *pNtUserDrawCaptionTemp)( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index b720f561474..4cd756fd575 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -24,29 +24,6 @@
static const struct unix_funcs *unix_funcs;
-BOOL WINAPI NtGdiAlphaBlend( HDC hdc_dst, int x_dst, int y_dst, int width_dst, int height_dst, - HDC hdc_src, int x_src, int y_src, int width_src, int height_src, - DWORD blend_function, HANDLE xform ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiAlphaBlend( hdc_dst, x_dst, y_dst, width_dst, height_dst, hdc_src, - x_src, y_src, width_src, height_src, blend_function, xform ); -} - -BOOL WINAPI NtGdiBitBlt( HDC hdc_dst, INT x_dst, INT y_dst, INT width, INT height, HDC hdc_src, - INT x_src, INT y_src, DWORD rop, DWORD bk_color, FLONG fl ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiBitBlt( hdc_dst, x_dst, y_dst, width, height, hdc_src, x_src, y_src, - rop, bk_color, fl ); -} - -BOOL WINAPI NtGdiComputeXformCoefficients( HDC hdc ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiComputeXformCoefficients( hdc ); -} - HBITMAP WINAPI NtGdiCreateCompatibleBitmap( HDC hdc, INT width, INT height ) { if (!unix_funcs) return 0; @@ -289,42 +266,12 @@ INT WINAPI NtGdiIntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bo return unix_funcs->pNtGdiIntersectClipRect( hdc, left, top, right, bottom ); }
-BOOL WINAPI NtGdiMaskBlt( HDC hdc, INT x_dst, INT y_dst, INT width_dst, INT height_dst, - HDC hdc_src, INT x_src, INT y_src, HBITMAP mask, - INT x_mask, INT y_mask, DWORD rop, DWORD bk_color ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiMaskBlt( hdc, x_dst, y_dst, width_dst, height_dst, hdc_src, - x_src, y_src, mask, x_mask, y_mask, rop, bk_color ); -} - -BOOL WINAPI NtGdiModifyWorldTransform( HDC hdc, const XFORM *xform, DWORD mode ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiModifyWorldTransform( hdc, xform, mode ); -} - INT WINAPI NtGdiOffsetClipRgn( HDC hdc, INT x, INT y ) { if (!unix_funcs) return ERROR; return unix_funcs->pNtGdiOffsetClipRgn( hdc, x, y ); }
-BOOL WINAPI NtGdiPatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiPatBlt( hdc, left, top, width, height, rop ); -} - -BOOL WINAPI NtGdiPlgBlt( HDC hdc, const POINT *point, HDC hdc_src, INT x_src, INT y_src, - INT width, INT height, HBITMAP mask, INT x_mask, INT y_mask, - DWORD bk_color ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiPlgBlt( hdc, point, hdc_src, x_src, y_src, width, height, mask, - x_mask, y_mask, bk_color ); -} - BOOL WINAPI NtGdiPtVisible( HDC hdc, INT x, INT y ) { if (!unix_funcs) return FALSE; @@ -356,20 +303,6 @@ BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level ) return unix_funcs->pNtGdiRestoreDC( hdc, level ); }
-BOOL WINAPI NtGdiScaleViewportExtEx( HDC hdc, INT x_num, INT x_denom, - INT y_num, INT y_denom, SIZE *size ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiScaleViewportExtEx( hdc, x_num, x_denom, y_num, y_denom, size ); -} - -BOOL WINAPI NtGdiScaleWindowExtEx( HDC hdc, INT x_num, INT x_denom, - INT y_num, INT y_denom, SIZE *size ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiScaleWindowExtEx( hdc, x_num, x_denom, y_num, y_denom, size ); -} - HGDIOBJ WINAPI NtGdiSelectBitmap( HDC hdc, HGDIOBJ handle ) { if (!unix_funcs) return 0; @@ -430,15 +363,6 @@ UINT WINAPI NtGdiSetSystemPaletteUse( HDC hdc, UINT use ) return unix_funcs->pNtGdiSetSystemPaletteUse( hdc, use ); }
-BOOL WINAPI NtGdiStretchBlt( HDC hdc, INT x_dst, INT y_dst, INT width_dst, INT height_dst, - HDC hdc_src, INT x_src, INT y_src, INT width_src, INT height_src, - DWORD rop, COLORREF bk_color ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiStretchBlt( hdc, x_dst, y_dst, width_dst, height_dst, hdc_src, - x_src, y_src, width_src, height_src, rop, bk_color ); -} - INT WINAPI NtGdiStretchDIBitsInternal( HDC hdc, INT x_dst, INT y_dst, INT width_dst, INT height_dst, INT x_src, INT y_src, INT width_src, INT height_src, const void *bits, const BITMAPINFO *bmi, @@ -451,15 +375,6 @@ INT WINAPI NtGdiStretchDIBitsInternal( HDC hdc, INT x_dst, INT y_dst, INT width_ coloruse, rop, max_info, max_bits, xform ); }
-BOOL WINAPI NtGdiTransparentBlt( HDC hdc, int x_dst, int y_dst, int width_dst, int height_dst, - HDC hdc_src, int x_src, int y_src, int width_src, int height_src, - UINT color ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiTransparentBlt( hdc, x_dst, y_dst, width_dst, height_dst, hdc_src, - x_src, y_src, width_src, height_src, color ); -} - BOOL WINAPI NtGdiUnrealizeObject( HGDIOBJ obj ) { if (!unix_funcs) return FALSE; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index e5915bfc949..d6006adf8d1 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -93,6 +93,25 @@ NTSTATUS WINAPI wow64_NtGdiAddFontResourceW( UINT *args ) return NtGdiAddFontResourceW( str, size, files, flags, tid, dv ); }
+NTSTATUS WINAPI wow64_NtGdiAlphaBlend( UINT *args ) +{ + HDC hdc_dst = get_handle( &args ); + int x_dst = get_ulong( &args ); + int y_dst = get_ulong( &args ); + int width_dst = get_ulong( &args ); + int height_dst = get_ulong( &args ); + HDC hdc_src = get_handle( &args ); + int x_src = get_ulong( &args ); + int y_src = get_ulong( &args ); + int width_src = get_ulong( &args ); + int height_src = get_ulong( &args ); + DWORD blend_function = get_ulong( &args ); + HANDLE xform = get_handle( &args ); + + return NtGdiAlphaBlend( hdc_dst, x_dst, y_dst, width_dst, height_dst, hdc_src, + x_src, y_src, width_src, height_src, blend_function, xform ); +} + NTSTATUS WINAPI wow64_NtGdiAngleArc( UINT *args ) { HDC hdc = get_handle( &args ); @@ -128,6 +147,24 @@ NTSTATUS WINAPI wow64_NtGdiBeginPath( UINT *args ) return NtGdiBeginPath( hdc ); }
+NTSTATUS WINAPI wow64_NtGdiBitBlt( UINT *args ) +{ + HDC hdc_dst = get_handle( &args ); + INT x_dst = get_ulong( &args ); + INT y_dst = get_ulong( &args ); + INT width = get_ulong( &args ); + INT height = get_ulong( &args ); + HDC hdc_src = get_handle( &args ); + INT x_src = get_ulong( &args ); + INT y_src = get_ulong( &args ); + DWORD rop = get_ulong( &args ); + DWORD bk_color = get_ulong( &args ); + FLONG fl = get_ulong( &args ); + + return NtGdiBitBlt( hdc_dst, x_dst, y_dst, width, height, hdc_src, + x_src, y_src, rop, bk_color, fl ); +} + NTSTATUS WINAPI wow64_NtGdiCloseFigure( UINT *args ) { HDC hdc = get_handle( &args ); @@ -145,6 +182,13 @@ NTSTATUS WINAPI wow64_NtGdiCombineRgn( UINT *args ) return NtGdiCombineRgn( dest, src1, src2, mode ); }
+NTSTATUS WINAPI wow64_NtGdiComputeXformCoefficients( UINT *args ) +{ + HDC hdc = get_handle( &args ); + + return NtGdiComputeXformCoefficients( hdc ); +} + NTSTATUS WINAPI wow64_NtGdiCreateBitmap( UINT *args ) { INT width = get_ulong( &args ); @@ -719,6 +763,35 @@ NTSTATUS WINAPI wow64_NtGdiLineTo( UINT *args ) return NtGdiLineTo( hdc, x, y ); }
+NTSTATUS WINAPI wow64_NtGdiMaskBlt( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x_dst = get_ulong( &args ); + INT y_dst = get_ulong( &args ); + INT width_dst = get_ulong( &args ); + INT height_dst = get_ulong( &args ); + HDC hdc_src = get_handle( &args ); + INT x_src = get_ulong( &args ); + INT y_src = get_ulong( &args ); + HBITMAP mask = get_handle( &args ); + INT x_mask = get_ulong( &args ); + INT y_mask = get_ulong( &args ); + DWORD rop = get_ulong( &args ); + DWORD bk_color = get_ulong( &args ); + + return NtGdiMaskBlt( hdc, x_dst, y_dst, width_dst, height_dst, hdc_src, + x_src, y_src, mask, x_mask, y_mask, rop, bk_color ); +} + +NTSTATUS WINAPI wow64_NtGdiModifyWorldTransform( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const XFORM *xform = get_ptr( &args ); + DWORD mode = get_ulong( &args ); + + return NtGdiModifyWorldTransform( hdc, xform, mode ); +} + NTSTATUS WINAPI wow64_NtGdiMoveTo( UINT *args ) { HDC hdc = get_handle( &args ); @@ -860,6 +933,18 @@ NTSTATUS WINAPI wow64_NtGdiOpenDCW( UINT *args ) return HandleToUlong( ret ); }
+NTSTATUS WINAPI wow64_NtGdiPatBlt( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT left = get_ulong( &args ); + INT top = get_ulong( &args ); + INT width = get_ulong( &args ); + INT height = get_ulong( &args ); + DWORD rop = get_ulong( &args ); + + return NtGdiPatBlt( hdc, left, top, width, height, rop ); +} + NTSTATUS WINAPI wow64_NtGdiPathToRegion( UINT *args ) { HDC hdc = get_handle( &args ); @@ -867,6 +952,24 @@ NTSTATUS WINAPI wow64_NtGdiPathToRegion( UINT *args ) return HandleToUlong( NtGdiPathToRegion( hdc )); }
+NTSTATUS WINAPI wow64_NtGdiPlgBlt( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const POINT *point = get_ptr( &args ); + HDC hdc_src = get_handle( &args ); + INT x_src = get_ulong( &args ); + INT y_src = get_ulong( &args ); + INT width = get_ulong( &args ); + INT height = get_ulong( &args ); + HBITMAP mask = get_handle( &args ); + INT x_mask = get_ulong( &args ); + INT y_mask = get_ulong( &args ); + DWORD bk_color = get_ulong( &args ); + + return NtGdiPlgBlt( hdc, point, hdc_src, x_src, y_src, width, height, + mask, x_mask, y_mask, bk_color ); +} + NTSTATUS WINAPI wow64_NtGdiPtInRegion( UINT *args ) { HRGN hrgn = get_handle( &args ); @@ -910,6 +1013,30 @@ NTSTATUS WINAPI wow64_NtGdiSaveDC( UINT *args ) return NtGdiSaveDC( hdc ); }
+NTSTATUS WINAPI wow64_NtGdiScaleViewportExtEx( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x_num = get_ulong( &args ); + INT x_denom = get_ulong( &args ); + INT y_num = get_ulong( &args ); + INT y_denom = get_ulong( &args ); + SIZE *size = get_ptr( &args ); + + return NtGdiScaleViewportExtEx( hdc, x_num, x_denom, y_num, y_denom, size ); +} + +NTSTATUS WINAPI wow64_NtGdiScaleWindowExtEx( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x_num = get_ulong( &args ); + INT x_denom = get_ulong( &args ); + INT y_num = get_ulong( &args ); + INT y_denom = get_ulong( &args ); + SIZE *size = get_ptr( &args ); + + return NtGdiScaleWindowExtEx( hdc, x_num, x_denom, y_num, y_denom, size ); +} + NTSTATUS WINAPI wow64_NtGdiSelectClipPath( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1051,6 +1178,25 @@ NTSTATUS WINAPI wow64_NtGdiStartPage( UINT *args ) return NtGdiStartPage( hdc ); }
+NTSTATUS WINAPI wow64_NtGdiStretchBlt( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x_dst = get_ulong( &args ); + INT y_dst = get_ulong( &args ); + INT width_dst = get_ulong( &args ); + INT height_dst = get_ulong( &args ); + HDC hdc_src = get_handle( &args ); + INT x_src = get_ulong( &args ); + INT y_src = get_ulong( &args ); + INT width_src = get_ulong( &args ); + INT height_src = get_ulong( &args ); + DWORD rop = get_ulong( &args ); + COLORREF bk_color = get_ulong( &args ); + + return NtGdiStretchBlt( hdc, x_dst, y_dst, width_dst, height_dst, hdc_src, + x_src, y_src, width_src, height_src, rop, bk_color ); +} + NTSTATUS WINAPI wow64_NtGdiStrokeAndFillPath( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1072,6 +1218,24 @@ NTSTATUS WINAPI wow64_NtGdiSwapBuffers( UINT *args ) return NtGdiSwapBuffers( hdc ); }
+NTSTATUS WINAPI wow64_NtGdiTransparentBlt( UINT *args ) +{ + HDC hdc = get_handle( &args ); + int x_dst = get_ulong( &args ); + int y_dst = get_ulong( &args ); + int width_dst = get_ulong( &args ); + int height_dst = get_ulong( &args ); + HDC hdc_src = get_handle( &args ); + int x_src = get_ulong( &args ); + int y_src = get_ulong( &args ); + int width_src = get_ulong( &args ); + int height_src = get_ulong( &args ); + UINT color = get_ulong( &args ); + + return NtGdiTransparentBlt( hdc, x_dst, y_dst, width_dst, height_dst, hdc_src, + x_src, y_src, width_src, height_src, color ); +} + NTSTATUS WINAPI wow64_NtGdiTransformPoints( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index c2a9f1a05b7..1f925757eb6 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -26,11 +26,14 @@ SYSCALL_ENTRY( NtGdiAbortPath ) \ SYSCALL_ENTRY( NtGdiAddFontMemResourceEx ) \ SYSCALL_ENTRY( NtGdiAddFontResourceW ) \ + SYSCALL_ENTRY( NtGdiAlphaBlend ) \ SYSCALL_ENTRY( NtGdiAngleArc ) \ SYSCALL_ENTRY( NtGdiArcInternal ) \ SYSCALL_ENTRY( NtGdiBeginPath ) \ + SYSCALL_ENTRY( NtGdiBitBlt ) \ SYSCALL_ENTRY( NtGdiCloseFigure ) \ SYSCALL_ENTRY( NtGdiCombineRgn ) \ + SYSCALL_ENTRY( NtGdiComputeXformCoefficients ) \ SYSCALL_ENTRY( NtGdiCreateBitmap ) \ SYSCALL_ENTRY( NtGdiCreateClientObj ) \ SYSCALL_ENTRY( NtGdiCreateDIBBrush ) \ @@ -86,10 +89,14 @@ SYSCALL_ENTRY( NtGdiInitSpool ) \ SYSCALL_ENTRY( NtGdiInvertRgn ) \ SYSCALL_ENTRY( NtGdiLineTo ) \ + SYSCALL_ENTRY( NtGdiMaskBlt ) \ + SYSCALL_ENTRY( NtGdiModifyWorldTransform ) \ SYSCALL_ENTRY( NtGdiMoveTo ) \ SYSCALL_ENTRY( NtGdiOffsetRgn ) \ SYSCALL_ENTRY( NtGdiOpenDCW ) \ + SYSCALL_ENTRY( NtGdiPatBlt ) \ SYSCALL_ENTRY( NtGdiPathToRegion ) \ + SYSCALL_ENTRY( NtGdiPlgBlt ) \ SYSCALL_ENTRY( NtGdiPolyDraw ) \ SYSCALL_ENTRY( NtGdiPolyPolyDraw ) \ SYSCALL_ENTRY( NtGdiPtInRegion ) \ @@ -99,6 +106,8 @@ SYSCALL_ENTRY( NtGdiRemoveFontResourceW ) \ SYSCALL_ENTRY( NtGdiRoundRect ) \ SYSCALL_ENTRY( NtGdiSaveDC ) \ + SYSCALL_ENTRY( NtGdiScaleViewportExtEx ) \ + SYSCALL_ENTRY( NtGdiScaleWindowExtEx ) \ SYSCALL_ENTRY( NtGdiSelectClipPath ) \ SYSCALL_ENTRY( NtGdiSetBitmapBits ) \ SYSCALL_ENTRY( NtGdiSetBitmapDimension ) \ @@ -113,10 +122,12 @@ SYSCALL_ENTRY( NtGdiSetVirtualResolution ) \ SYSCALL_ENTRY( NtGdiStartDoc ) \ SYSCALL_ENTRY( NtGdiStartPage ) \ + SYSCALL_ENTRY( NtGdiStretchBlt ) \ SYSCALL_ENTRY( NtGdiStrokeAndFillPath ) \ SYSCALL_ENTRY( NtGdiStrokePath ) \ SYSCALL_ENTRY( NtGdiSwapBuffers ) \ SYSCALL_ENTRY( NtGdiTransformPoints ) \ + SYSCALL_ENTRY( NtGdiTransparentBlt ) \ SYSCALL_ENTRY( NtGdiWidenPath ) \ SYSCALL_ENTRY( NtUserActivateKeyboardLayout ) \ SYSCALL_ENTRY( NtUserAddClipboardFormatListener ) \