From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 2 -- dlls/win32u/syscall.c | 2 ++ dlls/win32u/win32u.spec | 4 ++-- dlls/win32u/win32u_private.h | 2 -- dlls/win32u/wrappers.c | 12 ------------ dlls/wow64win/gdi.c | 17 +++++++++++++++++ dlls/wow64win/syscall.h | 2 ++ 7 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 1df4c83ed55..93c20f5cac0 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1030,7 +1030,6 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca )
static struct unix_funcs unix_funcs = { - NtGdiCreateCompatibleBitmap, NtGdiCreateCompatibleDC, NtGdiCreateDIBitmapInternal, NtGdiCreateMetafileDC, @@ -1082,7 +1081,6 @@ static struct unix_funcs unix_funcs = NtGdiResetDC, NtGdiResizePalette, NtGdiRestoreDC, - NtGdiSelectBitmap, NtGdiSelectBrush, NtGdiSelectFont, NtGdiSelectPen, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 40229632d16..56298cd7697 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -50,6 +50,7 @@ static void * const syscalls[] = NtGdiComputeXformCoefficients, NtGdiCreateBitmap, NtGdiCreateClientObj, + NtGdiCreateCompatibleBitmap, NtGdiCreateDIBBrush, NtGdiCreateDIBSection, NtGdiCreateEllipticRgn, @@ -122,6 +123,7 @@ static void * const syscalls[] = NtGdiSaveDC, NtGdiScaleViewportExtEx, NtGdiScaleWindowExtEx, + NtGdiSelectBitmap, NtGdiSelectClipPath, NtGdiSetBitmapBits, NtGdiSetBitmapDimension, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index cdd39aebf8a..53066822bd6 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -145,7 +145,7 @@ @ stdcall -syscall NtGdiCreateClientObj(long) @ stub NtGdiCreateColorSpace @ stub NtGdiCreateColorTransform -@ stdcall NtGdiCreateCompatibleBitmap(long long long) +@ stdcall -syscall NtGdiCreateCompatibleBitmap(long long long) @ stdcall NtGdiCreateCompatibleDC(long) @ stdcall -syscall NtGdiCreateDIBBrush(ptr long long long long ptr) @ stdcall -syscall NtGdiCreateDIBSection(long long long ptr long long long long ptr) @@ -584,7 +584,7 @@ @ stub NtGdiScaleValues @ stdcall -syscall NtGdiScaleViewportExtEx(long long long long long ptr) @ stdcall -syscall NtGdiScaleWindowExtEx(long long long long long ptr) -@ stdcall NtGdiSelectBitmap(long long) +@ stdcall -syscall NtGdiSelectBitmap(long long) @ stdcall NtGdiSelectBrush(long long) @ stdcall -syscall NtGdiSelectClipPath(long long) @ stdcall NtGdiSelectFont(long long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index ebfe18fcbc2..926bacb7db5 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -35,7 +35,6 @@ struct unix_funcs { /* win32u functions */ - 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, const void *bits, const BITMAPINFO *data, @@ -104,7 +103,6 @@ struct unix_funcs DRIVER_INFO_2W *driver_info, void *dev ); BOOL (WINAPI *pNtGdiResizePalette)( HPALETTE palette, UINT count ); BOOL (WINAPI *pNtGdiRestoreDC)( HDC hdc, INT level ); - HGDIOBJ (WINAPI *pNtGdiSelectBitmap)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectBrush)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectFont)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectPen)( HDC hdc, HGDIOBJ handle ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 4cd756fd575..4f51dbd2206 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -24,12 +24,6 @@
static const struct unix_funcs *unix_funcs;
-HBITMAP WINAPI NtGdiCreateCompatibleBitmap( HDC hdc, INT width, INT height ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiCreateCompatibleBitmap( hdc, width, height ); -} - HDC WINAPI NtGdiCreateCompatibleDC( HDC hdc ) { if (!unix_funcs) return 0; @@ -303,12 +297,6 @@ BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level ) return unix_funcs->pNtGdiRestoreDC( hdc, level ); }
-HGDIOBJ WINAPI NtGdiSelectBitmap( HDC hdc, HGDIOBJ handle ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiSelectBitmap( hdc, handle ); -} - HGDIOBJ WINAPI NtGdiSelectBrush( HDC hdc, HGDIOBJ handle ) { if (!unix_funcs) return 0; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index d6006adf8d1..0edb41fc444 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -207,6 +207,15 @@ NTSTATUS WINAPI wow64_NtGdiCreateClientObj( UINT *args ) return HandleToUlong( NtGdiCreateClientObj( type )); }
+NTSTATUS WINAPI wow64_NtGdiCreateCompatibleBitmap( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT width = get_ulong( &args ); + INT height = get_ulong( &args ); + + return HandleToUlong( NtGdiCreateCompatibleBitmap( hdc, width, height )); +} + NTSTATUS WINAPI wow64_NtGdiCreateDIBBrush( UINT *args ) { const void *data = get_ptr( &args ); @@ -1037,6 +1046,14 @@ NTSTATUS WINAPI wow64_NtGdiScaleWindowExtEx( UINT *args ) return NtGdiScaleWindowExtEx( hdc, x_num, x_denom, y_num, y_denom, size ); }
+NTSTATUS WINAPI wow64_NtGdiSelectBitmap( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HGDIOBJ handle = get_handle( &args ); + + return HandleToUlong( NtGdiSelectBitmap( hdc, handle )); +} + NTSTATUS WINAPI wow64_NtGdiSelectClipPath( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 1f925757eb6..dfbe2129556 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -36,6 +36,7 @@ SYSCALL_ENTRY( NtGdiComputeXformCoefficients ) \ SYSCALL_ENTRY( NtGdiCreateBitmap ) \ SYSCALL_ENTRY( NtGdiCreateClientObj ) \ + SYSCALL_ENTRY( NtGdiCreateCompatibleBitmap ) \ SYSCALL_ENTRY( NtGdiCreateDIBBrush ) \ SYSCALL_ENTRY( NtGdiCreateDIBSection ) \ SYSCALL_ENTRY( NtGdiCreateEllipticRgn ) \ @@ -108,6 +109,7 @@ SYSCALL_ENTRY( NtGdiSaveDC ) \ SYSCALL_ENTRY( NtGdiScaleViewportExtEx ) \ SYSCALL_ENTRY( NtGdiScaleWindowExtEx ) \ + SYSCALL_ENTRY( NtGdiSelectBitmap ) \ SYSCALL_ENTRY( NtGdiSelectClipPath ) \ SYSCALL_ENTRY( NtGdiSetBitmapBits ) \ SYSCALL_ENTRY( NtGdiSetBitmapDimension ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 10 -- dlls/win32u/syscall.c | 10 ++ dlls/win32u/win32u.spec | 20 ++-- dlls/win32u/win32u_private.h | 10 -- dlls/win32u/wrappers.c | 60 ------------ dlls/wow64win/gdi.c | 183 ++++++++++++++++++++++++++++++++++- dlls/wow64win/syscall.h | 10 ++ 7 files changed, 212 insertions(+), 91 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 93c20f5cac0..d882f0dd009 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1033,16 +1033,6 @@ static struct unix_funcs unix_funcs = NtGdiCreateCompatibleDC, NtGdiCreateDIBitmapInternal, NtGdiCreateMetafileDC, - NtGdiDdDDICheckVidPnExclusiveOwnership, - NtGdiDdDDICloseAdapter, - NtGdiDdDDICreateDCFromMemory, - NtGdiDdDDIDestroyDCFromMemory, - NtGdiDdDDIDestroyDevice, - NtGdiDdDDIEscape, - NtGdiDdDDIOpenAdapterFromDeviceName, - NtGdiDdDDIOpenAdapterFromLuid, - NtGdiDdDDIQueryVideoMemoryInfo, - NtGdiDdDDISetVidPnSourceOwner, NtGdiDeleteObjectApp, NtGdiDoPalette, NtGdiEnumFonts, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 56298cd7697..7a5f116b69e 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -62,10 +62,20 @@ static void * const syscalls[] = NtGdiCreateRectRgn, NtGdiCreateRoundRectRgn, NtGdiCreateSolidBrush, + NtGdiDdDDICheckVidPnExclusiveOwnership, + NtGdiDdDDICloseAdapter, + NtGdiDdDDICreateDCFromMemory, NtGdiDdDDICreateDevice, + NtGdiDdDDIDestroyDCFromMemory, + NtGdiDdDDIDestroyDevice, + NtGdiDdDDIEscape, + NtGdiDdDDIOpenAdapterFromDeviceName, NtGdiDdDDIOpenAdapterFromHdc, + NtGdiDdDDIOpenAdapterFromLuid, NtGdiDdDDIQueryStatistics, + NtGdiDdDDIQueryVideoMemoryInfo, NtGdiDdDDISetQueuedLimit, + NtGdiDdDDISetVidPnSourceOwner, NtGdiDeleteClientObj, NtGdiDescribePixelFormat, NtGdiDrawStream, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 53066822bd6..9d1e445bfb1 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -186,14 +186,14 @@ @ stub NtGdiDdDDICheckMultiPlaneOverlaySupport3 @ stub NtGdiDdDDICheckOcclusion @ stub NtGdiDdDDICheckSharedResourceAccess -@ stdcall NtGdiDdDDICheckVidPnExclusiveOwnership(ptr) -@ stdcall NtGdiDdDDICloseAdapter(ptr) +@ stdcall -syscall NtGdiDdDDICheckVidPnExclusiveOwnership(ptr) +@ stdcall -syscall NtGdiDdDDICloseAdapter(ptr) @ stub NtGdiDdDDIConfigureSharedResource @ stub NtGdiDdDDICreateAllocation @ stub NtGdiDdDDICreateBundleObject @ stub NtGdiDdDDICreateContext @ stub NtGdiDdDDICreateContextVirtual -@ stdcall NtGdiDdDDICreateDCFromMemory(ptr) +@ stdcall -syscall NtGdiDdDDICreateDCFromMemory(ptr) @ stdcall -syscall NtGdiDdDDICreateDevice(ptr) @ stub NtGdiDdDDICreateHwContext @ stub NtGdiDdDDICreateHwQueue @@ -209,8 +209,8 @@ @ stub NtGdiDdDDIDestroyAllocation @ stub NtGdiDdDDIDestroyAllocation2 @ stub NtGdiDdDDIDestroyContext -@ stdcall NtGdiDdDDIDestroyDCFromMemory(ptr) -@ stdcall NtGdiDdDDIDestroyDevice(ptr) +@ stdcall -syscall NtGdiDdDDIDestroyDCFromMemory(ptr) +@ stdcall -syscall NtGdiDdDDIDestroyDevice(ptr) @ stub NtGdiDdDDIDestroyHwContext @ stub NtGdiDdDDIDestroyHwQueue @ stub NtGdiDdDDIDestroyKeyedMutex @@ -224,7 +224,7 @@ @ stub NtGdiDdDDIDispMgrTargetOperation @ stub NtGdiDdDDIEnumAdapters @ stub NtGdiDdDDIEnumAdapters2 -@ stdcall NtGdiDdDDIEscape(ptr) +@ stdcall -syscall NtGdiDdDDIEscape(ptr) @ stub NtGdiDdDDIEvict @ stub NtGdiDdDDIExtractBundleObject @ stub NtGdiDdDDIFlipOverlay @@ -268,9 +268,9 @@ @ stub NtGdiDdDDINetDispStartMiracastDisplayDevice @ stub NtGdiDdDDINetDispStopMiracastDisplayDevice @ stub NtGdiDdDDIOfferAllocations -@ stdcall NtGdiDdDDIOpenAdapterFromDeviceName(ptr) +@ stdcall -syscall NtGdiDdDDIOpenAdapterFromDeviceName(ptr) @ stdcall -syscall NtGdiDdDDIOpenAdapterFromHdc(ptr) -@ stdcall NtGdiDdDDIOpenAdapterFromLuid(ptr) +@ stdcall -syscall NtGdiDdDDIOpenAdapterFromLuid(ptr) @ stub NtGdiDdDDIOpenBundleObjectNtHandleFromName @ stub NtGdiDdDDIOpenKeyedMutex @ stub NtGdiDdDDIOpenKeyedMutex2 @@ -307,7 +307,7 @@ @ stub NtGdiDdDDIQueryResourceInfoFromNtHandle @ stdcall -syscall NtGdiDdDDIQueryStatistics(ptr) @ stub NtGdiDdDDIQueryVidPnExclusiveOwnership -@ stdcall NtGdiDdDDIQueryVideoMemoryInfo(ptr) +@ stdcall -syscall NtGdiDdDDIQueryVideoMemoryInfo(ptr) @ stub NtGdiDdDDIReclaimAllocations @ stub NtGdiDdDDIReclaimAllocations2 @ stub NtGdiDdDDIReleaseKeyedMutex @@ -335,7 +335,7 @@ @ stub NtGdiDdDDISetStereoEnabled @ stub NtGdiDdDDISetSyncRefreshCountWaitTarget @ stub NtGdiDdDDISetVidPnSourceHwProtection -@ stdcall NtGdiDdDDISetVidPnSourceOwner(ptr) +@ stdcall -syscall NtGdiDdDDISetVidPnSourceOwner(ptr) @ stub NtGdiDdDDISetYieldPercentage @ stub NtGdiDdDDIShareObjects @ stub NtGdiDdDDISharedPrimaryLockNotification diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 926bacb7db5..d5415092232 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -41,16 +41,6 @@ struct unix_funcs UINT coloruse, UINT max_info, UINT max_bits, ULONG flags, HANDLE xform ); HDC (WINAPI *pNtGdiCreateMetafileDC)( HDC hdc ); - NTSTATUS (WINAPI *pNtGdiDdDDICheckVidPnExclusiveOwnership)( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDICloseAdapter)( const D3DKMT_CLOSEADAPTER *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDICreateDCFromMemory)( D3DKMT_CREATEDCFROMMEMORY *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDIDestroyDCFromMemory)( const D3DKMT_DESTROYDCFROMMEMORY *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDIDestroyDevice)( const D3DKMT_DESTROYDEVICE *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDIEscape)( const D3DKMT_ESCAPE *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDIOpenAdapterFromDeviceName)( D3DKMT_OPENADAPTERFROMDEVICENAME *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDIOpenAdapterFromLuid)( D3DKMT_OPENADAPTERFROMLUID *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDIQueryVideoMemoryInfo)( D3DKMT_QUERYVIDEOMEMORYINFO *desc ); - NTSTATUS (WINAPI *pNtGdiDdDDISetVidPnSourceOwner)( const D3DKMT_SETVIDPNSOURCEOWNER *desc ); BOOL (WINAPI *pNtGdiDeleteObjectApp)( HGDIOBJ obj ); LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, DWORD func, BOOL inbound ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 4f51dbd2206..7f2dae040cf 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -375,66 +375,6 @@ BOOL WINAPI NtGdiUpdateColors( HDC hdc ) return unix_funcs->pNtGdiUpdateColors( hdc ); }
-NTSTATUS WINAPI NtGdiDdDDICheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDICheckVidPnExclusiveOwnership( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDICloseAdapter( const D3DKMT_CLOSEADAPTER *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDICloseAdapter( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDICreateDCFromMemory( D3DKMT_CREATEDCFROMMEMORY *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDICreateDCFromMemory( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDIDestroyDCFromMemory( const D3DKMT_DESTROYDCFROMMEMORY *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDIDestroyDCFromMemory( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDIDestroyDevice( const D3DKMT_DESTROYDEVICE *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDIDestroyDevice( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDIEscape( const D3DKMT_ESCAPE *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDIEscape( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromDeviceName( D3DKMT_OPENADAPTERFROMDEVICENAME *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDIOpenAdapterFromDeviceName( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromLuid( D3DKMT_OPENADAPTERFROMLUID *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDIOpenAdapterFromLuid( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDIQueryVideoMemoryInfo( D3DKMT_QUERYVIDEOMEMORYINFO *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDIQueryVideoMemoryInfo( desc ); -} - -NTSTATUS WINAPI NtGdiDdDDISetVidPnSourceOwner( const D3DKMT_SETVIDPNSOURCEOWNER *desc ) -{ - if (!unix_funcs) return STATUS_NOT_SUPPORTED; - return unix_funcs->pNtGdiDdDDISetVidPnSourceOwner( desc ); -} - BOOL WINAPI NtUserDrawCaptionTemp( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ) { diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 0edb41fc444..36737b23e61 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -333,6 +333,55 @@ NTSTATUS WINAPI wow64_NtGdiCreateSolidBrush( UINT *args ) return HandleToUlong( NtGdiCreateSolidBrush( color, brush )); }
+NTSTATUS WINAPI wow64_NtGdiDdDDICheckVidPnExclusiveOwnership( UINT *args ) +{ + const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc = get_ptr( &args ); + + return NtGdiDdDDICheckVidPnExclusiveOwnership( desc ); +} + +NTSTATUS WINAPI wow64_NtGdiDdDDICloseAdapter( UINT *args ) +{ + const D3DKMT_CLOSEADAPTER *desc = get_ptr( &args ); + + return NtGdiDdDDICloseAdapter( desc ); +} + +NTSTATUS WINAPI wow64_NtGdiDdDDICreateDCFromMemory( UINT *args ) +{ + struct _D3DKMT_CREATEDCFROMMEMORY + { + ULONG pMemory; + D3DDDIFORMAT Format; + UINT Width; + UINT Height; + UINT Pitch; + ULONG hDeviceDc; + ULONG pColorTable; + ULONG hDc; + ULONG hBitmap; + } *desc32 = get_ptr( &args ); + + D3DKMT_CREATEDCFROMMEMORY desc; + NTSTATUS status; + + if (!desc32) return STATUS_INVALID_PARAMETER; + desc.pMemory = UlongToPtr( desc32->pMemory ); + desc.Format = desc32->Format; + desc.Width = desc32->Width; + desc.Height = desc32->Height; + desc.Pitch = desc32->Pitch; + desc.hDeviceDc = UlongToHandle( desc32->hDeviceDc ); + desc.pColorTable = UlongToPtr( desc32->pColorTable ); + + if (!(status = NtGdiDdDDICreateDCFromMemory( &desc ))) + { + desc32->hDc = HandleToUlong( desc.hDc ); + desc32->hBitmap = HandleToUlong( desc.hBitmap ); + } + return status; +} + NTSTATUS WINAPI wow64_NtGdiDdDDICreateDevice( UINT *args ) { struct @@ -365,6 +414,77 @@ NTSTATUS WINAPI wow64_NtGdiDdDDICreateDevice( UINT *args ) return status; }
+NTSTATUS WINAPI wow64_NtGdiDdDDIDestroyDCFromMemory( UINT *args ) +{ + const struct + { + ULONG hDc; + ULONG hBitmap; + } *desc32 = get_ptr( &args ); + D3DKMT_DESTROYDCFROMMEMORY desc; + + if (!desc32) return STATUS_INVALID_PARAMETER; + desc.hDc = UlongToHandle( desc32->hDc ); + desc.hBitmap = UlongToHandle( desc32->hBitmap ); + + return NtGdiDdDDIDestroyDCFromMemory( &desc ); +} + +NTSTATUS WINAPI wow64_NtGdiDdDDIDestroyDevice( UINT *args ) +{ + const D3DKMT_DESTROYDEVICE *desc = get_ptr( &args ); + + return NtGdiDdDDIDestroyDevice( desc ); +} + +NTSTATUS WINAPI wow64_NtGdiDdDDIEscape( UINT *args ) +{ + const struct + { + D3DKMT_HANDLE hAdapter; + D3DKMT_HANDLE hDevice; + D3DKMT_ESCAPETYPE Type; + D3DDDI_ESCAPEFLAGS Flags; + ULONG pPrivateDriverData; + UINT PrivateDriverDataSize; + D3DKMT_HANDLE hContext; + } *desc32 = get_ptr( &args ); + D3DKMT_ESCAPE desc; + + if (!desc32) return STATUS_INVALID_PARAMETER; + desc.hAdapter = desc32->hAdapter; + desc.hDevice = desc32->hDevice; + desc.Type = desc32->Type; + desc.Flags = desc32->Flags; + desc.pPrivateDriverData = UlongToPtr( desc32->pPrivateDriverData ); + desc.PrivateDriverDataSize = desc32->PrivateDriverDataSize; + desc.hContext = desc32->hContext; + + return NtGdiDdDDIEscape( &desc ); +} + +NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromDeviceName( UINT *args ) +{ + struct _D3DKMT_OPENADAPTERFROMDEVICENAME + { + ULONG pDeviceName; + D3DKMT_HANDLE hAdapter; + LUID AdapterLuid; + } *desc32 = get_ptr( &args ); + D3DKMT_OPENADAPTERFROMDEVICENAME desc; + NTSTATUS status; + + if (!desc32) return STATUS_INVALID_PARAMETER; + desc.pDeviceName = UlongToPtr( desc32->pDeviceName ); + + if (!(status = NtGdiDdDDIOpenAdapterFromDeviceName( &desc ))) + { + desc32->hAdapter = desc.hAdapter; + desc32->AdapterLuid = desc.AdapterLuid; + } + return status; +} + NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT *args ) { struct @@ -375,9 +495,11 @@ NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT *args ) D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; } *desc32 = get_ptr( &args );
- D3DKMT_OPENADAPTERFROMHDC desc = { UlongToHandle( desc32->hDc ) }; + D3DKMT_OPENADAPTERFROMHDC desc; NTSTATUS status;
+ if (!desc32) return STATUS_INVALID_PARAMETER; + desc.hDc = UlongToHandle( desc32->hDc ); if (!(status = NtGdiDdDDIOpenAdapterFromHdc( &desc ))) { desc32->hAdapter = desc.hAdapter; @@ -387,6 +509,13 @@ NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT *args ) return status; }
+NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromLuid( UINT *args ) +{ + D3DKMT_OPENADAPTERFROMLUID *desc = get_ptr( &args ); + + return NtGdiDdDDIOpenAdapterFromLuid( desc ); +} + NTSTATUS WINAPI wow64_NtGdiDdDDIQueryStatistics( UINT *args ) { D3DKMT_QUERYSTATISTICS *stats = get_ptr( &args ); @@ -394,6 +523,38 @@ NTSTATUS WINAPI wow64_NtGdiDdDDIQueryStatistics( UINT *args ) return NtGdiDdDDIQueryStatistics( stats ); }
+NTSTATUS WINAPI wow64_NtGdiDdDDIQueryVideoMemoryInfo( UINT *args ) +{ + struct _D3DKMT_QUERYVIDEOMEMORYINFO + { + ULONG hProcess; + D3DKMT_HANDLE hAdapter; + D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup; + UINT64 Budget; + UINT64 CurrentUsage; + UINT64 CurrentReservation; + UINT64 AvailableForReservation; + UINT PhysicalAdapterIndex; + } *desc32 = get_ptr( &args ); + D3DKMT_QUERYVIDEOMEMORYINFO desc; + NTSTATUS status; + + if (!desc32) return STATUS_INVALID_PARAMETER; + desc.hProcess = LongToHandle( desc32->hProcess ); + desc.hAdapter = desc32->hAdapter; + desc.MemorySegmentGroup = desc32->MemorySegmentGroup; + desc.PhysicalAdapterIndex = desc32->PhysicalAdapterIndex; + + if (!(status = NtGdiDdDDIQueryVideoMemoryInfo( &desc ))) + { + desc32->Budget = desc.Budget; + desc32->CurrentUsage = desc.CurrentUsage; + desc32->CurrentReservation = desc.CurrentReservation; + desc32->AvailableForReservation = desc.AvailableForReservation; + } + return status; +} + NTSTATUS WINAPI wow64_NtGdiDdDDISetQueuedLimit( UINT *args ) { D3DKMT_SETQUEUEDLIMIT *desc = get_ptr( &args ); @@ -401,6 +562,26 @@ NTSTATUS WINAPI wow64_NtGdiDdDDISetQueuedLimit( UINT *args ) return NtGdiDdDDISetQueuedLimit( desc ); }
+NTSTATUS WINAPI wow64_NtGdiDdDDISetVidPnSourceOwner( UINT *args ) +{ + const struct + { + D3DKMT_HANDLE hDevice; + ULONG pType; + ULONG pVidPnSourceId; + UINT VidPnSourceCount; + } *desc32 = get_ptr( &args ); + D3DKMT_SETVIDPNSOURCEOWNER desc; + + if (!desc32) return STATUS_INVALID_PARAMETER; + desc.hDevice = desc32->hDevice; + desc.pType = UlongToPtr( desc32->pType ); + desc.pVidPnSourceId = UlongToPtr( desc32->pVidPnSourceId ); + desc.VidPnSourceCount = desc32->VidPnSourceCount; + + return NtGdiDdDDISetVidPnSourceOwner( &desc ); +} + NTSTATUS WINAPI wow64_NtGdiDeleteClientObj( UINT *args ) { HGDIOBJ obj = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index dfbe2129556..ea9e5043b1a 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -48,10 +48,20 @@ SYSCALL_ENTRY( NtGdiCreateRectRgn ) \ SYSCALL_ENTRY( NtGdiCreateRoundRectRgn ) \ SYSCALL_ENTRY( NtGdiCreateSolidBrush ) \ + SYSCALL_ENTRY( NtGdiDdDDICheckVidPnExclusiveOwnership ) \ + SYSCALL_ENTRY( NtGdiDdDDICloseAdapter ) \ + SYSCALL_ENTRY( NtGdiDdDDICreateDCFromMemory ) \ SYSCALL_ENTRY( NtGdiDdDDICreateDevice ) \ + SYSCALL_ENTRY( NtGdiDdDDIDestroyDCFromMemory ) \ + SYSCALL_ENTRY( NtGdiDdDDIDestroyDevice ) \ + SYSCALL_ENTRY( NtGdiDdDDIEscape ) \ + SYSCALL_ENTRY( NtGdiDdDDIOpenAdapterFromDeviceName ) \ SYSCALL_ENTRY( NtGdiDdDDIOpenAdapterFromHdc ) \ + SYSCALL_ENTRY( NtGdiDdDDIOpenAdapterFromLuid ) \ SYSCALL_ENTRY( NtGdiDdDDIQueryStatistics ) \ + SYSCALL_ENTRY( NtGdiDdDDIQueryVideoMemoryInfo ) \ SYSCALL_ENTRY( NtGdiDdDDISetQueuedLimit ) \ + SYSCALL_ENTRY( NtGdiDdDDISetVidPnSourceOwner ) \ SYSCALL_ENTRY( NtGdiDeleteClientObj ) \ SYSCALL_ENTRY( NtGdiDescribePixelFormat ) \ SYSCALL_ENTRY( NtGdiDrawStream ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 4 -- dlls/win32u/syscall.c | 4 ++ dlls/win32u/win32u.spec | 8 ++-- dlls/win32u/win32u_private.h | 17 -------- dlls/win32u/wrappers.c | 43 ------------------- dlls/wow64win/gdi.c | 83 ++++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 4 ++ 7 files changed, 95 insertions(+), 68 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index d882f0dd009..ef56fc24a5b 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1031,7 +1031,6 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca ) static struct unix_funcs unix_funcs = { NtGdiCreateCompatibleDC, - NtGdiCreateDIBitmapInternal, NtGdiCreateMetafileDC, NtGdiDeleteObjectApp, NtGdiDoPalette, @@ -1047,7 +1046,6 @@ static struct unix_funcs unix_funcs = NtGdiGetCharABCWidthsW, NtGdiGetCharWidthW, NtGdiGetCharWidthInfo, - NtGdiGetDIBitsInternal, NtGdiGetDeviceCaps, NtGdiGetDeviceGammaRamp, NtGdiGetFontData, @@ -1075,11 +1073,9 @@ static struct unix_funcs unix_funcs = NtGdiSelectFont, NtGdiSelectPen, NtGdiSetBoundsRect, - NtGdiSetDIBitsToDeviceInternal, NtGdiSetDeviceGammaRamp, NtGdiSetLayout, NtGdiSetSystemPaletteUse, - NtGdiStretchDIBitsInternal, NtGdiUnrealizeObject, NtGdiUpdateColors, NtUserDrawCaptionTemp, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 7a5f116b69e..6d9070c0ea2 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -53,6 +53,7 @@ static void * const syscalls[] = NtGdiCreateCompatibleBitmap, NtGdiCreateDIBBrush, NtGdiCreateDIBSection, + NtGdiCreateDIBitmapInternal, NtGdiCreateEllipticRgn, NtGdiCreateHalftonePalette, NtGdiCreateHatchBrushInternal, @@ -99,6 +100,7 @@ static void * const syscalls[] = NtGdiGetDCDword, NtGdiGetDCObject, NtGdiGetDCPoint, + NtGdiGetDIBitsInternal, NtGdiGetFontFileData, NtGdiGetFontFileInfo, NtGdiGetNearestPaletteIndex, @@ -139,6 +141,7 @@ static void * const syscalls[] = NtGdiSetBitmapDimension, NtGdiSetBrushOrg, NtGdiSetColorAdjustment, + NtGdiSetDIBitsToDeviceInternal, NtGdiSetMagicColors, NtGdiSetMetaRgn, NtGdiSetPixel, @@ -149,6 +152,7 @@ static void * const syscalls[] = NtGdiStartDoc, NtGdiStartPage, NtGdiStretchBlt, + NtGdiStretchDIBitsInternal, NtGdiStrokeAndFillPath, NtGdiStrokePath, NtGdiSwapBuffers, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 9d1e445bfb1..6690da46537 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -149,7 +149,7 @@ @ stdcall NtGdiCreateCompatibleDC(long) @ stdcall -syscall NtGdiCreateDIBBrush(ptr long long long long ptr) @ stdcall -syscall NtGdiCreateDIBSection(long long long ptr long long long long ptr) -@ stdcall NtGdiCreateDIBitmapInternal(long long long long ptr ptr long long long long long) +@ stdcall -syscall NtGdiCreateDIBitmapInternal(long long long long ptr ptr long long long long long) @ stdcall -syscall NtGdiCreateEllipticRgn(long long long long) @ stdcall -syscall NtGdiCreateHalftonePalette(long) @ stdcall -syscall NtGdiCreateHatchBrushInternal(long long long) @@ -466,7 +466,7 @@ @ stdcall -syscall NtGdiGetDCObject(long long) @ stdcall -syscall NtGdiGetDCPoint(long long ptr) @ stub NtGdiGetDCforBitmap -@ stdcall NtGdiGetDIBitsInternal(long long long long ptr ptr long long long) +@ stdcall -syscall NtGdiGetDIBitsInternal(long long long long ptr ptr long long long) @ stdcall NtGdiGetDeviceCaps(long long) @ stub NtGdiGetDeviceCapsAll @ stdcall NtGdiGetDeviceGammaRamp(long ptr) @@ -597,7 +597,7 @@ @ stdcall -syscall NtGdiSetBrushOrg(long long long ptr) @ stdcall -syscall NtGdiSetColorAdjustment(long ptr) @ stub NtGdiSetColorSpace -@ stdcall NtGdiSetDIBitsToDeviceInternal(long long long long long long long long long ptr ptr long long long long long) +@ stdcall -syscall NtGdiSetDIBitsToDeviceInternal(long long long long long long long long long ptr ptr long long long long long) @ stdcall NtGdiSetDeviceGammaRamp(ptr ptr) @ stub NtGdiSetFontEnumeration @ stub NtGdiSetFontXform @@ -621,7 +621,7 @@ @ stdcall -syscall NtGdiStartDoc(long ptr ptr long) @ stdcall -syscall NtGdiStartPage(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 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) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index d5415092232..6a045dbf0b1 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -36,10 +36,6 @@ struct unix_funcs { /* win32u functions */ HDC (WINAPI *pNtGdiCreateCompatibleDC)( HDC hdc ); - HBITMAP (WINAPI *pNtGdiCreateDIBitmapInternal)( HDC hdc, INT width, INT height, DWORD init, - const void *bits, const BITMAPINFO *data, - UINT coloruse, UINT max_info, UINT max_bits, - ULONG flags, HANDLE xform ); HDC (WINAPI *pNtGdiCreateMetafileDC)( HDC hdc ); BOOL (WINAPI *pNtGdiDeleteObjectApp)( HGDIOBJ obj ); LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, @@ -61,9 +57,6 @@ struct unix_funcs BOOL (WINAPI *pNtGdiGetCharWidthW)( HDC hdc, UINT first_char, UINT last_char, WCHAR *chars, ULONG flags, void *buffer ); BOOL (WINAPI *pNtGdiGetCharWidthInfo)( HDC hdc, struct char_width_info *info ); - INT (WINAPI *pNtGdiGetDIBitsInternal)( HDC hdc, HBITMAP hbitmap, UINT startscan, UINT lines, - void *bits, BITMAPINFO *info, UINT coloruse, - UINT max_bits, UINT max_info ); INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap ); BOOL (WINAPI *pNtGdiGetDeviceGammaRamp)( HDC hdc, void *ptr ); DWORD (WINAPI *pNtGdiGetFontData)( HDC hdc, DWORD table, DWORD offset, void *buffer, DWORD length ); @@ -97,19 +90,9 @@ struct unix_funcs HGDIOBJ (WINAPI *pNtGdiSelectFont)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectPen)( HDC hdc, HGDIOBJ handle ); UINT (WINAPI *pNtGdiSetBoundsRect)( HDC hdc, const RECT *rect, UINT flags ); - INT (WINAPI *pNtGdiSetDIBitsToDeviceInternal)( HDC hdc, INT x_dst, INT y_dst, DWORD cx, - DWORD cy, INT x_src, INT y_src, UINT startscan, - UINT lines, const void *bits, const BITMAPINFO *bmi, - UINT coloruse, UINT max_bits, UINT max_info, - BOOL xform_coords, HANDLE xform ); BOOL (WINAPI *pNtGdiSetDeviceGammaRamp)( HDC hdc, void *ptr ); DWORD (WINAPI *pNtGdiSetLayout)( HDC hdc, LONG wox, DWORD layout ); UINT (WINAPI *pNtGdiSetSystemPaletteUse)( HDC hdc, UINT use ); - 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 *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 7f2dae040cf..dc3733dc90e 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -30,16 +30,6 @@ HDC WINAPI NtGdiCreateCompatibleDC( HDC hdc ) return unix_funcs->pNtGdiCreateCompatibleDC( hdc ); }
-HBITMAP WINAPI NtGdiCreateDIBitmapInternal( HDC hdc, INT width, INT height, DWORD init, - const void *bits, const BITMAPINFO *data, - UINT coloruse, UINT max_info, UINT max_bits, - ULONG flags, HANDLE xform ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiCreateDIBitmapInternal( hdc, width, height, init, bits, data, - coloruse, max_info, max_bits, flags, xform ); -} - HDC WINAPI NtGdiCreateMetafileDC( HDC hdc ) { if (!unix_funcs) return 0; @@ -144,15 +134,6 @@ BOOL WINAPI NtGdiGetCharWidthInfo( HDC hdc, struct char_width_info *info ) return unix_funcs->pNtGdiGetCharWidthInfo( hdc, info ); }
-INT WINAPI NtGdiGetDIBitsInternal( HDC hdc, HBITMAP hbitmap, UINT startscan, UINT lines, - void *bits, BITMAPINFO *info, UINT coloruse, - UINT max_bits, UINT max_info ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetDIBitsInternal( hdc, hbitmap, startscan, lines, bits, info, coloruse, - max_bits, max_info ); -} - INT WINAPI NtGdiGetDeviceCaps( HDC hdc, INT cap ) { if (!unix_funcs) return 0; @@ -321,18 +302,6 @@ UINT WINAPI NtGdiSetBoundsRect( HDC hdc, const RECT *rect, UINT flags ) return unix_funcs->pNtGdiSetBoundsRect( hdc, rect, flags ); }
-INT WINAPI NtGdiSetDIBitsToDeviceInternal( HDC hdc, INT x_dst, INT y_dst, DWORD cx, - DWORD cy, INT x_src, INT y_src, UINT startscan, - UINT lines, const void *bits, const BITMAPINFO *bmi, - UINT coloruse, UINT max_bits, UINT max_info, - BOOL xform_coords, HANDLE xform ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiSetDIBitsToDeviceInternal( hdc, x_dst, y_dst, cx, cy, x_src, y_src, - startscan, lines, bits, bmi, coloruse, - max_bits, max_info, xform_coords, xform ); -} - BOOL WINAPI NtGdiSetDeviceGammaRamp( HDC hdc, void *ptr ) { if (!unix_funcs) return FALSE; @@ -351,18 +320,6 @@ UINT WINAPI NtGdiSetSystemPaletteUse( HDC hdc, UINT use ) return unix_funcs->pNtGdiSetSystemPaletteUse( hdc, use ); }
-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, - UINT coloruse, DWORD rop, UINT max_info, UINT max_bits, - HANDLE xform ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiStretchDIBitsInternal( hdc, x_dst, y_dst, width_dst, height_dst, - x_src, y_src, width_src, height_src, bits, bmi, - coloruse, rop, max_info, max_bits, xform ); -} - BOOL WINAPI NtGdiUnrealizeObject( HGDIOBJ obj ) { if (!unix_funcs) return FALSE; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 36737b23e61..d0dfbccaad1 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -249,6 +249,25 @@ NTSTATUS WINAPI wow64_NtGdiCreateDIBSection( UINT *args ) return HandleToUlong( ret ); }
+NTSTATUS WINAPI wow64_NtGdiCreateDIBitmapInternal( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT width = get_ulong( &args ); + INT height = get_ulong( &args ); + DWORD init = get_ulong( &args ); + const void *bits = get_ptr( &args ); + const BITMAPINFO *data = get_ptr( &args ); + UINT coloruse = get_ulong( &args ); + UINT max_info = get_ulong( &args ); + UINT max_bits = get_ulong( &args ); + ULONG flags = get_ulong( &args ); + HANDLE xform = get_handle( &args ); + + HBITMAP ret = NtGdiCreateDIBitmapInternal( hdc, width, height, init, bits, data, + coloruse, max_info, max_bits, flags, xform ); + return HandleToUlong( ret ); +} + NTSTATUS WINAPI wow64_NtGdiCreateEllipticRgn( UINT *args ) { INT left = get_ulong( &args ); @@ -870,6 +889,22 @@ NTSTATUS WINAPI wow64_NtGdiGetDCPoint( UINT *args ) return NtGdiGetDCPoint( hdc, method, result ); }
+NTSTATUS WINAPI wow64_NtGdiGetDIBitsInternal( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HBITMAP hbitmap = get_handle( &args ); + UINT startscan = get_ulong( &args ); + UINT lines = get_ulong( &args ); + void *bits = get_ptr( &args ); + BITMAPINFO *info = get_ptr( &args ); + UINT coloruse = get_ulong( &args ); + UINT max_bits = get_ulong( &args ); + UINT max_info = get_ulong( &args ); + + return NtGdiGetDIBitsInternal( hdc, hbitmap, startscan, lines, bits, info, coloruse, + max_bits, max_info ); +} + NTSTATUS WINAPI wow64_NtGdiGetFontFileData( UINT *args ) { DWORD instance_id = get_ulong( &args ); @@ -1280,6 +1315,30 @@ NTSTATUS WINAPI wow64_NtGdiSetColorAdjustment( UINT *args ) return NtGdiSetColorAdjustment( hdc, ca ); }
+NTSTATUS WINAPI wow64_NtGdiSetDIBitsToDeviceInternal( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x_dst = get_ulong( &args ); + INT y_dst = get_ulong( &args ); + DWORD cx = get_ulong( &args ); + DWORD cy = get_ulong( &args ); + INT x_src = get_ulong( &args ); + INT y_src = get_ulong( &args ); + UINT startscan = get_ulong( &args ); + UINT lines = get_ulong( &args ); + const void *bits = get_ptr( &args ); + const BITMAPINFO *bmi = get_ptr( &args ); + UINT coloruse = get_ulong( &args ); + UINT max_bits = get_ulong( &args ); + UINT max_info = get_ulong( &args ); + BOOL xform_coords = get_ulong( &args ); + HANDLE xform = get_handle( &args ); + + return NtGdiSetDIBitsToDeviceInternal( hdc, x_dst, y_dst, cx, cy, x_src, y_src, + startscan, lines, bits, bmi, coloruse, + max_bits, max_info, xform_coords, xform ); +} + NTSTATUS WINAPI wow64_NtGdiSetMagicColors( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1395,6 +1454,30 @@ NTSTATUS WINAPI wow64_NtGdiStretchBlt( UINT *args ) x_src, y_src, width_src, height_src, rop, bk_color ); }
+NTSTATUS WINAPI wow64_NtGdiStretchDIBitsInternal( 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 ); + INT x_src = get_ulong( &args ); + INT y_src = get_ulong( &args ); + INT width_src = get_ulong( &args ); + INT height_src = get_ulong( &args ); + const void *bits = get_ptr( &args ); + const BITMAPINFO *bmi = get_ptr( &args ); + UINT coloruse = get_ulong( &args ); + DWORD rop = get_ulong( &args ); + UINT max_info = get_ulong( &args ); + UINT max_bits = get_ulong( &args ); + HANDLE xform = get_handle( &args ); + + return NtGdiStretchDIBitsInternal( hdc, x_dst, y_dst, width_dst, height_dst, + x_src, y_src, width_src, height_src, bits, bmi, + coloruse, rop, max_info, max_bits, xform ); +} + NTSTATUS WINAPI wow64_NtGdiStrokeAndFillPath( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index ea9e5043b1a..7425b59bcdd 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -39,6 +39,7 @@ SYSCALL_ENTRY( NtGdiCreateCompatibleBitmap ) \ SYSCALL_ENTRY( NtGdiCreateDIBBrush ) \ SYSCALL_ENTRY( NtGdiCreateDIBSection ) \ + SYSCALL_ENTRY( NtGdiCreateDIBitmapInternal ) \ SYSCALL_ENTRY( NtGdiCreateEllipticRgn ) \ SYSCALL_ENTRY( NtGdiCreateHalftonePalette ) \ SYSCALL_ENTRY( NtGdiCreateHatchBrushInternal ) \ @@ -85,6 +86,7 @@ SYSCALL_ENTRY( NtGdiGetDCDword ) \ SYSCALL_ENTRY( NtGdiGetDCObject ) \ SYSCALL_ENTRY( NtGdiGetDCPoint ) \ + SYSCALL_ENTRY( NtGdiGetDIBitsInternal ) \ SYSCALL_ENTRY( NtGdiGetFontFileData ) \ SYSCALL_ENTRY( NtGdiGetFontFileInfo ) \ SYSCALL_ENTRY( NtGdiGetNearestPaletteIndex ) \ @@ -125,6 +127,7 @@ SYSCALL_ENTRY( NtGdiSetBitmapDimension ) \ SYSCALL_ENTRY( NtGdiSetBrushOrg ) \ SYSCALL_ENTRY( NtGdiSetColorAdjustment ) \ + SYSCALL_ENTRY( NtGdiSetDIBitsToDeviceInternal ) \ SYSCALL_ENTRY( NtGdiSetMagicColors ) \ SYSCALL_ENTRY( NtGdiSetMetaRgn ) \ SYSCALL_ENTRY( NtGdiSetPixel ) \ @@ -135,6 +138,7 @@ SYSCALL_ENTRY( NtGdiStartDoc ) \ SYSCALL_ENTRY( NtGdiStartPage ) \ SYSCALL_ENTRY( NtGdiStretchBlt ) \ + SYSCALL_ENTRY( NtGdiStretchDIBitsInternal ) \ SYSCALL_ENTRY( NtGdiStrokeAndFillPath ) \ SYSCALL_ENTRY( NtGdiStrokePath ) \ SYSCALL_ENTRY( NtGdiSwapBuffers ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 5 ----- dlls/win32u/syscall.c | 5 +++++ dlls/win32u/win32u.spec | 10 ++++----- dlls/win32u/win32u_private.h | 6 ------ dlls/win32u/wrappers.c | 31 ---------------------------- dlls/wow64win/gdi.c | 40 ++++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 5 +++++ 7 files changed, 55 insertions(+), 47 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index ef56fc24a5b..431bd9360c9 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1030,8 +1030,6 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca )
static struct unix_funcs unix_funcs = { - NtGdiCreateCompatibleDC, - NtGdiCreateMetafileDC, NtGdiDeleteObjectApp, NtGdiDoPalette, NtGdiEnumFonts, @@ -1066,9 +1064,7 @@ static struct unix_funcs unix_funcs = NtGdiOffsetClipRgn, NtGdiPtVisible, NtGdiRectVisible, - NtGdiResetDC, NtGdiResizePalette, - NtGdiRestoreDC, NtGdiSelectBrush, NtGdiSelectFont, NtGdiSelectPen, @@ -1077,7 +1073,6 @@ static struct unix_funcs unix_funcs = NtGdiSetLayout, NtGdiSetSystemPaletteUse, NtGdiUnrealizeObject, - NtGdiUpdateColors, NtUserDrawCaptionTemp, NtUserDrawMenuBarTemp, NtUserEndPaint, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 6d9070c0ea2..db951627c0c 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -51,12 +51,14 @@ static void * const syscalls[] = NtGdiCreateBitmap, NtGdiCreateClientObj, NtGdiCreateCompatibleBitmap, + NtGdiCreateCompatibleDC, NtGdiCreateDIBBrush, NtGdiCreateDIBSection, NtGdiCreateDIBitmapInternal, NtGdiCreateEllipticRgn, NtGdiCreateHalftonePalette, NtGdiCreateHatchBrushInternal, + NtGdiCreateMetafileDC, NtGdiCreatePaletteInternal, NtGdiCreatePatternBrushInternal, NtGdiCreatePen, @@ -131,6 +133,8 @@ static void * const syscalls[] = NtGdiRectangle, NtGdiRemoveFontMemResourceEx, NtGdiRemoveFontResourceW, + NtGdiResetDC, + NtGdiRestoreDC, NtGdiRoundRect, NtGdiSaveDC, NtGdiScaleViewportExtEx, @@ -158,6 +162,7 @@ static void * const syscalls[] = NtGdiSwapBuffers, NtGdiTransformPoints, NtGdiTransparentBlt, + NtGdiUpdateColors, NtGdiWidenPath, NtUserActivateKeyboardLayout, NtUserAddClipboardFormatListener, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 6690da46537..aa95d936c49 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -146,14 +146,14 @@ @ stub NtGdiCreateColorSpace @ stub NtGdiCreateColorTransform @ stdcall -syscall NtGdiCreateCompatibleBitmap(long long long) -@ stdcall NtGdiCreateCompatibleDC(long) +@ stdcall -syscall NtGdiCreateCompatibleDC(long) @ stdcall -syscall NtGdiCreateDIBBrush(ptr long long long long ptr) @ stdcall -syscall NtGdiCreateDIBSection(long long long ptr long long long long ptr) @ stdcall -syscall NtGdiCreateDIBitmapInternal(long long long long ptr ptr long long long long long) @ stdcall -syscall NtGdiCreateEllipticRgn(long long long long) @ stdcall -syscall NtGdiCreateHalftonePalette(long) @ stdcall -syscall NtGdiCreateHatchBrushInternal(long long long) -@ stdcall NtGdiCreateMetafileDC(long) +@ stdcall -syscall NtGdiCreateMetafileDC(long) @ stub NtGdiCreateOPMProtectedOutput @ stub NtGdiCreateOPMProtectedOutputs @ stdcall -syscall NtGdiCreatePaletteInternal(ptr long) @@ -570,9 +570,9 @@ @ stdcall -syscall NtGdiRemoveFontMemResourceEx(long) @ stdcall -syscall NtGdiRemoveFontResourceW(wstr long long long long ptr) @ stub NtGdiRemoveMergeFont -@ stdcall NtGdiResetDC(long ptr ptr ptr ptr) +@ stdcall -syscall NtGdiResetDC(long ptr ptr ptr ptr) @ stdcall NtGdiResizePalette(long long) -@ stdcall NtGdiRestoreDC(long long) +@ stdcall -syscall NtGdiRestoreDC(long long) @ stdcall -syscall NtGdiRoundRect(long long long long long long long) @ stub NtGdiSTROBJ_bEnum @ stub NtGdiSTROBJ_bEnumPositionsOnly @@ -631,7 +631,7 @@ @ stub NtGdiUnloadPrinterDriver @ stub NtGdiUnmapMemFont @ stdcall NtGdiUnrealizeObject(long) -@ stdcall NtGdiUpdateColors(long) +@ stdcall -syscall NtGdiUpdateColors(long) @ stub NtGdiUpdateTransform @ stdcall -syscall NtGdiWidenPath(long) @ stub NtGdiXFORMOBJ_bApplyXform diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 6a045dbf0b1..07328cb1f95 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -35,8 +35,6 @@ struct unix_funcs { /* win32u functions */ - HDC (WINAPI *pNtGdiCreateCompatibleDC)( HDC hdc ); - HDC (WINAPI *pNtGdiCreateMetafileDC)( HDC hdc ); BOOL (WINAPI *pNtGdiDeleteObjectApp)( HGDIOBJ obj ); LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, DWORD func, BOOL inbound ); @@ -82,10 +80,7 @@ struct unix_funcs INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); 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 ); HGDIOBJ (WINAPI *pNtGdiSelectBrush)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectFont)( HDC hdc, HGDIOBJ handle ); HGDIOBJ (WINAPI *pNtGdiSelectPen)( HDC hdc, HGDIOBJ handle ); @@ -94,7 +89,6 @@ struct unix_funcs DWORD (WINAPI *pNtGdiSetLayout)( HDC hdc, LONG wox, DWORD layout ); UINT (WINAPI *pNtGdiSetSystemPaletteUse)( HDC hdc, UINT use ); BOOL (WINAPI *pNtGdiUnrealizeObject)( HGDIOBJ obj ); - BOOL (WINAPI *pNtGdiUpdateColors)( HDC hdc ); BOOL (WINAPI *pNtUserDrawCaptionTemp)( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ); DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index dc3733dc90e..27da68d65d5 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -24,18 +24,6 @@
static const struct unix_funcs *unix_funcs;
-HDC WINAPI NtGdiCreateCompatibleDC( HDC hdc ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiCreateCompatibleDC( hdc ); -} - -HDC WINAPI NtGdiCreateMetafileDC( HDC hdc ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiCreateMetafileDC( hdc ); -} - BOOL WINAPI NtGdiDeleteObjectApp( HGDIOBJ obj ) { if (!unix_funcs) return FALSE; @@ -259,25 +247,12 @@ BOOL WINAPI NtGdiRectVisible( HDC hdc, const RECT *rect ) return unix_funcs->pNtGdiRectVisible( hdc, rect ); }
-BOOL WINAPI NtGdiResetDC( HDC hdc, const DEVMODEW *devmode, BOOL *banding, - DRIVER_INFO_2W *driver_info, void *dev ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiResetDC( hdc, devmode, banding, driver_info, dev ); -} - BOOL WINAPI NtGdiResizePalette( HPALETTE palette, UINT count ) { if (!unix_funcs) return FALSE; return unix_funcs->pNtGdiResizePalette( palette, count ); }
-BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiRestoreDC( hdc, level ); -} - HGDIOBJ WINAPI NtGdiSelectBrush( HDC hdc, HGDIOBJ handle ) { if (!unix_funcs) return 0; @@ -326,12 +301,6 @@ BOOL WINAPI NtGdiUnrealizeObject( HGDIOBJ obj ) return unix_funcs->pNtGdiUnrealizeObject( obj ); }
-BOOL WINAPI NtGdiUpdateColors( HDC hdc ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiUpdateColors( hdc ); -} - BOOL WINAPI NtUserDrawCaptionTemp( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ) { diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index d0dfbccaad1..a7c175591ae 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -216,6 +216,13 @@ NTSTATUS WINAPI wow64_NtGdiCreateCompatibleBitmap( UINT *args ) return HandleToUlong( NtGdiCreateCompatibleBitmap( hdc, width, height )); }
+NTSTATUS WINAPI wow64_NtGdiCreateCompatibleDC( UINT *args ) +{ + HDC hdc = get_handle( &args ); + + return HandleToUlong( NtGdiCreateCompatibleDC( hdc )); +} + NTSTATUS WINAPI wow64_NtGdiCreateDIBBrush( UINT *args ) { const void *data = get_ptr( &args ); @@ -294,6 +301,13 @@ NTSTATUS WINAPI wow64_NtGdiCreateHatchBrushInternal( UINT *args ) return HandleToULong( NtGdiCreateHatchBrushInternal( style, color, pen )); }
+NTSTATUS WINAPI wow64_NtGdiCreateMetafileDC( UINT *args ) +{ + HDC hdc = get_handle( &args ); + + return HandleToUlong( NtGdiCreateMetafileDC( hdc )); +} + NTSTATUS WINAPI wow64_NtGdiCreatePaletteInternal( UINT *args ) { const LOGPALETTE *palette = get_ptr( &args ); @@ -1068,6 +1082,25 @@ NTSTATUS WINAPI wow64_NtGdiGetRegionData( UINT *args ) return NtGdiGetRegionData( hrgn, count, data ); }
+NTSTATUS WINAPI wow64_NtGdiResetDC( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const DEVMODEW *devmode = get_ptr( &args ); + BOOL *banding = get_ptr( &args ); + DRIVER_INFO_2W *driver_info = get_ptr( &args ); + void *dev = get_ptr( &args ); + + return NtGdiResetDC( hdc, devmode, banding, driver_info, dev ); +} + +NTSTATUS WINAPI wow64_NtGdiRestoreDC( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT level = get_ulong( &args ); + + return NtGdiRestoreDC( hdc, level ); +} + NTSTATUS WINAPI wow64_NtGdiGetRgnBox( UINT *args ) { HRGN hrgn = get_handle( &args ); @@ -1528,6 +1561,13 @@ NTSTATUS WINAPI wow64_NtGdiTransformPoints( UINT *args ) return NtGdiTransformPoints( hdc, points_in, points_out, count, mode ); }
+NTSTATUS WINAPI wow64_NtGdiUpdateColors( UINT *args ) +{ + HDC hdc = get_handle( &args ); + + return NtGdiUpdateColors( hdc ); +} + NTSTATUS WINAPI wow64_NtGdiWidenPath( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 7425b59bcdd..90e1d2d3e58 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -37,12 +37,14 @@ SYSCALL_ENTRY( NtGdiCreateBitmap ) \ SYSCALL_ENTRY( NtGdiCreateClientObj ) \ SYSCALL_ENTRY( NtGdiCreateCompatibleBitmap ) \ + SYSCALL_ENTRY( NtGdiCreateCompatibleDC ) \ SYSCALL_ENTRY( NtGdiCreateDIBBrush ) \ SYSCALL_ENTRY( NtGdiCreateDIBSection ) \ SYSCALL_ENTRY( NtGdiCreateDIBitmapInternal ) \ SYSCALL_ENTRY( NtGdiCreateEllipticRgn ) \ SYSCALL_ENTRY( NtGdiCreateHalftonePalette ) \ SYSCALL_ENTRY( NtGdiCreateHatchBrushInternal ) \ + SYSCALL_ENTRY( NtGdiCreateMetafileDC ) \ SYSCALL_ENTRY( NtGdiCreatePaletteInternal ) \ SYSCALL_ENTRY( NtGdiCreatePatternBrushInternal ) \ SYSCALL_ENTRY( NtGdiCreatePen ) \ @@ -117,6 +119,8 @@ SYSCALL_ENTRY( NtGdiRectangle ) \ SYSCALL_ENTRY( NtGdiRemoveFontMemResourceEx ) \ SYSCALL_ENTRY( NtGdiRemoveFontResourceW ) \ + SYSCALL_ENTRY( NtGdiResetDC ) \ + SYSCALL_ENTRY( NtGdiRestoreDC ) \ SYSCALL_ENTRY( NtGdiRoundRect ) \ SYSCALL_ENTRY( NtGdiSaveDC ) \ SYSCALL_ENTRY( NtGdiScaleViewportExtEx ) \ @@ -144,6 +148,7 @@ SYSCALL_ENTRY( NtGdiSwapBuffers ) \ SYSCALL_ENTRY( NtGdiTransformPoints ) \ SYSCALL_ENTRY( NtGdiTransparentBlt ) \ + SYSCALL_ENTRY( NtGdiUpdateColors ) \ SYSCALL_ENTRY( NtGdiWidenPath ) \ SYSCALL_ENTRY( NtUserActivateKeyboardLayout ) \ SYSCALL_ENTRY( NtUserAddClipboardFormatListener ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 5 ----- dlls/win32u/syscall.c | 5 +++++ dlls/win32u/win32u.spec | 10 +++++----- dlls/win32u/win32u_private.h | 5 ----- dlls/win32u/wrappers.c | 30 ---------------------------- dlls/wow64win/gdi.c | 38 ++++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 5 +++++ 7 files changed, 53 insertions(+), 45 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 431bd9360c9..c45c82bf87b 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1030,7 +1030,6 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca )
static struct unix_funcs unix_funcs = { - NtGdiDeleteObjectApp, NtGdiDoPalette, NtGdiEnumFonts, NtGdiExcludeClipRect, @@ -1065,14 +1064,10 @@ static struct unix_funcs unix_funcs = NtGdiPtVisible, NtGdiRectVisible, NtGdiResizePalette, - NtGdiSelectBrush, - NtGdiSelectFont, - NtGdiSelectPen, NtGdiSetBoundsRect, NtGdiSetDeviceGammaRamp, NtGdiSetLayout, NtGdiSetSystemPaletteUse, - NtGdiUnrealizeObject, NtUserDrawCaptionTemp, NtUserDrawMenuBarTemp, NtUserEndPaint, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index db951627c0c..cbbf6f553cd 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -80,6 +80,7 @@ static void * const syscalls[] = NtGdiDdDDISetQueuedLimit, NtGdiDdDDISetVidPnSourceOwner, NtGdiDeleteClientObj, + NtGdiDeleteObjectApp, NtGdiDescribePixelFormat, NtGdiDrawStream, NtGdiEllipse, @@ -140,7 +141,10 @@ static void * const syscalls[] = NtGdiScaleViewportExtEx, NtGdiScaleWindowExtEx, NtGdiSelectBitmap, + NtGdiSelectBrush, NtGdiSelectClipPath, + NtGdiSelectFont, + NtGdiSelectPen, NtGdiSetBitmapBits, NtGdiSetBitmapDimension, NtGdiSetBrushOrg, @@ -162,6 +166,7 @@ static void * const syscalls[] = NtGdiSwapBuffers, NtGdiTransformPoints, NtGdiTransparentBlt, + NtGdiUnrealizeObject, NtGdiUpdateColors, NtGdiWidenPath, NtUserActivateKeyboardLayout, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index aa95d936c49..e4a6f281227 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -367,7 +367,7 @@ @ stdcall -syscall NtGdiDeleteClientObj(long) @ stub NtGdiDeleteColorSpace @ stub NtGdiDeleteColorTransform -@ stdcall NtGdiDeleteObjectApp(long ) +@ stdcall -syscall NtGdiDeleteObjectApp(long ) @ stdcall -syscall NtGdiDescribePixelFormat(long long long ptr) @ stub NtGdiDestroyOPMProtectedOutput @ stub NtGdiDestroyPhysicalMonitor @@ -585,10 +585,10 @@ @ stdcall -syscall NtGdiScaleViewportExtEx(long long long long long ptr) @ stdcall -syscall NtGdiScaleWindowExtEx(long long long long long ptr) @ stdcall -syscall NtGdiSelectBitmap(long long) -@ stdcall NtGdiSelectBrush(long long) +@ stdcall -syscall NtGdiSelectBrush(long long) @ stdcall -syscall NtGdiSelectClipPath(long long) -@ stdcall NtGdiSelectFont(long long) -@ stdcall NtGdiSelectPen(long long) +@ stdcall -syscall NtGdiSelectFont(long long) +@ stdcall -syscall NtGdiSelectPen(long long) @ stub NtGdiSetBitmapAttributes @ stdcall -syscall NtGdiSetBitmapBits(long long ptr) @ stdcall -syscall NtGdiSetBitmapDimension(long long long ptr) @@ -630,7 +630,7 @@ @ stub NtGdiUMPDEngFreeUserMem @ stub NtGdiUnloadPrinterDriver @ stub NtGdiUnmapMemFont -@ stdcall NtGdiUnrealizeObject(long) +@ stdcall -syscall NtGdiUnrealizeObject(long) @ stdcall -syscall NtGdiUpdateColors(long) @ stub NtGdiUpdateTransform @ stdcall -syscall NtGdiWidenPath(long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 07328cb1f95..17aed3d0c44 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -35,7 +35,6 @@ struct unix_funcs { /* win32u functions */ - BOOL (WINAPI *pNtGdiDeleteObjectApp)( HGDIOBJ obj ); LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, DWORD func, BOOL inbound ); BOOL (WINAPI *pNtGdiEnumFonts)( HDC hdc, ULONG type, ULONG win32_compat, ULONG face_name_len, @@ -81,14 +80,10 @@ struct unix_funcs BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y ); BOOL (WINAPI *pNtGdiRectVisible)( HDC hdc, const RECT *rect ); BOOL (WINAPI *pNtGdiResizePalette)( HPALETTE palette, UINT count ); - HGDIOBJ (WINAPI *pNtGdiSelectBrush)( HDC hdc, HGDIOBJ handle ); - HGDIOBJ (WINAPI *pNtGdiSelectFont)( HDC hdc, HGDIOBJ handle ); - HGDIOBJ (WINAPI *pNtGdiSelectPen)( HDC hdc, HGDIOBJ handle ); UINT (WINAPI *pNtGdiSetBoundsRect)( HDC hdc, const RECT *rect, UINT flags ); 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 *pNtGdiUnrealizeObject)( HGDIOBJ obj ); BOOL (WINAPI *pNtUserDrawCaptionTemp)( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ); DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 27da68d65d5..b20bd2a82b1 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -24,12 +24,6 @@
static const struct unix_funcs *unix_funcs;
-BOOL WINAPI NtGdiDeleteObjectApp( HGDIOBJ obj ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiDeleteObjectApp( obj ); -} - LONG WINAPI NtGdiDoPalette( HGDIOBJ handle, WORD start, WORD count, void *entries, DWORD func, BOOL inbound ) { @@ -253,24 +247,6 @@ BOOL WINAPI NtGdiResizePalette( HPALETTE palette, UINT count ) return unix_funcs->pNtGdiResizePalette( palette, count ); }
-HGDIOBJ WINAPI NtGdiSelectBrush( HDC hdc, HGDIOBJ handle ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiSelectBrush( hdc, handle ); -} - -HGDIOBJ WINAPI NtGdiSelectFont( HDC hdc, HGDIOBJ handle ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiSelectFont( hdc, handle ); -} - -HGDIOBJ WINAPI NtGdiSelectPen( HDC hdc, HGDIOBJ handle ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiSelectPen( hdc, handle ); -} - UINT WINAPI NtGdiSetBoundsRect( HDC hdc, const RECT *rect, UINT flags ) { if (!unix_funcs) return 0; @@ -295,12 +271,6 @@ UINT WINAPI NtGdiSetSystemPaletteUse( HDC hdc, UINT use ) return unix_funcs->pNtGdiSetSystemPaletteUse( hdc, use ); }
-BOOL WINAPI NtGdiUnrealizeObject( HGDIOBJ obj ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiUnrealizeObject( obj ); -} - BOOL WINAPI NtUserDrawCaptionTemp( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ) { diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index a7c175591ae..e2c25032741 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -622,6 +622,13 @@ NTSTATUS WINAPI wow64_NtGdiDeleteClientObj( UINT *args ) return NtGdiDeleteClientObj( obj ); }
+NTSTATUS WINAPI wow64_NtGdiDeleteObjectApp( UINT *args ) +{ + HGDIOBJ obj = get_handle( &args ); + + return NtGdiDeleteObjectApp( obj ); +} + NTSTATUS WINAPI wow64_NtGdiDescribePixelFormat( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1303,6 +1310,14 @@ NTSTATUS WINAPI wow64_NtGdiSelectBitmap( UINT *args ) return HandleToUlong( NtGdiSelectBitmap( hdc, handle )); }
+NTSTATUS WINAPI wow64_NtGdiSelectBrush( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HGDIOBJ handle = get_handle( &args ); + + return HandleToUlong( NtGdiSelectBrush( hdc, handle )); +} + NTSTATUS WINAPI wow64_NtGdiSelectClipPath( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1311,6 +1326,22 @@ NTSTATUS WINAPI wow64_NtGdiSelectClipPath( UINT *args ) return NtGdiSelectClipPath( hdc, mode ); }
+NTSTATUS WINAPI wow64_NtGdiSelectFont( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HGDIOBJ handle = get_handle( &args ); + + return HandleToUlong( NtGdiSelectFont( hdc, handle )); +} + +NTSTATUS WINAPI wow64_NtGdiSelectPen( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HGDIOBJ handle = get_handle( &args ); + + return HandleToUlong( NtGdiSelectPen( hdc, handle )); +} + NTSTATUS WINAPI wow64_NtGdiSetBitmapBits( UINT *args ) { HBITMAP hbitmap = get_handle( &args ); @@ -1561,6 +1592,13 @@ NTSTATUS WINAPI wow64_NtGdiTransformPoints( UINT *args ) return NtGdiTransformPoints( hdc, points_in, points_out, count, mode ); }
+NTSTATUS WINAPI wow64_NtGdiUnrealizeObject( UINT *args ) +{ + HGDIOBJ obj = get_handle( &args ); + + return NtGdiUnrealizeObject( obj ); +} + NTSTATUS WINAPI wow64_NtGdiUpdateColors( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 90e1d2d3e58..ee0c94047af 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -66,6 +66,7 @@ SYSCALL_ENTRY( NtGdiDdDDISetQueuedLimit ) \ SYSCALL_ENTRY( NtGdiDdDDISetVidPnSourceOwner ) \ SYSCALL_ENTRY( NtGdiDeleteClientObj ) \ + SYSCALL_ENTRY( NtGdiDeleteObjectApp ) \ SYSCALL_ENTRY( NtGdiDescribePixelFormat ) \ SYSCALL_ENTRY( NtGdiDrawStream ) \ SYSCALL_ENTRY( NtGdiEllipse ) \ @@ -126,7 +127,10 @@ SYSCALL_ENTRY( NtGdiScaleViewportExtEx ) \ SYSCALL_ENTRY( NtGdiScaleWindowExtEx ) \ SYSCALL_ENTRY( NtGdiSelectBitmap ) \ + SYSCALL_ENTRY( NtGdiSelectBrush ) \ SYSCALL_ENTRY( NtGdiSelectClipPath ) \ + SYSCALL_ENTRY( NtGdiSelectFont ) \ + SYSCALL_ENTRY( NtGdiSelectPen ) \ SYSCALL_ENTRY( NtGdiSetBitmapBits ) \ SYSCALL_ENTRY( NtGdiSetBitmapDimension ) \ SYSCALL_ENTRY( NtGdiSetBrushOrg ) \ @@ -148,6 +152,7 @@ SYSCALL_ENTRY( NtGdiSwapBuffers ) \ SYSCALL_ENTRY( NtGdiTransformPoints ) \ SYSCALL_ENTRY( NtGdiTransparentBlt ) \ + SYSCALL_ENTRY( NtGdiUnrealizeObject ) \ SYSCALL_ENTRY( NtGdiUpdateColors ) \ SYSCALL_ENTRY( NtGdiWidenPath ) \ SYSCALL_ENTRY( NtUserActivateKeyboardLayout ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 10 -- dlls/win32u/syscall.c | 10 ++ dlls/win32u/win32u.spec | 20 ++-- dlls/win32u/win32u_private.h | 16 --- dlls/win32u/wrappers.c | 67 ------------ dlls/wow64win/gdi.c | 194 +++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 10 ++ 7 files changed, 224 insertions(+), 103 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index c45c82bf87b..8d3d2719728 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1031,18 +1031,13 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca ) static struct unix_funcs unix_funcs = { NtGdiDoPalette, - NtGdiEnumFonts, NtGdiExcludeClipRect, NtGdiExtEscape, - NtGdiExtTextOutW, NtGdiExtSelectClipRgn, NtGdiFontIsLinked, NtGdiGetAndSetDCDword, NtGdiGetAppClipBox, NtGdiGetBoundsRect, - NtGdiGetCharABCWidthsW, - NtGdiGetCharWidthW, - NtGdiGetCharWidthInfo, NtGdiGetDeviceCaps, NtGdiGetDeviceGammaRamp, NtGdiGetFontData, @@ -1051,14 +1046,9 @@ static struct unix_funcs unix_funcs = NtGdiGetGlyphOutline, NtGdiGetKerningPairs, NtGdiGetNearestColor, - NtGdiGetOutlineTextMetricsInternalW, NtGdiGetRandomRgn, NtGdiGetRasterizerCaps, NtGdiGetRealizationInfo, - NtGdiGetTextCharsetInfo, - NtGdiGetTextExtentExW, - NtGdiGetTextFaceW, - NtGdiGetTextMetricsW, NtGdiIntersectClipRect, NtGdiOffsetClipRgn, NtGdiPtVisible, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index cbbf6f553cd..cdf86da7c89 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -87,11 +87,13 @@ static void * const syscalls[] = NtGdiEndDoc, NtGdiEndPage, NtGdiEndPath, + NtGdiEnumFonts, NtGdiEqualRgn, NtGdiExtCreatePen, NtGdiExtCreateRegion, NtGdiExtFloodFill, NtGdiExtGetObjectW, + NtGdiExtTextOutW, NtGdiFillPath, NtGdiFillRgn, NtGdiFlattenPath, @@ -99,6 +101,9 @@ static void * const syscalls[] = NtGdiFrameRgn, NtGdiGetBitmapBits, NtGdiGetBitmapDimension, + NtGdiGetCharABCWidthsW, + NtGdiGetCharWidthInfo, + NtGdiGetCharWidthW, NtGdiGetColorAdjustment, NtGdiGetDCDword, NtGdiGetDCObject, @@ -107,12 +112,17 @@ static void * const syscalls[] = NtGdiGetFontFileData, NtGdiGetFontFileInfo, NtGdiGetNearestPaletteIndex, + NtGdiGetOutlineTextMetricsInternalW, NtGdiGetPath, NtGdiGetPixel, NtGdiGetRegionData, NtGdiGetRgnBox, NtGdiGetSpoolMessage, NtGdiGetSystemPaletteUse, + NtGdiGetTextCharsetInfo, + NtGdiGetTextExtentExW, + NtGdiGetTextFaceW, + NtGdiGetTextMetricsW, NtGdiGetTransform, NtGdiGradientFill, NtGdiHfontCreate, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index e4a6f281227..bc4fdd292a4 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -413,7 +413,7 @@ @ stub NtGdiEngTransparentBlt @ stub NtGdiEngUnlockSurface @ stub NtGdiEnsureDpiDepDefaultGuiFontForPlateau -@ stdcall NtGdiEnumFonts(long long long long wstr long ptr ptr) +@ stdcall -syscall NtGdiEnumFonts(long long long long wstr long ptr ptr) @ stub NtGdiEnumObjects @ stdcall -syscall NtGdiEqualRgn(long long) @ stub NtGdiEudcLoadUnloadLink @@ -424,7 +424,7 @@ @ stdcall -syscall NtGdiExtFloodFill(long long long long long) @ stdcall -syscall NtGdiExtGetObjectW(long long ptr) @ stdcall NtGdiExtSelectClipRgn(long long long) -@ stdcall NtGdiExtTextOutW(long long long long ptr ptr long ptr long) +@ stdcall -syscall NtGdiExtTextOutW(long long long long ptr ptr long ptr long) @ stub NtGdiFONTOBJ_cGetAllGlyphHandles @ stub NtGdiFONTOBJ_cGetGlyphs @ stub NtGdiFONTOBJ_pQueryGlyphAttrs @@ -453,10 +453,10 @@ @ stub NtGdiGetCertificateByHandle @ stub NtGdiGetCertificateSize @ stub NtGdiGetCertificateSizeByHandle -@ stdcall NtGdiGetCharABCWidthsW(long long long ptr long ptr) +@ stdcall -syscall NtGdiGetCharABCWidthsW(long long long ptr long ptr) @ stub NtGdiGetCharSet -@ stdcall NtGdiGetCharWidthInfo(long ptr) -@ stdcall NtGdiGetCharWidthW(long long long ptr long ptr) +@ stdcall -syscall NtGdiGetCharWidthInfo(long ptr) +@ stdcall -syscall NtGdiGetCharWidthW(long long long ptr long ptr) @ stub NtGdiGetCharacterPlacementW @ stdcall -syscall NtGdiGetColorAdjustment(long ptr) @ stub NtGdiGetColorSpaceforBitmap @@ -496,7 +496,7 @@ @ stub NtGdiGetOPMInformation @ stub NtGdiGetOPMRandomNumber @ stub NtGdiGetObjectBitmapHandle -@ stdcall NtGdiGetOutlineTextMetricsInternalW(long long ptr long) +@ stdcall -syscall NtGdiGetOutlineTextMetricsInternalW(long long ptr long) @ stdcall -syscall NtGdiGetPath(long ptr ptr long) @ stub NtGdiGetPerBandInfo @ stub NtGdiGetPhysicalMonitorDescription @@ -515,11 +515,11 @@ @ stub NtGdiGetStringBitmapW @ stub NtGdiGetSuggestedOPMProtectedOutputArraySize @ stdcall -syscall NtGdiGetSystemPaletteUse(long) -@ stdcall NtGdiGetTextCharsetInfo(long ptr long) +@ stdcall -syscall NtGdiGetTextCharsetInfo(long ptr long) @ stub NtGdiGetTextExtent -@ stdcall NtGdiGetTextExtentExW(long wstr long long ptr ptr ptr long) -@ stdcall NtGdiGetTextFaceW(long long ptr long) -@ stdcall NtGdiGetTextMetricsW(long ptr long) +@ stdcall -syscall NtGdiGetTextExtentExW(long wstr long long ptr ptr ptr long) +@ stdcall -syscall NtGdiGetTextFaceW(long long ptr long) +@ stdcall -syscall NtGdiGetTextMetricsW(long ptr long) @ stdcall -syscall NtGdiGetTransform(long long ptr) @ stub NtGdiGetUFI @ stub NtGdiGetUFIPathname diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 17aed3d0c44..804e90bc66a 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -37,23 +37,14 @@ struct unix_funcs /* win32u functions */ LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, DWORD func, BOOL inbound ); - BOOL (WINAPI *pNtGdiEnumFonts)( HDC hdc, ULONG type, ULONG win32_compat, ULONG face_name_len, - const WCHAR *face_name, ULONG charset, ULONG *count, void *buf ); INT (WINAPI *pNtGdiExcludeClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom ); INT (WINAPI *pNtGdiExtEscape)( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, const char *input, INT output_size, char *output ); - BOOL (WINAPI *pNtGdiExtTextOutW)( HDC hdc, INT x, INT y, UINT flags, const RECT *rect, - const WCHAR *str, UINT count, const INT *dx, DWORD cp ); INT (WINAPI *pNtGdiExtSelectClipRgn)( HDC hdc, HRGN region, INT mode ); BOOL (WINAPI *pNtGdiFontIsLinked)( HDC hdc ); BOOL (WINAPI *pNtGdiGetAndSetDCDword)( HDC hdc, UINT method, DWORD value, DWORD *result ); INT (WINAPI *pNtGdiGetAppClipBox)( HDC hdc, RECT *rect ); UINT (WINAPI *pNtGdiGetBoundsRect)( HDC hdc, RECT *rect, UINT flags ); - BOOL (WINAPI *pNtGdiGetCharABCWidthsW)( HDC hdc, UINT first, UINT last, WCHAR *chars, - ULONG flags, void *buffer ); - BOOL (WINAPI *pNtGdiGetCharWidthW)( HDC hdc, UINT first_char, UINT last_char, WCHAR *chars, - ULONG flags, void *buffer ); - BOOL (WINAPI *pNtGdiGetCharWidthInfo)( HDC hdc, struct char_width_info *info ); INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap ); BOOL (WINAPI *pNtGdiGetDeviceGammaRamp)( HDC hdc, void *ptr ); DWORD (WINAPI *pNtGdiGetFontData)( HDC hdc, DWORD table, DWORD offset, void *buffer, DWORD length ); @@ -65,16 +56,9 @@ struct unix_funcs BOOL ignore_rotation ); DWORD (WINAPI *pNtGdiGetKerningPairs)( HDC hdc, DWORD count, KERNINGPAIR *kern_pair ); COLORREF (WINAPI *pNtGdiGetNearestColor)( HDC hdc, COLORREF color ); - UINT (WINAPI *pNtGdiGetOutlineTextMetricsInternalW)( HDC hdc, UINT cbData, - OUTLINETEXTMETRICW *otm, ULONG opts ); INT (WINAPI *pNtGdiGetRandomRgn)( HDC hdc, HRGN region, INT code ); BOOL (WINAPI *pNtGdiGetRasterizerCaps)( RASTERIZER_STATUS *status, UINT size ); BOOL (WINAPI *pNtGdiGetRealizationInfo)( HDC hdc, struct font_realization_info *info ); - UINT (WINAPI *pNtGdiGetTextCharsetInfo)( HDC hdc, FONTSIGNATURE *fs, DWORD flags ); - BOOL (WINAPI *pNtGdiGetTextExtentExW)( HDC hdc, const WCHAR *str, INT count, INT max_ext, - INT *nfit, INT *dxs, SIZE *size, UINT flags ); - 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 ); INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index b20bd2a82b1..d451dc4d3ce 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -37,14 +37,6 @@ BOOL WINAPI NtUserEndPaint( HWND hwnd, const PAINTSTRUCT *ps ) return unix_funcs->pNtUserEndPaint( hwnd, ps ); }
-BOOL WINAPI NtGdiEnumFonts( HDC hdc, ULONG type, ULONG win32_compat, ULONG face_name_len, - const WCHAR *face_name, ULONG charset, ULONG *count, void *buf ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiEnumFonts( hdc, type, win32_compat, face_name_len, face_name, - charset, count, buf ); -} - INT WINAPI NtGdiExcludeClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ) { if (!unix_funcs) return ERROR; @@ -59,13 +51,6 @@ INT WINAPI NtGdiExtEscape( HDC hdc, WCHAR *driver, INT driver_id, INT escape, IN output_size, output ); }
-BOOL WINAPI NtGdiExtTextOutW( HDC hdc, INT x, INT y, UINT flags, const RECT *rect, - const WCHAR *str, UINT count, const INT *dx, DWORD cp ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiExtTextOutW( hdc, x, y, flags, rect, str, count, dx, cp ); -} - INT WINAPI NtGdiExtSelectClipRgn( HDC hdc, HRGN region, INT mode ) { if (!unix_funcs) return ERROR; @@ -96,26 +81,6 @@ UINT WINAPI NtGdiGetBoundsRect( HDC hdc, RECT *rect, UINT flags ) return unix_funcs->pNtGdiGetBoundsRect( hdc, rect, flags ); }
-BOOL WINAPI NtGdiGetCharABCWidthsW( HDC hdc, UINT first, UINT last, WCHAR *chars, - ULONG flags, void *buffer ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetCharABCWidthsW( hdc, first, last, chars, flags, buffer ); -} - -BOOL WINAPI NtGdiGetCharWidthW( HDC hdc, UINT first_char, UINT last_char, WCHAR *chars, - ULONG flags, void *buffer ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetCharWidthW( hdc, first_char, last_char, chars, flags, buffer ); -} - -BOOL WINAPI NtGdiGetCharWidthInfo( HDC hdc, struct char_width_info *info ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetCharWidthInfo( hdc, info ); -} - INT WINAPI NtGdiGetDeviceCaps( HDC hdc, INT cap ) { if (!unix_funcs) return 0; @@ -167,13 +132,6 @@ COLORREF WINAPI NtGdiGetNearestColor( HDC hdc, COLORREF color ) return unix_funcs->pNtGdiGetNearestColor( hdc, color ); }
-UINT WINAPI NtGdiGetOutlineTextMetricsInternalW( HDC hdc, UINT cbData, - OUTLINETEXTMETRICW *otm, ULONG opts ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetOutlineTextMetricsInternalW( hdc, cbData, otm, opts ); -} - INT WINAPI NtGdiGetRandomRgn( HDC hdc, HRGN region, INT code ) { if (!unix_funcs) return -1; @@ -192,31 +150,6 @@ BOOL WINAPI NtGdiGetRealizationInfo( HDC hdc, struct font_realization_info *info return unix_funcs->pNtGdiGetRealizationInfo( hdc, info ); }
-UINT WINAPI NtGdiGetTextCharsetInfo( HDC hdc, FONTSIGNATURE *fs, DWORD flags ) -{ - if (!unix_funcs) return DEFAULT_CHARSET; - return unix_funcs->pNtGdiGetTextCharsetInfo( hdc, fs, flags ); -} - -BOOL WINAPI NtGdiGetTextExtentExW( HDC hdc, const WCHAR *str, INT count, INT max_ext, - INT *nfit, INT *dxs, SIZE *size, UINT flags ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetTextExtentExW( hdc, str, count, max_ext, nfit, dxs, size, flags ); -} - -INT WINAPI NtGdiGetTextFaceW( HDC hdc, INT count, WCHAR *name, BOOL alias_name ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetTextFaceW( hdc, count, name, alias_name ); -} - -BOOL WINAPI NtGdiGetTextMetricsW( HDC hdc, TEXTMETRICW *metrics, ULONG flags ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetTextMetricsW( hdc, metrics, flags ); -} - INT WINAPI NtGdiIntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ) { if (!unix_funcs) return ERROR; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index e2c25032741..9cdd8a987bd 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -49,6 +49,42 @@ typedef struct DWORD elpStyleEntry[1]; } EXTLOGPEN32;
+typedef struct +{ + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + INT otmsCharSlopeRise; + INT otmsCharSlopeRun; + INT otmItalicAngle; + UINT otmEMSquare; + INT otmAscent; + INT otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + INT otmMacAscent; + INT otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + INT otmsStrikeoutPosition; + INT otmsUnderscoreSize; + INT otmsUnderscorePosition; + ULONG otmpFamilyName; + ULONG otmpFaceName; + ULONG otmpStyleName; + ULONG otmpFullName; +} OUTLINETEXTMETRIC32; +
static DWORD gdi_handle_type( HGDIOBJ obj ) { @@ -680,6 +716,20 @@ NTSTATUS WINAPI wow64_NtGdiEndPath( UINT *args ) return NtGdiEndPath( hdc ); }
+NTSTATUS WINAPI wow64_NtGdiEnumFonts( UINT *args ) +{ + HDC hdc = get_handle( &args ); + ULONG type = get_ulong( &args ); + ULONG win32_compat = get_ulong( &args ); + ULONG face_name_len = get_ulong( &args ); + const WCHAR *face_name = get_ptr( &args ); + ULONG charset = get_ulong( &args ); + ULONG *count = get_ptr( &args ); + void *buf = get_ptr( &args ); + + return NtGdiEnumFonts( hdc, type, win32_compat, face_name_len, face_name, charset, count, buf ); +} + NTSTATUS WINAPI wow64_NtGdiEqualRgn( UINT *args ) { HRGN hrgn1 = get_handle( &args ); @@ -820,6 +870,21 @@ NTSTATUS WINAPI wow64_NtGdiExtGetObjectW( UINT *args ) } }
+NTSTATUS WINAPI wow64_NtGdiExtTextOutW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args ); + UINT flags = get_ulong( &args ); + const RECT *rect = get_ptr( &args ); + const WCHAR *str = get_ptr( &args ); + UINT count = get_ulong( &args ); + const INT *dx = get_ptr( &args ); + DWORD cp = get_ulong( &args ); + + return NtGdiExtTextOutW( hdc, x, y, flags, rect, str, count, dx, cp ); +} + NTSTATUS WINAPI wow64_NtGdiFillPath( UINT *args ) { HDC hdc = get_handle( &args ); @@ -876,6 +941,38 @@ NTSTATUS WINAPI wow64_NtGdiGetBitmapDimension( UINT *args ) return NtGdiGetBitmapDimension( bitmap, size ); }
+NTSTATUS WINAPI wow64_NtGdiGetCharABCWidthsW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + UINT first = get_ulong( &args ); + UINT last = get_ulong( &args ); + WCHAR *chars = get_ptr( &args ); + ULONG flags = get_ulong( &args ); + void *buffer = get_ptr( &args ); + + return NtGdiGetCharABCWidthsW( hdc, first, last, chars, flags, buffer ); +} + +NTSTATUS WINAPI wow64_NtGdiGetCharWidthW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + UINT first_char = get_ulong( &args ); + UINT last_char = get_ulong( &args ); + WCHAR *chars = get_ptr( &args ); + ULONG flags = get_ulong( &args ); + void *buffer = get_ptr( &args ); + + return NtGdiGetCharWidthW( hdc, first_char, last_char, chars, flags, buffer ); +} + +NTSTATUS WINAPI wow64_NtGdiGetCharWidthInfo( UINT *args ) +{ + HDC hdc = get_handle( &args ); + struct char_width_info *info = get_ptr( &args ); + + return NtGdiGetCharWidthInfo( hdc, info ); +} + NTSTATUS WINAPI wow64_NtGdiGetColorAdjustment( UINT *args ) { HDC hdc = get_handle( &args ); @@ -961,6 +1058,61 @@ NTSTATUS WINAPI wow64_NtGdiGetNearestPaletteIndex( UINT *args ) return NtGdiGetNearestPaletteIndex( hpalette, color ); }
+NTSTATUS WINAPI wow64_NtGdiGetOutlineTextMetricsInternalW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + UINT size = get_ulong( &args ); + OUTLINETEXTMETRIC32 *otm32 = get_ptr( &args ); + ULONG opts = get_ulong( &args ); + + OUTLINETEXTMETRICW *otm, otm_buf; + UINT ret, size64; + static const size_t otm_size_diff = sizeof(*otm) - sizeof(*otm32); + + if (!otm32) + { + size64 = 0; + otm = NULL; + } + else if (size <= sizeof(*otm32)) + { + size64 = sizeof(otm_buf); + otm = &otm_buf; + } + else + { + size64 = size + otm_size_diff; + if (!(otm = Wow64AllocateTemp( size64 ))) return 0; + } + + if (!(ret = NtGdiGetOutlineTextMetricsInternalW( hdc, size64, otm, opts ))) return 0; + + if (otm32) + { + OUTLINETEXTMETRIC32 out; + + memcpy( &out, otm, FIELD_OFFSET( OUTLINETEXTMETRIC32, otmpFamilyName )); + if (out.otmSize >= sizeof(*otm)) out.otmSize -= otm_size_diff; + + if (!otm->otmpFamilyName) out.otmpFamilyName = 0; + else out.otmpFamilyName = PtrToUlong( otm->otmpFamilyName ) - otm_size_diff; + + if (!otm->otmpFaceName) out.otmpFaceName = 0; + else out.otmpFaceName = PtrToUlong( otm->otmpFaceName ) - otm_size_diff; + + if (!otm->otmpStyleName) out.otmpStyleName = 0; + else out.otmpStyleName = PtrToUlong( otm->otmpStyleName ) - otm_size_diff; + + if (!otm->otmpFullName) out.otmpFullName = 0; + else out.otmpFullName = PtrToUlong( otm->otmpFullName ) - otm_size_diff; + + memcpy( otm32, &out, min( size, sizeof(out) )); + if (ret > sizeof(*otm)) memcpy( otm32 + 1, otm + 1, ret - sizeof(*otm) ); + } + + return ret >= sizeof(*otm) ? ret - otm_size_diff : ret; +} + NTSTATUS WINAPI wow64_NtGdiGetPath( UINT *args ) { HDC hdc = get_handle( &args ); @@ -980,6 +1132,48 @@ NTSTATUS WINAPI wow64_NtGdiGetPixel( UINT *args ) return NtGdiGetPixel( hdc, x, y ); }
+NTSTATUS WINAPI wow64_NtGdiGetTextCharsetInfo( UINT *args ) +{ + HDC hdc = get_ptr( &args ); + FONTSIGNATURE *fs = get_ptr( &args ); + DWORD flags = get_ulong( &args ); + + return NtGdiGetTextCharsetInfo( hdc, fs, flags ); +} + +NTSTATUS WINAPI wow64_NtGdiGetTextExtentExW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const WCHAR *str = get_ptr( &args ); + INT count = get_ulong( &args ); + INT max_ext = get_ulong( &args ); + INT *nfit = get_ptr( &args ); + INT *dxs = get_ptr( &args ); + SIZE *size = get_ptr( &args ); + UINT flags = get_ulong( &args ); + + return NtGdiGetTextExtentExW( hdc, str, count, max_ext, nfit, dxs, size, flags ); +} + +NTSTATUS WINAPI wow64_NtGdiGetTextFaceW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT count = get_ulong( &args ); + WCHAR *name = get_ptr( &args ); + BOOL alias_name = get_ulong( &args ); + + return NtGdiGetTextFaceW( hdc, count, name, alias_name ); +} + +NTSTATUS WINAPI wow64_NtGdiGetTextMetricsW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + TEXTMETRICW *metrics = get_ptr( &args ); + ULONG flags = get_ulong( &args ); + + return NtGdiGetTextMetricsW( hdc, metrics, flags ); +} + NTSTATUS WINAPI wow64_NtGdiGradientFill( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index ee0c94047af..8299ef1141c 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -73,11 +73,13 @@ SYSCALL_ENTRY( NtGdiEndDoc ) \ SYSCALL_ENTRY( NtGdiEndPage ) \ SYSCALL_ENTRY( NtGdiEndPath ) \ + SYSCALL_ENTRY( NtGdiEnumFonts ) \ SYSCALL_ENTRY( NtGdiEqualRgn ) \ SYSCALL_ENTRY( NtGdiExtCreatePen ) \ SYSCALL_ENTRY( NtGdiExtCreateRegion ) \ SYSCALL_ENTRY( NtGdiExtFloodFill ) \ SYSCALL_ENTRY( NtGdiExtGetObjectW ) \ + SYSCALL_ENTRY( NtGdiExtTextOutW ) \ SYSCALL_ENTRY( NtGdiFillPath ) \ SYSCALL_ENTRY( NtGdiFillRgn ) \ SYSCALL_ENTRY( NtGdiFlattenPath ) \ @@ -85,6 +87,9 @@ SYSCALL_ENTRY( NtGdiFrameRgn ) \ SYSCALL_ENTRY( NtGdiGetBitmapBits ) \ SYSCALL_ENTRY( NtGdiGetBitmapDimension ) \ + SYSCALL_ENTRY( NtGdiGetCharABCWidthsW ) \ + SYSCALL_ENTRY( NtGdiGetCharWidthInfo ) \ + SYSCALL_ENTRY( NtGdiGetCharWidthW ) \ SYSCALL_ENTRY( NtGdiGetColorAdjustment ) \ SYSCALL_ENTRY( NtGdiGetDCDword ) \ SYSCALL_ENTRY( NtGdiGetDCObject ) \ @@ -93,12 +98,17 @@ SYSCALL_ENTRY( NtGdiGetFontFileData ) \ SYSCALL_ENTRY( NtGdiGetFontFileInfo ) \ SYSCALL_ENTRY( NtGdiGetNearestPaletteIndex ) \ + SYSCALL_ENTRY( NtGdiGetOutlineTextMetricsInternalW ) \ SYSCALL_ENTRY( NtGdiGetPath ) \ SYSCALL_ENTRY( NtGdiGetPixel ) \ SYSCALL_ENTRY( NtGdiGetRegionData ) \ SYSCALL_ENTRY( NtGdiGetRgnBox ) \ SYSCALL_ENTRY( NtGdiGetSpoolMessage ) \ SYSCALL_ENTRY( NtGdiGetSystemPaletteUse ) \ + SYSCALL_ENTRY( NtGdiGetTextCharsetInfo ) \ + SYSCALL_ENTRY( NtGdiGetTextExtentExW ) \ + SYSCALL_ENTRY( NtGdiGetTextFaceW ) \ + SYSCALL_ENTRY( NtGdiGetTextMetricsW ) \ SYSCALL_ENTRY( NtGdiGetTransform ) \ SYSCALL_ENTRY( NtGdiGradientFill ) \ SYSCALL_ENTRY( NtGdiHfontCreate ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 7 ---- dlls/win32u/syscall.c | 7 ++++ dlls/win32u/win32u.spec | 14 ++++---- dlls/win32u/win32u_private.h | 10 ------ dlls/win32u/wrappers.c | 45 ------------------------ dlls/wow64win/gdi.c | 68 ++++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 7 ++++ 7 files changed, 89 insertions(+), 69 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 8d3d2719728..7c255231f08 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1034,21 +1034,14 @@ static struct unix_funcs unix_funcs = NtGdiExcludeClipRect, NtGdiExtEscape, NtGdiExtSelectClipRgn, - NtGdiFontIsLinked, NtGdiGetAndSetDCDword, NtGdiGetAppClipBox, NtGdiGetBoundsRect, NtGdiGetDeviceCaps, NtGdiGetDeviceGammaRamp, - NtGdiGetFontData, - NtGdiGetFontUnicodeRanges, - NtGdiGetGlyphIndicesW, - NtGdiGetGlyphOutline, - NtGdiGetKerningPairs, NtGdiGetNearestColor, NtGdiGetRandomRgn, NtGdiGetRasterizerCaps, - NtGdiGetRealizationInfo, NtGdiIntersectClipRect, NtGdiOffsetClipRgn, NtGdiPtVisible, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index cdf86da7c89..787fa431119 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -98,6 +98,7 @@ static void * const syscalls[] = NtGdiFillRgn, NtGdiFlattenPath, NtGdiFlush, + NtGdiFontIsLinked, NtGdiFrameRgn, NtGdiGetBitmapBits, NtGdiGetBitmapDimension, @@ -109,12 +110,18 @@ static void * const syscalls[] = NtGdiGetDCObject, NtGdiGetDCPoint, NtGdiGetDIBitsInternal, + NtGdiGetFontData, NtGdiGetFontFileData, NtGdiGetFontFileInfo, + NtGdiGetFontUnicodeRanges, + NtGdiGetGlyphIndicesW, + NtGdiGetGlyphOutline, + NtGdiGetKerningPairs, NtGdiGetNearestPaletteIndex, NtGdiGetOutlineTextMetricsInternalW, NtGdiGetPath, NtGdiGetPixel, + NtGdiGetRealizationInfo, NtGdiGetRegionData, NtGdiGetRgnBox, NtGdiGetSpoolMessage, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index bc4fdd292a4..e75380dc7ac 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -437,7 +437,7 @@ @ stdcall -syscall NtGdiFillRgn(long long long) @ stdcall -syscall NtGdiFlattenPath(long) @ stdcall -syscall NtGdiFlush() -@ stdcall NtGdiFontIsLinked(long) +@ stdcall -syscall NtGdiFontIsLinked(long) @ stub NtGdiForceUFIMapping @ stdcall -syscall NtGdiFrameRgn(long long long long long) @ stub NtGdiFullscreenControl @@ -477,16 +477,16 @@ @ stub NtGdiGetEmbedFonts @ stub NtGdiGetEntry @ stub NtGdiGetEudcTimeStampEx -@ stdcall NtGdiGetFontData(long long long ptr long) +@ stdcall -syscall NtGdiGetFontData(long long long ptr long) @ stdcall -syscall NtGdiGetFontFileData(long long ptr ptr long) @ stdcall -syscall NtGdiGetFontFileInfo(long long ptr long ptr) @ stub NtGdiGetFontResourceInfoInternalW -@ stdcall NtGdiGetFontUnicodeRanges(long ptr) +@ stdcall -syscall NtGdiGetFontUnicodeRanges(long ptr) @ stub NtGdiGetGammaRampCapability -@ stdcall NtGdiGetGlyphIndicesW(long wstr long ptr long) +@ stdcall -syscall NtGdiGetGlyphIndicesW(long wstr long ptr long) @ stub NtGdiGetGlyphIndicesWInternal -@ stdcall NtGdiGetGlyphOutline(long long long ptr long ptr ptr long) -@ stdcall NtGdiGetKerningPairs(long long ptr) +@ stdcall -syscall NtGdiGetGlyphOutline(long long long ptr long ptr ptr long) +@ stdcall -syscall NtGdiGetKerningPairs(long long ptr) @ stub NtGdiGetLinkedUFIs @ stub NtGdiGetMiterLimit @ stub NtGdiGetMonitorID @@ -506,7 +506,7 @@ @ stub NtGdiGetPublicFontTableChangeCookie @ stdcall NtGdiGetRandomRgn(long long long) @ stdcall NtGdiGetRasterizerCaps(ptr long) -@ stdcall NtGdiGetRealizationInfo(long ptr) +@ stdcall -syscall NtGdiGetRealizationInfo(long ptr) @ stdcall -syscall NtGdiGetRegionData(long long ptr) @ stdcall -syscall NtGdiGetRgnBox(long ptr) @ stub NtGdiGetServerMetaFileBits diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 804e90bc66a..5cdd3b6a256 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -41,24 +41,14 @@ struct unix_funcs INT (WINAPI *pNtGdiExtEscape)( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, const char *input, INT output_size, char *output ); INT (WINAPI *pNtGdiExtSelectClipRgn)( HDC hdc, HRGN region, INT mode ); - BOOL (WINAPI *pNtGdiFontIsLinked)( HDC hdc ); BOOL (WINAPI *pNtGdiGetAndSetDCDword)( HDC hdc, UINT method, DWORD value, DWORD *result ); INT (WINAPI *pNtGdiGetAppClipBox)( HDC hdc, RECT *rect ); UINT (WINAPI *pNtGdiGetBoundsRect)( HDC hdc, RECT *rect, UINT flags ); INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap ); BOOL (WINAPI *pNtGdiGetDeviceGammaRamp)( HDC hdc, void *ptr ); - DWORD (WINAPI *pNtGdiGetFontData)( HDC hdc, DWORD table, DWORD offset, void *buffer, DWORD length ); - DWORD (WINAPI *pNtGdiGetFontUnicodeRanges)( HDC hdc, GLYPHSET *lpgs ); - DWORD (WINAPI *pNtGdiGetGlyphIndicesW)( HDC hdc, const WCHAR *str, INT count, - WORD *indices, DWORD flags ); - DWORD (WINAPI *pNtGdiGetGlyphOutline)( HDC hdc, UINT ch, UINT format, GLYPHMETRICS *metrics, - DWORD size, void *buffer, const MAT2 *mat2, - BOOL ignore_rotation ); - DWORD (WINAPI *pNtGdiGetKerningPairs)( HDC hdc, DWORD count, KERNINGPAIR *kern_pair ); COLORREF (WINAPI *pNtGdiGetNearestColor)( HDC hdc, COLORREF color ); INT (WINAPI *pNtGdiGetRandomRgn)( HDC hdc, HRGN region, INT code ); BOOL (WINAPI *pNtGdiGetRasterizerCaps)( RASTERIZER_STATUS *status, UINT size ); - BOOL (WINAPI *pNtGdiGetRealizationInfo)( HDC hdc, struct font_realization_info *info ); INT (WINAPI *pNtGdiIntersectClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom ); INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index d451dc4d3ce..6eb1c80d622 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -57,12 +57,6 @@ INT WINAPI NtGdiExtSelectClipRgn( HDC hdc, HRGN region, INT mode ) return unix_funcs->pNtGdiExtSelectClipRgn( hdc, region, mode ); }
-BOOL WINAPI NtGdiFontIsLinked( HDC hdc ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiFontIsLinked( hdc ); -} - BOOL WINAPI NtGdiGetAndSetDCDword( HDC hdc, UINT method, DWORD value, DWORD *result ) { if (!unix_funcs) return FALSE; @@ -93,39 +87,6 @@ BOOL WINAPI NtGdiGetDeviceGammaRamp( HDC hdc, void *ptr ) return unix_funcs->pNtGdiGetDeviceGammaRamp( hdc, ptr ); }
-DWORD WINAPI NtGdiGetFontData( HDC hdc, DWORD table, DWORD offset, void *buffer, DWORD length ) -{ - if (!unix_funcs) return GDI_ERROR; - return unix_funcs->pNtGdiGetFontData( hdc, table, offset, buffer, length ); -} - -DWORD WINAPI NtGdiGetFontUnicodeRanges( HDC hdc, GLYPHSET *lpgs ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetFontUnicodeRanges( hdc, lpgs ); -} - -DWORD WINAPI NtGdiGetGlyphIndicesW( HDC hdc, const WCHAR *str, INT count, - WORD *indices, DWORD flags ) -{ - if (!unix_funcs) return GDI_ERROR; - return unix_funcs->pNtGdiGetGlyphIndicesW( hdc, str, count, indices, flags ); -} - -DWORD WINAPI NtGdiGetGlyphOutline( HDC hdc, UINT ch, UINT format, GLYPHMETRICS *metrics, - DWORD size, void *buffer, const MAT2 *mat2, - BOOL ignore_rotation ) -{ - if (!unix_funcs) return GDI_ERROR; - return unix_funcs->pNtGdiGetGlyphOutline( hdc, ch, format, metrics, size, buffer, mat2, ignore_rotation ); -} - -DWORD WINAPI NtGdiGetKerningPairs( HDC hdc, DWORD count, KERNINGPAIR *kern_pair ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetKerningPairs( hdc, count, kern_pair ); -} - COLORREF WINAPI NtGdiGetNearestColor( HDC hdc, COLORREF color ) { if (!unix_funcs) return CLR_INVALID; @@ -144,12 +105,6 @@ BOOL WINAPI NtGdiGetRasterizerCaps( RASTERIZER_STATUS *status, UINT size ) return unix_funcs->pNtGdiGetRasterizerCaps( status, size ); }
-BOOL WINAPI NtGdiGetRealizationInfo( HDC hdc, struct font_realization_info *info ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetRealizationInfo( hdc, info ); -} - INT WINAPI NtGdiIntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ) { if (!unix_funcs) return ERROR; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 9cdd8a987bd..78cb59d7226 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -913,6 +913,13 @@ NTSTATUS WINAPI wow64_NtGdiFlush( UINT *args ) return NtGdiFlush(); }
+NTSTATUS WINAPI wow64_NtGdiFontIsLinked( UINT *args ) +{ + HDC hdc = get_handle( &args ); + + return NtGdiFontIsLinked( hdc ); +} + NTSTATUS WINAPI wow64_NtGdiFrameRgn( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1023,6 +1030,17 @@ NTSTATUS WINAPI wow64_NtGdiGetDIBitsInternal( UINT *args ) max_bits, max_info ); }
+NTSTATUS WINAPI wow64_NtGdiGetFontData( UINT *args ) +{ + HDC hdc = get_handle( &args ); + DWORD table = get_ulong( &args ); + DWORD offset = get_ulong( &args ); + void *buffer = get_ptr( &args ); + DWORD length = get_ulong( &args ); + + return NtGdiGetFontData( hdc, table, offset, buffer, length ); +} + NTSTATUS WINAPI wow64_NtGdiGetFontFileData( UINT *args ) { DWORD instance_id = get_ulong( &args ); @@ -1050,6 +1068,48 @@ NTSTATUS WINAPI wow64_NtGdiGetFontFileInfo( UINT *args ) return ret; }
+NTSTATUS WINAPI wow64_NtGdiGetFontUnicodeRanges( UINT *args ) +{ + HDC hdc = get_handle( &args ); + GLYPHSET *lpgs = get_ptr( &args ); + + return NtGdiGetFontUnicodeRanges( hdc, lpgs ); +} + +NTSTATUS WINAPI wow64_NtGdiGetGlyphIndicesW( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const WCHAR *str = get_ptr( &args ); + INT count = get_ulong( &args ); + WORD *indices = get_ptr( &args ); + DWORD flags = get_ulong( &args ); + + return NtGdiGetGlyphIndicesW( hdc, str, count, indices, flags ); +} + +NTSTATUS WINAPI wow64_NtGdiGetGlyphOutline( UINT *args ) +{ + HDC hdc = get_handle( &args ); + UINT ch = get_ulong( &args ); + UINT format = get_ulong( &args ); + GLYPHMETRICS *metrics = get_ptr( &args ); + DWORD size = get_ulong( &args ); + void *buffer = get_ptr( &args ); + const MAT2 *mat2 = get_ptr( &args ); + BOOL ignore_rotation = get_ulong( &args ); + + return NtGdiGetGlyphOutline( hdc, ch, format, metrics, size, buffer, mat2, ignore_rotation ); +} + +NTSTATUS WINAPI wow64_NtGdiGetKerningPairs( UINT *args ) +{ + HDC hdc = get_handle( &args ); + DWORD count = get_ulong( &args ); + KERNINGPAIR *kern_pair = get_ptr( &args ); + + return NtGdiGetKerningPairs( hdc, count, kern_pair ); +} + NTSTATUS WINAPI wow64_NtGdiGetNearestPaletteIndex( UINT *args ) { HPALETTE hpalette = get_handle( &args ); @@ -1132,6 +1192,14 @@ NTSTATUS WINAPI wow64_NtGdiGetPixel( UINT *args ) return NtGdiGetPixel( hdc, x, y ); }
+NTSTATUS WINAPI wow64_NtGdiGetRealizationInfo( UINT *args ) +{ + HDC hdc = get_handle( &args ); + struct font_realization_info *info = get_ptr( &args ); + + return NtGdiGetRealizationInfo( hdc, info ); +} + NTSTATUS WINAPI wow64_NtGdiGetTextCharsetInfo( UINT *args ) { HDC hdc = get_ptr( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 8299ef1141c..03f7c360ff9 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -84,6 +84,7 @@ SYSCALL_ENTRY( NtGdiFillRgn ) \ SYSCALL_ENTRY( NtGdiFlattenPath ) \ SYSCALL_ENTRY( NtGdiFlush ) \ + SYSCALL_ENTRY( NtGdiFontIsLinked ) \ SYSCALL_ENTRY( NtGdiFrameRgn ) \ SYSCALL_ENTRY( NtGdiGetBitmapBits ) \ SYSCALL_ENTRY( NtGdiGetBitmapDimension ) \ @@ -95,12 +96,18 @@ SYSCALL_ENTRY( NtGdiGetDCObject ) \ SYSCALL_ENTRY( NtGdiGetDCPoint ) \ SYSCALL_ENTRY( NtGdiGetDIBitsInternal ) \ + SYSCALL_ENTRY( NtGdiGetFontData ) \ SYSCALL_ENTRY( NtGdiGetFontFileData ) \ SYSCALL_ENTRY( NtGdiGetFontFileInfo ) \ + SYSCALL_ENTRY( NtGdiGetFontUnicodeRanges ) \ + SYSCALL_ENTRY( NtGdiGetGlyphIndicesW ) \ + SYSCALL_ENTRY( NtGdiGetGlyphOutline ) \ + SYSCALL_ENTRY( NtGdiGetKerningPairs ) \ SYSCALL_ENTRY( NtGdiGetNearestPaletteIndex ) \ SYSCALL_ENTRY( NtGdiGetOutlineTextMetricsInternalW ) \ SYSCALL_ENTRY( NtGdiGetPath ) \ SYSCALL_ENTRY( NtGdiGetPixel ) \ + SYSCALL_ENTRY( NtGdiGetRealizationInfo ) \ SYSCALL_ENTRY( NtGdiGetRegionData ) \ SYSCALL_ENTRY( NtGdiGetRgnBox ) \ SYSCALL_ENTRY( NtGdiGetSpoolMessage ) \
From: Jacek Caban jacek@codeweavers.com
--- dlls/win32u/gdiobj.c | 10 ---- dlls/win32u/syscall.c | 10 ++++ dlls/win32u/win32u.spec | 20 ++++---- dlls/win32u/win32u_private.h | 10 ---- dlls/win32u/wrappers.c | 60 ----------------------- dlls/wow64win/gdi.c | 92 ++++++++++++++++++++++++++++++++++++ dlls/wow64win/syscall.h | 10 ++++ 7 files changed, 122 insertions(+), 90 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 7c255231f08..8fa10f3542c 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1031,23 +1031,13 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca ) static struct unix_funcs unix_funcs = { NtGdiDoPalette, - NtGdiExcludeClipRect, NtGdiExtEscape, - NtGdiExtSelectClipRgn, NtGdiGetAndSetDCDword, - NtGdiGetAppClipBox, - NtGdiGetBoundsRect, NtGdiGetDeviceCaps, NtGdiGetDeviceGammaRamp, NtGdiGetNearestColor, - NtGdiGetRandomRgn, NtGdiGetRasterizerCaps, - NtGdiIntersectClipRect, - NtGdiOffsetClipRgn, - NtGdiPtVisible, - NtGdiRectVisible, NtGdiResizePalette, - NtGdiSetBoundsRect, NtGdiSetDeviceGammaRamp, NtGdiSetLayout, NtGdiSetSystemPaletteUse, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index 787fa431119..c9f79804cbc 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -89,10 +89,12 @@ static void * const syscalls[] = NtGdiEndPath, NtGdiEnumFonts, NtGdiEqualRgn, + NtGdiExcludeClipRect, NtGdiExtCreatePen, NtGdiExtCreateRegion, NtGdiExtFloodFill, NtGdiExtGetObjectW, + NtGdiExtSelectClipRgn, NtGdiExtTextOutW, NtGdiFillPath, NtGdiFillRgn, @@ -100,8 +102,10 @@ static void * const syscalls[] = NtGdiFlush, NtGdiFontIsLinked, NtGdiFrameRgn, + NtGdiGetAppClipBox, NtGdiGetBitmapBits, NtGdiGetBitmapDimension, + NtGdiGetBoundsRect, NtGdiGetCharABCWidthsW, NtGdiGetCharWidthInfo, NtGdiGetCharWidthW, @@ -121,6 +125,7 @@ static void * const syscalls[] = NtGdiGetOutlineTextMetricsInternalW, NtGdiGetPath, NtGdiGetPixel, + NtGdiGetRandomRgn, NtGdiGetRealizationInfo, NtGdiGetRegionData, NtGdiGetRgnBox, @@ -134,11 +139,13 @@ static void * const syscalls[] = NtGdiGradientFill, NtGdiHfontCreate, NtGdiInitSpool, + NtGdiIntersectClipRect, NtGdiInvertRgn, NtGdiLineTo, NtGdiMaskBlt, NtGdiModifyWorldTransform, NtGdiMoveTo, + NtGdiOffsetClipRgn, NtGdiOffsetRgn, NtGdiOpenDCW, NtGdiPatBlt, @@ -147,7 +154,9 @@ static void * const syscalls[] = NtGdiPolyDraw, NtGdiPolyPolyDraw, NtGdiPtInRegion, + NtGdiPtVisible, NtGdiRectInRegion, + NtGdiRectVisible, NtGdiRectangle, NtGdiRemoveFontMemResourceEx, NtGdiRemoveFontResourceW, @@ -164,6 +173,7 @@ static void * const syscalls[] = NtGdiSelectPen, NtGdiSetBitmapBits, NtGdiSetBitmapDimension, + NtGdiSetBoundsRect, NtGdiSetBrushOrg, NtGdiSetColorAdjustment, NtGdiSetDIBitsToDeviceInternal, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index e75380dc7ac..22525af3fcb 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -417,13 +417,13 @@ @ stub NtGdiEnumObjects @ stdcall -syscall NtGdiEqualRgn(long long) @ stub NtGdiEudcLoadUnloadLink -@ stdcall NtGdiExcludeClipRect(long long long long long) +@ stdcall -syscall NtGdiExcludeClipRect(long long long long long) @ stdcall -syscall NtGdiExtCreatePen(long long long long long long long ptr long long long) @ stdcall -syscall NtGdiExtCreateRegion(ptr long ptr) @ stdcall NtGdiExtEscape(long wstr long long long ptr long ptr) @ stdcall -syscall NtGdiExtFloodFill(long long long long long) @ stdcall -syscall NtGdiExtGetObjectW(long long ptr) -@ stdcall NtGdiExtSelectClipRgn(long long long) +@ stdcall -syscall NtGdiExtSelectClipRgn(long long long) @ stdcall -syscall NtGdiExtTextOutW(long long long long ptr ptr long ptr long) @ stub NtGdiFONTOBJ_cGetAllGlyphHandles @ stub NtGdiFONTOBJ_cGetGlyphs @@ -442,12 +442,12 @@ @ stdcall -syscall NtGdiFrameRgn(long long long long long) @ stub NtGdiFullscreenControl @ stdcall NtGdiGetAndSetDCDword(long long long ptr) -@ stdcall NtGdiGetAppClipBox(long ptr) +@ stdcall -syscall NtGdiGetAppClipBox(long ptr) @ stub NtGdiGetAppliedDeviceGammaRamp @ stdcall -syscall NtGdiGetBitmapBits(long long ptr) @ stdcall -syscall NtGdiGetBitmapDimension(long ptr) @ stub NtGdiGetBitmapDpiScaleValue -@ stdcall NtGdiGetBoundsRect(long ptr long) +@ stdcall -syscall NtGdiGetBoundsRect(long ptr long) @ stub NtGdiGetCOPPCompatibleOPMInformation @ stub NtGdiGetCertificate @ stub NtGdiGetCertificateByHandle @@ -504,7 +504,7 @@ @ stdcall -syscall NtGdiGetPixel(long long long) @ stub NtGdiGetProcessSessionFonts @ stub NtGdiGetPublicFontTableChangeCookie -@ stdcall NtGdiGetRandomRgn(long long long) +@ stdcall -syscall NtGdiGetRandomRgn(long long long) @ stdcall NtGdiGetRasterizerCaps(ptr long) @ stdcall -syscall NtGdiGetRealizationInfo(long ptr) @ stdcall -syscall NtGdiGetRegionData(long long ptr) @@ -533,7 +533,7 @@ @ stub NtGdiIcmBrushInfo @ stub NtGdiInit @ stdcall -syscall NtGdiInitSpool() -@ stdcall NtGdiIntersectClipRect(long long long long long) +@ stdcall -syscall NtGdiIntersectClipRect(long long long long long) @ stdcall -syscall NtGdiInvertRgn(long long) @ stdcall -syscall NtGdiLineTo(long long long) @ stub NtGdiMakeFontDir @@ -545,7 +545,7 @@ @ stdcall -syscall NtGdiModifyWorldTransform(long ptr long) @ stub NtGdiMonoBitmap @ stdcall -syscall NtGdiMoveTo(long long long ptr) -@ stdcall NtGdiOffsetClipRgn(long long long) +@ stdcall -syscall NtGdiOffsetClipRgn(long long long) @ stdcall -syscall NtGdiOffsetRgn(long long long) @ stdcall -syscall NtGdiOpenDCW(ptr ptr ptr long long ptr ptr ptr) @ stub NtGdiPATHOBJ_bEnum @@ -561,11 +561,11 @@ @ stdcall -syscall NtGdiPolyPolyDraw(long ptr ptr long long) @ stub NtGdiPolyTextOutW @ stdcall -syscall NtGdiPtInRegion(long long long) -@ stdcall NtGdiPtVisible(long long long) +@ stdcall -syscall NtGdiPtVisible(long long long) @ stub NtGdiQueryFontAssocInfo @ stub NtGdiQueryFonts @ stdcall -syscall NtGdiRectInRegion(long ptr) -@ stdcall NtGdiRectVisible(long ptr) +@ stdcall -syscall NtGdiRectVisible(long ptr) @ stdcall -syscall NtGdiRectangle(long long long long long) @ stdcall -syscall NtGdiRemoveFontMemResourceEx(long) @ stdcall -syscall NtGdiRemoveFontResourceW(wstr long long long long ptr) @@ -592,7 +592,7 @@ @ stub NtGdiSetBitmapAttributes @ stdcall -syscall NtGdiSetBitmapBits(long long ptr) @ stdcall -syscall NtGdiSetBitmapDimension(long long long ptr) -@ stdcall NtGdiSetBoundsRect(long ptr long) +@ stdcall -syscall NtGdiSetBoundsRect(long ptr long) @ stub NtGdiSetBrushAttributes @ stdcall -syscall NtGdiSetBrushOrg(long long long ptr) @ stdcall -syscall NtGdiSetColorAdjustment(long ptr) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 5cdd3b6a256..c1499a83166 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -37,24 +37,14 @@ struct unix_funcs /* win32u functions */ LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, DWORD func, BOOL inbound ); - INT (WINAPI *pNtGdiExcludeClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom ); INT (WINAPI *pNtGdiExtEscape)( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, const char *input, INT output_size, char *output ); - INT (WINAPI *pNtGdiExtSelectClipRgn)( HDC hdc, HRGN region, INT mode ); BOOL (WINAPI *pNtGdiGetAndSetDCDword)( HDC hdc, UINT method, DWORD value, DWORD *result ); - INT (WINAPI *pNtGdiGetAppClipBox)( HDC hdc, RECT *rect ); - UINT (WINAPI *pNtGdiGetBoundsRect)( HDC hdc, RECT *rect, UINT flags ); INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap ); BOOL (WINAPI *pNtGdiGetDeviceGammaRamp)( HDC hdc, void *ptr ); COLORREF (WINAPI *pNtGdiGetNearestColor)( HDC hdc, COLORREF color ); - INT (WINAPI *pNtGdiGetRandomRgn)( HDC hdc, HRGN region, INT code ); BOOL (WINAPI *pNtGdiGetRasterizerCaps)( RASTERIZER_STATUS *status, UINT size ); - INT (WINAPI *pNtGdiIntersectClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom ); - INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); - BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y ); - BOOL (WINAPI *pNtGdiRectVisible)( HDC hdc, const RECT *rect ); BOOL (WINAPI *pNtGdiResizePalette)( HPALETTE palette, UINT count ); - UINT (WINAPI *pNtGdiSetBoundsRect)( HDC hdc, const RECT *rect, UINT flags ); BOOL (WINAPI *pNtGdiSetDeviceGammaRamp)( HDC hdc, void *ptr ); DWORD (WINAPI *pNtGdiSetLayout)( HDC hdc, LONG wox, DWORD layout ); UINT (WINAPI *pNtGdiSetSystemPaletteUse)( HDC hdc, UINT use ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 6eb1c80d622..96f9d294314 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -37,12 +37,6 @@ BOOL WINAPI NtUserEndPaint( HWND hwnd, const PAINTSTRUCT *ps ) return unix_funcs->pNtUserEndPaint( hwnd, ps ); }
-INT WINAPI NtGdiExcludeClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ) -{ - if (!unix_funcs) return ERROR; - return unix_funcs->pNtGdiExcludeClipRect( hdc, left, top, right, bottom ); -} - INT WINAPI NtGdiExtEscape( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, const char *input, INT output_size, char *output ) { @@ -51,30 +45,12 @@ INT WINAPI NtGdiExtEscape( HDC hdc, WCHAR *driver, INT driver_id, INT escape, IN output_size, output ); }
-INT WINAPI NtGdiExtSelectClipRgn( HDC hdc, HRGN region, INT mode ) -{ - if (!unix_funcs) return ERROR; - return unix_funcs->pNtGdiExtSelectClipRgn( hdc, region, mode ); -} - BOOL WINAPI NtGdiGetAndSetDCDword( HDC hdc, UINT method, DWORD value, DWORD *result ) { if (!unix_funcs) return FALSE; return unix_funcs->pNtGdiGetAndSetDCDword( hdc, method, value, result ); }
-INT WINAPI NtGdiGetAppClipBox( HDC hdc, RECT *rect ) -{ - if (!unix_funcs) return ERROR; - return unix_funcs->pNtGdiGetAppClipBox( hdc, rect ); -} - -UINT WINAPI NtGdiGetBoundsRect( HDC hdc, RECT *rect, UINT flags ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetBoundsRect( hdc, rect, flags ); -} - INT WINAPI NtGdiGetDeviceCaps( HDC hdc, INT cap ) { if (!unix_funcs) return 0; @@ -93,54 +69,18 @@ COLORREF WINAPI NtGdiGetNearestColor( HDC hdc, COLORREF color ) return unix_funcs->pNtGdiGetNearestColor( hdc, color ); }
-INT WINAPI NtGdiGetRandomRgn( HDC hdc, HRGN region, INT code ) -{ - if (!unix_funcs) return -1; - return unix_funcs->pNtGdiGetRandomRgn( hdc, region, code ); -} - BOOL WINAPI NtGdiGetRasterizerCaps( RASTERIZER_STATUS *status, UINT size ) { if (!unix_funcs) return FALSE; return unix_funcs->pNtGdiGetRasterizerCaps( status, size ); }
-INT WINAPI NtGdiIntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ) -{ - if (!unix_funcs) return ERROR; - return unix_funcs->pNtGdiIntersectClipRect( hdc, left, top, right, bottom ); -} - -INT WINAPI NtGdiOffsetClipRgn( HDC hdc, INT x, INT y ) -{ - if (!unix_funcs) return ERROR; - return unix_funcs->pNtGdiOffsetClipRgn( hdc, x, y ); -} - -BOOL WINAPI NtGdiPtVisible( HDC hdc, INT x, INT y ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiPtVisible( hdc, x, y ); -} - -BOOL WINAPI NtGdiRectVisible( HDC hdc, const RECT *rect ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiRectVisible( hdc, rect ); -} - BOOL WINAPI NtGdiResizePalette( HPALETTE palette, UINT count ) { if (!unix_funcs) return FALSE; return unix_funcs->pNtGdiResizePalette( palette, count ); }
-UINT WINAPI NtGdiSetBoundsRect( HDC hdc, const RECT *rect, UINT flags ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiSetBoundsRect( hdc, rect, flags ); -} - BOOL WINAPI NtGdiSetDeviceGammaRamp( HDC hdc, void *ptr ) { if (!unix_funcs) return FALSE; diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 78cb59d7226..ee5baf6693e 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -730,6 +730,17 @@ NTSTATUS WINAPI wow64_NtGdiEnumFonts( UINT *args ) return NtGdiEnumFonts( hdc, type, win32_compat, face_name_len, face_name, charset, count, buf ); }
+NTSTATUS WINAPI wow64_NtGdiExcludeClipRect( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT left = get_ulong( &args ); + INT top = get_ulong( &args ); + INT right = get_ulong( &args ); + INT bottom = get_ulong( &args ); + + return NtGdiExcludeClipRect( hdc, left, top, right, bottom ); +} + NTSTATUS WINAPI wow64_NtGdiEqualRgn( UINT *args ) { HRGN hrgn1 = get_handle( &args ); @@ -870,6 +881,15 @@ NTSTATUS WINAPI wow64_NtGdiExtGetObjectW( UINT *args ) } }
+NTSTATUS WINAPI wow64_NtGdiExtSelectClipRgn( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HRGN region = get_handle( &args ); + INT mode = get_ulong( &args ); + + return NtGdiExtSelectClipRgn( hdc, region, mode ); +} + NTSTATUS WINAPI wow64_NtGdiExtTextOutW( UINT *args ) { HDC hdc = get_handle( &args ); @@ -931,6 +951,14 @@ NTSTATUS WINAPI wow64_NtGdiFrameRgn( UINT *args ) return NtGdiFrameRgn( hdc, hrgn, brush, width, height ); }
+NTSTATUS WINAPI wow64_NtGdiGetAppClipBox( UINT *args ) +{ + HDC hdc = get_handle( &args ); + RECT *rect = get_ptr( &args ); + + return NtGdiGetAppClipBox( hdc, rect ); +} + NTSTATUS WINAPI wow64_NtGdiGetBitmapBits( UINT *args ) { HBITMAP bitmap = get_handle( &args ); @@ -948,6 +976,15 @@ NTSTATUS WINAPI wow64_NtGdiGetBitmapDimension( UINT *args ) return NtGdiGetBitmapDimension( bitmap, size ); }
+NTSTATUS WINAPI wow64_NtGdiGetBoundsRect( UINT *args ) +{ + HDC hdc = get_handle( &args ); + RECT *rect = get_ptr( &args ); + UINT flags = get_ulong( &args ); + + return NtGdiGetBoundsRect( hdc, rect, flags ); +} + NTSTATUS WINAPI wow64_NtGdiGetCharABCWidthsW( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1192,6 +1229,15 @@ NTSTATUS WINAPI wow64_NtGdiGetPixel( UINT *args ) return NtGdiGetPixel( hdc, x, y ); }
+NTSTATUS WINAPI wow64_NtGdiGetRandomRgn( UINT *args ) +{ + HDC hdc = get_handle( &args ); + HRGN region = get_handle( &args ); + INT code = get_ulong( &args ); + + return NtGdiGetRandomRgn( hdc, region, code ); +} + NTSTATUS WINAPI wow64_NtGdiGetRealizationInfo( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1433,6 +1479,26 @@ NTSTATUS WINAPI wow64_NtGdiInitSpool( UINT *args ) return NtGdiInitSpool(); }
+NTSTATUS WINAPI wow64_NtGdiIntersectClipRect( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT left = get_ulong( &args ); + INT top = get_ulong( &args ); + INT right = get_ulong( &args ); + INT bottom = get_ulong( &args ); + + return NtGdiIntersectClipRect( hdc, left, top, right, bottom ); +} + +NTSTATUS WINAPI wow64_NtGdiOffsetClipRgn( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args ); + + return NtGdiOffsetClipRgn( hdc, x, y ); +} + NTSTATUS WINAPI wow64_NtGdiOffsetRgn( UINT *args ) { HRGN hrgn = get_handle( &args ); @@ -1506,6 +1572,15 @@ NTSTATUS WINAPI wow64_NtGdiPtInRegion( UINT *args ) return NtGdiPtInRegion( hrgn, x, y ); }
+NTSTATUS WINAPI wow64_NtGdiPtVisible( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT x = get_ulong( &args ); + INT y = get_ulong( &args ); + + return NtGdiPtVisible( hdc, x, y ); +} + NTSTATUS WINAPI wow64_NtGdiRectInRegion( UINT *args ) { HRGN hrgn = get_handle( &args ); @@ -1514,6 +1589,14 @@ NTSTATUS WINAPI wow64_NtGdiRectInRegion( UINT *args ) return NtGdiRectInRegion( hrgn, rect ); }
+NTSTATUS WINAPI wow64_NtGdiRectVisible( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const RECT *rect = get_ptr( &args ); + + return NtGdiRectVisible( hdc, rect ); +} + NTSTATUS WINAPI wow64_NtGdiRemoveFontMemResourceEx( UINT *args ) { HANDLE handle = get_handle( &args ); @@ -1623,6 +1706,15 @@ NTSTATUS WINAPI wow64_NtGdiSetBitmapDimension( UINT *args ) return NtGdiSetBitmapDimension( hbitmap, x, y, prev_size ); }
+NTSTATUS WINAPI wow64_NtGdiSetBoundsRect( UINT *args ) +{ + HDC hdc = get_handle( &args ); + const RECT *rect = get_ptr( &args ); + UINT flags = get_ulong( &args ); + + return NtGdiSetBoundsRect( hdc, rect, flags ); +} + NTSTATUS WINAPI wow64_NtGdiSetBrushOrg( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 03f7c360ff9..0dba80feea6 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -75,10 +75,12 @@ SYSCALL_ENTRY( NtGdiEndPath ) \ SYSCALL_ENTRY( NtGdiEnumFonts ) \ SYSCALL_ENTRY( NtGdiEqualRgn ) \ + SYSCALL_ENTRY( NtGdiExcludeClipRect ) \ SYSCALL_ENTRY( NtGdiExtCreatePen ) \ SYSCALL_ENTRY( NtGdiExtCreateRegion ) \ SYSCALL_ENTRY( NtGdiExtFloodFill ) \ SYSCALL_ENTRY( NtGdiExtGetObjectW ) \ + SYSCALL_ENTRY( NtGdiExtSelectClipRgn ) \ SYSCALL_ENTRY( NtGdiExtTextOutW ) \ SYSCALL_ENTRY( NtGdiFillPath ) \ SYSCALL_ENTRY( NtGdiFillRgn ) \ @@ -86,8 +88,10 @@ SYSCALL_ENTRY( NtGdiFlush ) \ SYSCALL_ENTRY( NtGdiFontIsLinked ) \ SYSCALL_ENTRY( NtGdiFrameRgn ) \ + SYSCALL_ENTRY( NtGdiGetAppClipBox ) \ SYSCALL_ENTRY( NtGdiGetBitmapBits ) \ SYSCALL_ENTRY( NtGdiGetBitmapDimension ) \ + SYSCALL_ENTRY( NtGdiGetBoundsRect ) \ SYSCALL_ENTRY( NtGdiGetCharABCWidthsW ) \ SYSCALL_ENTRY( NtGdiGetCharWidthInfo ) \ SYSCALL_ENTRY( NtGdiGetCharWidthW ) \ @@ -107,6 +111,7 @@ SYSCALL_ENTRY( NtGdiGetOutlineTextMetricsInternalW ) \ SYSCALL_ENTRY( NtGdiGetPath ) \ SYSCALL_ENTRY( NtGdiGetPixel ) \ + SYSCALL_ENTRY( NtGdiGetRandomRgn ) \ SYSCALL_ENTRY( NtGdiGetRealizationInfo ) \ SYSCALL_ENTRY( NtGdiGetRegionData ) \ SYSCALL_ENTRY( NtGdiGetRgnBox ) \ @@ -120,11 +125,13 @@ SYSCALL_ENTRY( NtGdiGradientFill ) \ SYSCALL_ENTRY( NtGdiHfontCreate ) \ SYSCALL_ENTRY( NtGdiInitSpool ) \ + SYSCALL_ENTRY( NtGdiIntersectClipRect ) \ SYSCALL_ENTRY( NtGdiInvertRgn ) \ SYSCALL_ENTRY( NtGdiLineTo ) \ SYSCALL_ENTRY( NtGdiMaskBlt ) \ SYSCALL_ENTRY( NtGdiModifyWorldTransform ) \ SYSCALL_ENTRY( NtGdiMoveTo ) \ + SYSCALL_ENTRY( NtGdiOffsetClipRgn ) \ SYSCALL_ENTRY( NtGdiOffsetRgn ) \ SYSCALL_ENTRY( NtGdiOpenDCW ) \ SYSCALL_ENTRY( NtGdiPatBlt ) \ @@ -133,7 +140,9 @@ SYSCALL_ENTRY( NtGdiPolyDraw ) \ SYSCALL_ENTRY( NtGdiPolyPolyDraw ) \ SYSCALL_ENTRY( NtGdiPtInRegion ) \ + SYSCALL_ENTRY( NtGdiPtVisible ) \ SYSCALL_ENTRY( NtGdiRectInRegion ) \ + SYSCALL_ENTRY( NtGdiRectVisible ) \ SYSCALL_ENTRY( NtGdiRectangle ) \ SYSCALL_ENTRY( NtGdiRemoveFontMemResourceEx ) \ SYSCALL_ENTRY( NtGdiRemoveFontResourceW ) \ @@ -150,6 +159,7 @@ SYSCALL_ENTRY( NtGdiSelectPen ) \ SYSCALL_ENTRY( NtGdiSetBitmapBits ) \ SYSCALL_ENTRY( NtGdiSetBitmapDimension ) \ + SYSCALL_ENTRY( NtGdiSetBoundsRect ) \ SYSCALL_ENTRY( NtGdiSetBrushOrg ) \ SYSCALL_ENTRY( NtGdiSetColorAdjustment ) \ SYSCALL_ENTRY( NtGdiSetDIBitsToDeviceInternal ) \
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 | 13 ---- dlls/win32u/wrappers.c | 69 -------------------- dlls/wow64win/gdi.c | 119 ++++++++++++++++++++++++++++++++--- dlls/wow64win/syscall.h | 11 ++++ 7 files changed, 143 insertions(+), 113 deletions(-)
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index 8fa10f3542c..ac4a0300f2a 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1030,17 +1030,6 @@ BOOL WINAPI NtGdiSetColorAdjustment( HDC hdc, const COLORADJUSTMENT *ca )
static struct unix_funcs unix_funcs = { - NtGdiDoPalette, - NtGdiExtEscape, - NtGdiGetAndSetDCDword, - NtGdiGetDeviceCaps, - NtGdiGetDeviceGammaRamp, - NtGdiGetNearestColor, - NtGdiGetRasterizerCaps, - NtGdiResizePalette, - NtGdiSetDeviceGammaRamp, - NtGdiSetLayout, - NtGdiSetSystemPaletteUse, NtUserDrawCaptionTemp, NtUserDrawMenuBarTemp, NtUserEndPaint, diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c index c9f79804cbc..08998428d99 100644 --- a/dlls/win32u/syscall.c +++ b/dlls/win32u/syscall.c @@ -82,6 +82,7 @@ static void * const syscalls[] = NtGdiDeleteClientObj, NtGdiDeleteObjectApp, NtGdiDescribePixelFormat, + NtGdiDoPalette, NtGdiDrawStream, NtGdiEllipse, NtGdiEndDoc, @@ -92,6 +93,7 @@ static void * const syscalls[] = NtGdiExcludeClipRect, NtGdiExtCreatePen, NtGdiExtCreateRegion, + NtGdiExtEscape, NtGdiExtFloodFill, NtGdiExtGetObjectW, NtGdiExtSelectClipRgn, @@ -102,6 +104,7 @@ static void * const syscalls[] = NtGdiFlush, NtGdiFontIsLinked, NtGdiFrameRgn, + NtGdiGetAndSetDCDword, NtGdiGetAppClipBox, NtGdiGetBitmapBits, NtGdiGetBitmapDimension, @@ -114,6 +117,8 @@ static void * const syscalls[] = NtGdiGetDCObject, NtGdiGetDCPoint, NtGdiGetDIBitsInternal, + NtGdiGetDeviceCaps, + NtGdiGetDeviceGammaRamp, NtGdiGetFontData, NtGdiGetFontFileData, NtGdiGetFontFileInfo, @@ -121,11 +126,13 @@ static void * const syscalls[] = NtGdiGetGlyphIndicesW, NtGdiGetGlyphOutline, NtGdiGetKerningPairs, + NtGdiGetNearestColor, NtGdiGetNearestPaletteIndex, NtGdiGetOutlineTextMetricsInternalW, NtGdiGetPath, NtGdiGetPixel, NtGdiGetRandomRgn, + NtGdiGetRasterizerCaps, NtGdiGetRealizationInfo, NtGdiGetRegionData, NtGdiGetRgnBox, @@ -161,6 +168,7 @@ static void * const syscalls[] = NtGdiRemoveFontMemResourceEx, NtGdiRemoveFontResourceW, NtGdiResetDC, + NtGdiResizePalette, NtGdiRestoreDC, NtGdiRoundRect, NtGdiSaveDC, @@ -177,11 +185,14 @@ static void * const syscalls[] = NtGdiSetBrushOrg, NtGdiSetColorAdjustment, NtGdiSetDIBitsToDeviceInternal, + NtGdiSetDeviceGammaRamp, + NtGdiSetLayout, NtGdiSetMagicColors, NtGdiSetMetaRgn, NtGdiSetPixel, NtGdiSetPixelFormat, NtGdiSetRectRgn, + NtGdiSetSystemPaletteUse, NtGdiSetTextJustification, NtGdiSetVirtualResolution, NtGdiStartDoc, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index 22525af3fcb..95ed5e75ade 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -372,7 +372,7 @@ @ stub NtGdiDestroyOPMProtectedOutput @ stub NtGdiDestroyPhysicalMonitor @ stub NtGdiDoBanding -@ stdcall NtGdiDoPalette(long long long ptr long long) +@ stdcall -syscall NtGdiDoPalette(long long long ptr long long) @ stub NtGdiDrawEscape @ stdcall -syscall NtGdiDrawStream(long long ptr) @ stub NtGdiDwmCreatedBitmapRemotingOutput @@ -420,7 +420,7 @@ @ stdcall -syscall NtGdiExcludeClipRect(long long long long long) @ stdcall -syscall NtGdiExtCreatePen(long long long long long long long ptr long long long) @ stdcall -syscall NtGdiExtCreateRegion(ptr long ptr) -@ stdcall NtGdiExtEscape(long wstr long long long ptr long ptr) +@ stdcall -syscall NtGdiExtEscape(long wstr long long long ptr long ptr) @ stdcall -syscall NtGdiExtFloodFill(long long long long long) @ stdcall -syscall NtGdiExtGetObjectW(long long ptr) @ stdcall -syscall NtGdiExtSelectClipRgn(long long long) @@ -441,7 +441,7 @@ @ stub NtGdiForceUFIMapping @ stdcall -syscall NtGdiFrameRgn(long long long long long) @ stub NtGdiFullscreenControl -@ stdcall NtGdiGetAndSetDCDword(long long long ptr) +@ stdcall -syscall NtGdiGetAndSetDCDword(long long long ptr) @ stdcall -syscall NtGdiGetAppClipBox(long ptr) @ stub NtGdiGetAppliedDeviceGammaRamp @ stdcall -syscall NtGdiGetBitmapBits(long long ptr) @@ -467,9 +467,9 @@ @ stdcall -syscall NtGdiGetDCPoint(long long ptr) @ stub NtGdiGetDCforBitmap @ stdcall -syscall NtGdiGetDIBitsInternal(long long long long ptr ptr long long long) -@ stdcall NtGdiGetDeviceCaps(long long) +@ stdcall -syscall NtGdiGetDeviceCaps(long long) @ stub NtGdiGetDeviceCapsAll -@ stdcall NtGdiGetDeviceGammaRamp(long ptr) +@ stdcall -syscall NtGdiGetDeviceGammaRamp(long ptr) @ stub NtGdiGetDeviceWidth @ stub NtGdiGetDhpdev @ stub NtGdiGetETM @@ -490,7 +490,7 @@ @ stub NtGdiGetLinkedUFIs @ stub NtGdiGetMiterLimit @ stub NtGdiGetMonitorID -@ stdcall NtGdiGetNearestColor(long long) +@ stdcall -syscall NtGdiGetNearestColor(long long) @ stdcall -syscall NtGdiGetNearestPaletteIndex(long long) @ stub NtGdiGetNumberOfPhysicalMonitors @ stub NtGdiGetOPMInformation @@ -505,7 +505,7 @@ @ stub NtGdiGetProcessSessionFonts @ stub NtGdiGetPublicFontTableChangeCookie @ stdcall -syscall NtGdiGetRandomRgn(long long long) -@ stdcall NtGdiGetRasterizerCaps(ptr long) +@ stdcall -syscall NtGdiGetRasterizerCaps(ptr long) @ stdcall -syscall NtGdiGetRealizationInfo(long ptr) @ stdcall -syscall NtGdiGetRegionData(long long ptr) @ stdcall -syscall NtGdiGetRgnBox(long ptr) @@ -571,7 +571,7 @@ @ stdcall -syscall NtGdiRemoveFontResourceW(wstr long long long long ptr) @ stub NtGdiRemoveMergeFont @ stdcall -syscall NtGdiResetDC(long ptr ptr ptr ptr) -@ stdcall NtGdiResizePalette(long long) +@ stdcall -syscall NtGdiResizePalette(long long) @ stdcall -syscall NtGdiRestoreDC(long long) @ stdcall -syscall NtGdiRoundRect(long long long long long long long) @ stub NtGdiSTROBJ_bEnum @@ -598,11 +598,11 @@ @ stdcall -syscall NtGdiSetColorAdjustment(long ptr) @ stub NtGdiSetColorSpace @ stdcall -syscall NtGdiSetDIBitsToDeviceInternal(long long long long long long long long long ptr ptr long long long long long) -@ stdcall NtGdiSetDeviceGammaRamp(ptr ptr) +@ stdcall -syscall NtGdiSetDeviceGammaRamp(ptr ptr) @ stub NtGdiSetFontEnumeration @ stub NtGdiSetFontXform @ stub NtGdiSetIcmMode -@ stdcall NtGdiSetLayout(long long long) +@ stdcall -syscall NtGdiSetLayout(long long long) @ stub NtGdiSetLinkedUFIs @ stdcall -syscall NtGdiSetMagicColors(long long long) @ stdcall -syscall NtGdiSetMetaRgn(long) @@ -614,7 +614,7 @@ @ stub NtGdiSetPrivateDeviceGammaRamp @ stdcall -syscall NtGdiSetRectRgn(long long long long long) @ stub NtGdiSetSizeDevice -@ stdcall NtGdiSetSystemPaletteUse(long long) +@ stdcall -syscall NtGdiSetSystemPaletteUse(long long) @ stdcall -syscall NtGdiSetTextJustification(long long long) @ stub NtGdiSetUMPDSandboxState @ stdcall -syscall NtGdiSetVirtualResolution(long long long long long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index c1499a83166..2807fc7a167 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -35,19 +35,6 @@ struct unix_funcs { /* win32u functions */ - LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries, - DWORD func, BOOL inbound ); - INT (WINAPI *pNtGdiExtEscape)( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, - const char *input, INT output_size, char *output ); - BOOL (WINAPI *pNtGdiGetAndSetDCDword)( HDC hdc, UINT method, DWORD value, DWORD *result ); - INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap ); - BOOL (WINAPI *pNtGdiGetDeviceGammaRamp)( HDC hdc, void *ptr ); - COLORREF (WINAPI *pNtGdiGetNearestColor)( HDC hdc, COLORREF color ); - BOOL (WINAPI *pNtGdiGetRasterizerCaps)( RASTERIZER_STATUS *status, UINT size ); - BOOL (WINAPI *pNtGdiResizePalette)( HPALETTE palette, UINT count ); - 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 *pNtUserDrawCaptionTemp)( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ); DWORD (WINAPI *pNtUserDrawMenuBarTemp)( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index 96f9d294314..7957f1052c7 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -24,81 +24,12 @@
static const struct unix_funcs *unix_funcs;
-LONG WINAPI NtGdiDoPalette( HGDIOBJ handle, WORD start, WORD count, void *entries, - DWORD func, BOOL inbound ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiDoPalette( handle, start, count, entries, func, inbound ); -} - BOOL WINAPI NtUserEndPaint( HWND hwnd, const PAINTSTRUCT *ps ) { if (!unix_funcs) return FALSE; return unix_funcs->pNtUserEndPaint( hwnd, ps ); }
-INT WINAPI NtGdiExtEscape( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, - const char *input, INT output_size, char *output ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiExtEscape( hdc, driver, driver_id, escape, input_size, input, - output_size, output ); -} - -BOOL WINAPI NtGdiGetAndSetDCDword( HDC hdc, UINT method, DWORD value, DWORD *result ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetAndSetDCDword( hdc, method, value, result ); -} - -INT WINAPI NtGdiGetDeviceCaps( HDC hdc, INT cap ) -{ - if (!unix_funcs) return 0; - return unix_funcs->pNtGdiGetDeviceCaps( hdc, cap ); -} - -BOOL WINAPI NtGdiGetDeviceGammaRamp( HDC hdc, void *ptr ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetDeviceGammaRamp( hdc, ptr ); -} - -COLORREF WINAPI NtGdiGetNearestColor( HDC hdc, COLORREF color ) -{ - if (!unix_funcs) return CLR_INVALID; - return unix_funcs->pNtGdiGetNearestColor( hdc, color ); -} - -BOOL WINAPI NtGdiGetRasterizerCaps( RASTERIZER_STATUS *status, UINT size ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiGetRasterizerCaps( status, size ); -} - -BOOL WINAPI NtGdiResizePalette( HPALETTE palette, UINT count ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiResizePalette( palette, count ); -} - -BOOL WINAPI NtGdiSetDeviceGammaRamp( HDC hdc, void *ptr ) -{ - if (!unix_funcs) return FALSE; - return unix_funcs->pNtGdiSetDeviceGammaRamp( hdc, ptr ); -} - -DWORD WINAPI NtGdiSetLayout( HDC hdc, LONG wox, DWORD layout ) -{ - if (!unix_funcs) return GDI_ERROR; - return unix_funcs->pNtGdiSetLayout( hdc, wox, layout ); -} - -UINT WINAPI NtGdiSetSystemPaletteUse( HDC hdc, UINT use ) -{ - if (!unix_funcs) return SYSPAL_ERROR; - return unix_funcs->pNtGdiSetSystemPaletteUse( hdc, use ); -} - BOOL WINAPI NtUserDrawCaptionTemp( HWND hwnd, HDC hdc, const RECT *rect, HFONT font, HICON icon, const WCHAR *str, UINT flags ) { diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index ee5baf6693e..7b5ca3f90ef 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -675,6 +675,18 @@ NTSTATUS WINAPI wow64_NtGdiDescribePixelFormat( UINT *args ) return NtGdiDescribePixelFormat( hdc, format, size, descr ); }
+NTSTATUS WINAPI wow64_NtGdiDoPalette( UINT *args ) +{ + HGDIOBJ handle = get_handle( &args ); + WORD start = get_ulong( &args ); + WORD count = get_ulong( &args ); + void *entries = get_ptr( &args ); + DWORD func = get_ulong( &args ); + BOOL inbound = get_ulong( &args ); + + return NtGdiDoPalette( handle, start, count, entries, func, inbound ); +} + NTSTATUS WINAPI wow64_NtGdiDrawStream( UINT *args ) { HDC hdc = get_handle( &args ); @@ -777,6 +789,20 @@ NTSTATUS WINAPI wow64_NtGdiExtCreateRegion( UINT *args ) return HandleToUlong( NtGdiExtCreateRegion( xform, count, data )); }
+NTSTATUS WINAPI wow64_NtGdiExtEscape( UINT *args ) +{ + HDC hdc = get_handle( &args ); + WCHAR *driver = get_ptr( &args ); + INT driver_id = get_ulong( &args ); + INT escape = get_ulong( &args ); + INT input_size = get_ulong( &args ); + const char *input = get_ptr( &args ); + INT output_size = get_ulong( &args ); + char *output = get_ptr( &args ); + + return NtGdiExtEscape( hdc, driver, driver_id, escape, input_size, input, output_size, output ); +} + NTSTATUS WINAPI wow64_NtGdiExtFloodFill( UINT *args ) { HDC hdc = get_handle( &args ); @@ -951,6 +977,16 @@ NTSTATUS WINAPI wow64_NtGdiFrameRgn( UINT *args ) return NtGdiFrameRgn( hdc, hrgn, brush, width, height ); }
+NTSTATUS WINAPI wow64_NtGdiGetAndSetDCDword( UINT *args ) +{ + HDC hdc = get_handle( &args ); + UINT method = get_ulong( &args ); + DWORD value = get_ulong( &args ); + DWORD *result = get_ptr( &args ); + + return NtGdiGetAndSetDCDword( hdc, method, value, result ); +} + NTSTATUS WINAPI wow64_NtGdiGetAppClipBox( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1067,6 +1103,22 @@ NTSTATUS WINAPI wow64_NtGdiGetDIBitsInternal( UINT *args ) max_bits, max_info ); }
+NTSTATUS WINAPI wow64_NtGdiGetDeviceCaps( UINT *args ) +{ + HDC hdc = get_handle( &args ); + INT cap = get_ulong( &args ); + + return NtGdiGetDeviceCaps( hdc, cap ); +} + +NTSTATUS WINAPI wow64_NtGdiGetDeviceGammaRamp( UINT *args ) +{ + HDC hdc = get_handle( &args ); + void *ptr = get_ptr( &args ); + + return NtGdiGetDeviceGammaRamp( hdc, ptr ); +} + NTSTATUS WINAPI wow64_NtGdiGetFontData( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1147,6 +1199,14 @@ NTSTATUS WINAPI wow64_NtGdiGetKerningPairs( UINT *args ) return NtGdiGetKerningPairs( hdc, count, kern_pair ); }
+NTSTATUS WINAPI wow64_NtGdiGetNearestColor( UINT *args ) +{ + HDC hdc = get_handle( &args ); + COLORREF color = get_ulong( &args ); + + return NtGdiGetNearestColor( hdc, color ); +} + NTSTATUS WINAPI wow64_NtGdiGetNearestPaletteIndex( UINT *args ) { HPALETTE hpalette = get_handle( &args ); @@ -1238,6 +1298,14 @@ NTSTATUS WINAPI wow64_NtGdiGetRandomRgn( UINT *args ) return NtGdiGetRandomRgn( hdc, region, code ); }
+NTSTATUS WINAPI wow64_NtGdiGetRasterizerCaps( UINT *args ) +{ + RASTERIZER_STATUS *status = get_ptr( &args ); + UINT size = get_ulong( &args ); + + return NtGdiGetRasterizerCaps( status, size ); +} + NTSTATUS WINAPI wow64_NtGdiGetRealizationInfo( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1246,6 +1314,15 @@ NTSTATUS WINAPI wow64_NtGdiGetRealizationInfo( UINT *args ) return NtGdiGetRealizationInfo( hdc, info ); }
+NTSTATUS WINAPI wow64_NtGdiGetRegionData( UINT *args ) +{ + HRGN hrgn = get_ptr( &args ); + DWORD count = get_ulong( &args ); + RGNDATA *data = get_ptr( &args ); + + return NtGdiGetRegionData( hrgn, count, data ); +} + NTSTATUS WINAPI wow64_NtGdiGetTextCharsetInfo( UINT *args ) { HDC hdc = get_ptr( &args ); @@ -1388,15 +1465,6 @@ NTSTATUS WINAPI wow64_NtGdiRectangle( UINT *args ) return NtGdiRectangle( hdc, left, top, right, bottom ); }
-NTSTATUS WINAPI wow64_NtGdiGetRegionData( UINT *args ) -{ - HRGN hrgn = get_ptr( &args ); - DWORD count = get_ulong( &args ); - RGNDATA *data = get_ptr( &args ); - - return NtGdiGetRegionData( hrgn, count, data ); -} - NTSTATUS WINAPI wow64_NtGdiResetDC( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1408,6 +1476,14 @@ NTSTATUS WINAPI wow64_NtGdiResetDC( UINT *args ) return NtGdiResetDC( hdc, devmode, banding, driver_info, dev ); }
+NTSTATUS WINAPI wow64_NtGdiResizePalette( UINT *args ) +{ + HPALETTE palette = get_handle( &args ); + UINT count = get_ulong( &args ); + + return NtGdiResizePalette( palette, count ); +} + NTSTATUS WINAPI wow64_NtGdiRestoreDC( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1757,6 +1833,23 @@ NTSTATUS WINAPI wow64_NtGdiSetDIBitsToDeviceInternal( UINT *args ) max_bits, max_info, xform_coords, xform ); }
+NTSTATUS WINAPI wow64_NtGdiSetDeviceGammaRamp( UINT *args ) +{ + HDC hdc = get_handle( &args ); + void *ptr = get_ptr( &args ); + + return NtGdiSetDeviceGammaRamp( hdc, ptr ); +} + +NTSTATUS WINAPI wow64_NtGdiSetLayout( UINT *args ) +{ + HDC hdc = get_handle( &args ); + LONG wox = get_ulong( &args ); + DWORD layout = get_ulong( &args ); + + return NtGdiSetLayout( hdc, wox, layout ); +} + NTSTATUS WINAPI wow64_NtGdiSetMagicColors( UINT *args ) { HDC hdc = get_handle( &args ); @@ -1802,6 +1895,14 @@ NTSTATUS WINAPI wow64_NtGdiSetRectRgn( UINT *args ) return NtGdiSetRectRgn( hrgn, left, top, right, bottom ); }
+NTSTATUS WINAPI wow64_NtGdiSetSystemPaletteUse( UINT *args ) +{ + HDC hdc = get_handle( &args ); + UINT use = get_ulong( &args ); + + return NtGdiSetSystemPaletteUse( hdc, use ); +} + NTSTATUS WINAPI wow64_NtGdiSetTextJustification( UINT *args ) { HDC hdc = get_handle( &args ); diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h index 0dba80feea6..4a0c4513bca 100644 --- a/dlls/wow64win/syscall.h +++ b/dlls/wow64win/syscall.h @@ -68,6 +68,7 @@ SYSCALL_ENTRY( NtGdiDeleteClientObj ) \ SYSCALL_ENTRY( NtGdiDeleteObjectApp ) \ SYSCALL_ENTRY( NtGdiDescribePixelFormat ) \ + SYSCALL_ENTRY( NtGdiDoPalette ) \ SYSCALL_ENTRY( NtGdiDrawStream ) \ SYSCALL_ENTRY( NtGdiEllipse ) \ SYSCALL_ENTRY( NtGdiEndDoc ) \ @@ -78,6 +79,7 @@ SYSCALL_ENTRY( NtGdiExcludeClipRect ) \ SYSCALL_ENTRY( NtGdiExtCreatePen ) \ SYSCALL_ENTRY( NtGdiExtCreateRegion ) \ + SYSCALL_ENTRY( NtGdiExtEscape ) \ SYSCALL_ENTRY( NtGdiExtFloodFill ) \ SYSCALL_ENTRY( NtGdiExtGetObjectW ) \ SYSCALL_ENTRY( NtGdiExtSelectClipRgn ) \ @@ -88,6 +90,7 @@ SYSCALL_ENTRY( NtGdiFlush ) \ SYSCALL_ENTRY( NtGdiFontIsLinked ) \ SYSCALL_ENTRY( NtGdiFrameRgn ) \ + SYSCALL_ENTRY( NtGdiGetAndSetDCDword ) \ SYSCALL_ENTRY( NtGdiGetAppClipBox ) \ SYSCALL_ENTRY( NtGdiGetBitmapBits ) \ SYSCALL_ENTRY( NtGdiGetBitmapDimension ) \ @@ -100,6 +103,8 @@ SYSCALL_ENTRY( NtGdiGetDCObject ) \ SYSCALL_ENTRY( NtGdiGetDCPoint ) \ SYSCALL_ENTRY( NtGdiGetDIBitsInternal ) \ + SYSCALL_ENTRY( NtGdiGetDeviceCaps ) \ + SYSCALL_ENTRY( NtGdiGetDeviceGammaRamp ) \ SYSCALL_ENTRY( NtGdiGetFontData ) \ SYSCALL_ENTRY( NtGdiGetFontFileData ) \ SYSCALL_ENTRY( NtGdiGetFontFileInfo ) \ @@ -107,11 +112,13 @@ SYSCALL_ENTRY( NtGdiGetGlyphIndicesW ) \ SYSCALL_ENTRY( NtGdiGetGlyphOutline ) \ SYSCALL_ENTRY( NtGdiGetKerningPairs ) \ + SYSCALL_ENTRY( NtGdiGetNearestColor ) \ SYSCALL_ENTRY( NtGdiGetNearestPaletteIndex ) \ SYSCALL_ENTRY( NtGdiGetOutlineTextMetricsInternalW ) \ SYSCALL_ENTRY( NtGdiGetPath ) \ SYSCALL_ENTRY( NtGdiGetPixel ) \ SYSCALL_ENTRY( NtGdiGetRandomRgn ) \ + SYSCALL_ENTRY( NtGdiGetRasterizerCaps ) \ SYSCALL_ENTRY( NtGdiGetRealizationInfo ) \ SYSCALL_ENTRY( NtGdiGetRegionData ) \ SYSCALL_ENTRY( NtGdiGetRgnBox ) \ @@ -147,6 +154,7 @@ SYSCALL_ENTRY( NtGdiRemoveFontMemResourceEx ) \ SYSCALL_ENTRY( NtGdiRemoveFontResourceW ) \ SYSCALL_ENTRY( NtGdiResetDC ) \ + SYSCALL_ENTRY( NtGdiResizePalette ) \ SYSCALL_ENTRY( NtGdiRestoreDC ) \ SYSCALL_ENTRY( NtGdiRoundRect ) \ SYSCALL_ENTRY( NtGdiSaveDC ) \ @@ -163,11 +171,14 @@ SYSCALL_ENTRY( NtGdiSetBrushOrg ) \ SYSCALL_ENTRY( NtGdiSetColorAdjustment ) \ SYSCALL_ENTRY( NtGdiSetDIBitsToDeviceInternal ) \ + SYSCALL_ENTRY( NtGdiSetDeviceGammaRamp ) \ + SYSCALL_ENTRY( NtGdiSetLayout ) \ SYSCALL_ENTRY( NtGdiSetMagicColors ) \ SYSCALL_ENTRY( NtGdiSetMetaRgn ) \ SYSCALL_ENTRY( NtGdiSetPixel ) \ SYSCALL_ENTRY( NtGdiSetPixelFormat ) \ SYSCALL_ENTRY( NtGdiSetRectRgn ) \ + SYSCALL_ENTRY( NtGdiSetSystemPaletteUse ) \ SYSCALL_ENTRY( NtGdiSetTextJustification ) \ SYSCALL_ENTRY( NtGdiSetVirtualResolution ) \ SYSCALL_ENTRY( NtGdiStartDoc ) \
This merge request was approved by Huw Davies.