win32u: Use syscall interface for pen constructors.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2021-10-12 15:29:19 +02:00 committed by Alexandre Julliard
parent 3d978e4c4e
commit 6c7dff2a00
7 changed files with 35 additions and 23 deletions

View File

@ -1078,7 +1078,6 @@ static struct unix_funcs unix_funcs =
NtGdiCreateCompatibleDC, NtGdiCreateCompatibleDC,
NtGdiCreateDIBitmapInternal, NtGdiCreateDIBitmapInternal,
NtGdiCreateMetafileDC, NtGdiCreateMetafileDC,
NtGdiCreatePen,
NtGdiDdDDICheckVidPnExclusiveOwnership, NtGdiDdDDICheckVidPnExclusiveOwnership,
NtGdiDdDDICloseAdapter, NtGdiDdDDICloseAdapter,
NtGdiDdDDICreateDCFromMemory, NtGdiDdDDICreateDCFromMemory,
@ -1100,7 +1099,6 @@ static struct unix_funcs unix_funcs =
NtGdiEndPage, NtGdiEndPage,
NtGdiEnumFonts, NtGdiEnumFonts,
NtGdiExcludeClipRect, NtGdiExcludeClipRect,
NtGdiExtCreatePen,
NtGdiExtEscape, NtGdiExtEscape,
NtGdiExtFloodFill, NtGdiExtFloodFill,
NtGdiExtTextOutW, NtGdiExtTextOutW,

View File

@ -46,6 +46,7 @@ static void * const syscalls[] =
NtGdiCreateHatchBrushInternal, NtGdiCreateHatchBrushInternal,
NtGdiCreatePaletteInternal, NtGdiCreatePaletteInternal,
NtGdiCreatePatternBrushInternal, NtGdiCreatePatternBrushInternal,
NtGdiCreatePen,
NtGdiCreateRectRgn, NtGdiCreateRectRgn,
NtGdiCreateRoundRectRgn, NtGdiCreateRoundRectRgn,
NtGdiCreateSolidBrush, NtGdiCreateSolidBrush,
@ -53,6 +54,7 @@ static void * const syscalls[] =
NtGdiDescribePixelFormat, NtGdiDescribePixelFormat,
NtGdiDrawStream, NtGdiDrawStream,
NtGdiEqualRgn, NtGdiEqualRgn,
NtGdiExtCreatePen,
NtGdiExtCreateRegion, NtGdiExtCreateRegion,
NtGdiExtGetObjectW, NtGdiExtGetObjectW,
NtGdiFlattenPath, NtGdiFlattenPath,

View File

@ -158,7 +158,7 @@
@ stub NtGdiCreateOPMProtectedOutputs @ stub NtGdiCreateOPMProtectedOutputs
@ stdcall -syscall NtGdiCreatePaletteInternal(ptr long) @ stdcall -syscall NtGdiCreatePaletteInternal(ptr long)
@ stdcall -syscall NtGdiCreatePatternBrushInternal(long long long) @ stdcall -syscall NtGdiCreatePatternBrushInternal(long long long)
@ stdcall NtGdiCreatePen(long long long long) @ stdcall -syscall NtGdiCreatePen(long long long long)
@ stdcall -syscall NtGdiCreateRectRgn(long long long long) @ stdcall -syscall NtGdiCreateRectRgn(long long long long)
@ stdcall -syscall NtGdiCreateRoundRectRgn(long long long long long long) @ stdcall -syscall NtGdiCreateRoundRectRgn(long long long long long long)
@ stub NtGdiCreateServerMetaFile @ stub NtGdiCreateServerMetaFile
@ -418,7 +418,7 @@
@ stdcall -syscall NtGdiEqualRgn(long long) @ stdcall -syscall NtGdiEqualRgn(long long)
@ stub NtGdiEudcLoadUnloadLink @ stub NtGdiEudcLoadUnloadLink
@ stdcall NtGdiExcludeClipRect(long long long long long) @ stdcall NtGdiExcludeClipRect(long long long long long)
@ stdcall NtGdiExtCreatePen(long long long long long long long ptr long long long) @ stdcall -syscall NtGdiExtCreatePen(long long long long long long long ptr long long long)
@ stdcall -syscall NtGdiExtCreateRegion(ptr long ptr) @ stdcall -syscall NtGdiExtCreateRegion(ptr long ptr)
@ stdcall NtGdiExtEscape(long wstr long long long ptr long ptr) @ stdcall NtGdiExtEscape(long wstr long long long ptr long ptr)
@ stdcall NtGdiExtFloodFill(long long long long long) @ stdcall NtGdiExtFloodFill(long long long long long)

View File

@ -63,7 +63,6 @@ struct unix_funcs
UINT coloruse, UINT max_info, UINT max_bits, UINT coloruse, UINT max_info, UINT max_bits,
ULONG flags, HANDLE xform ); ULONG flags, HANDLE xform );
HDC (WINAPI *pNtGdiCreateMetafileDC)( HDC hdc ); HDC (WINAPI *pNtGdiCreateMetafileDC)( HDC hdc );
HPEN (WINAPI *pNtGdiCreatePen)( INT style, INT width, COLORREF color, HBRUSH brush );
NTSTATUS (WINAPI *pNtGdiDdDDICheckVidPnExclusiveOwnership)( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc ); NTSTATUS (WINAPI *pNtGdiDdDDICheckVidPnExclusiveOwnership)( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc );
NTSTATUS (WINAPI *pNtGdiDdDDICloseAdapter)( const D3DKMT_CLOSEADAPTER *desc ); NTSTATUS (WINAPI *pNtGdiDdDDICloseAdapter)( const D3DKMT_CLOSEADAPTER *desc );
NTSTATUS (WINAPI *pNtGdiDdDDICreateDCFromMemory)( D3DKMT_CREATEDCFROMMEMORY *desc ); NTSTATUS (WINAPI *pNtGdiDdDDICreateDCFromMemory)( D3DKMT_CREATEDCFROMMEMORY *desc );
@ -87,10 +86,6 @@ struct unix_funcs
BOOL (WINAPI *pNtGdiEnumFonts)( HDC hdc, ULONG type, ULONG win32_compat, ULONG face_name_len, BOOL (WINAPI *pNtGdiEnumFonts)( HDC hdc, ULONG type, ULONG win32_compat, ULONG face_name_len,
const WCHAR *face_name, ULONG charset, ULONG *count, void *buf ); 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 *pNtGdiExcludeClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom );
HPEN (WINAPI *pNtGdiExtCreatePen)( DWORD style, DWORD width, ULONG brush_style, ULONG color,
ULONG_PTR client_hatch, ULONG_PTR hatch, DWORD style_count,
const DWORD *style_bits, ULONG dib_size, BOOL old_style,
HBRUSH brush );
INT (WINAPI *pNtGdiExtEscape)( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, INT (WINAPI *pNtGdiExtEscape)( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size,
const char *input, INT output_size, char *output ); const char *input, INT output_size, char *output );
BOOL (WINAPI *pNtGdiExtFloodFill)( HDC hdc, INT x, INT y, COLORREF color, UINT type ); BOOL (WINAPI *pNtGdiExtFloodFill)( HDC hdc, INT x, INT y, COLORREF color, UINT type );

View File

@ -105,11 +105,6 @@ HDC WINAPI NtGdiCreateMetafileDC( HDC hdc )
return unix_funcs->pNtGdiCreateMetafileDC( hdc ); return unix_funcs->pNtGdiCreateMetafileDC( hdc );
} }
HPEN WINAPI NtGdiCreatePen( INT style, INT width, COLORREF color, HBRUSH brush )
{
return unix_funcs->pNtGdiCreatePen( style, width, color, brush );
}
BOOL WINAPI NtGdiDeleteObjectApp( HGDIOBJ obj ) BOOL WINAPI NtGdiDeleteObjectApp( HGDIOBJ obj )
{ {
return unix_funcs->pNtGdiDeleteObjectApp( obj ); return unix_funcs->pNtGdiDeleteObjectApp( obj );
@ -153,15 +148,6 @@ INT WINAPI NtGdiExcludeClipRect( HDC hdc, INT left, INT top, INT right, INT bott
return unix_funcs->pNtGdiExcludeClipRect( hdc, left, top, right, bottom ); return unix_funcs->pNtGdiExcludeClipRect( hdc, left, top, right, bottom );
} }
HPEN WINAPI NtGdiExtCreatePen( DWORD style, DWORD width, ULONG brush_style, ULONG color,
ULONG_PTR client_hatch, ULONG_PTR hatch, DWORD style_count,
const DWORD *style_bits, ULONG dib_size, BOOL old_style,
HBRUSH brush )
{
return unix_funcs->pNtGdiExtCreatePen( style, width, brush_style, color, client_hatch, hatch, style_count,
style_bits, dib_size, old_style, brush );
}
INT WINAPI NtGdiExtEscape( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size, INT WINAPI NtGdiExtEscape( HDC hdc, WCHAR *driver, INT driver_id, INT escape, INT input_size,
const char *input, INT output_size, char *output ) const char *input, INT output_size, char *output )
{ {

View File

@ -164,6 +164,35 @@ NTSTATUS WINAPI wow64_NtGdiCreateSolidBrush( UINT *args )
return HandleToUlong( NtGdiCreateSolidBrush( color, brush )); return HandleToUlong( NtGdiCreateSolidBrush( color, brush ));
} }
NTSTATUS WINAPI wow64_NtGdiCreatePen( UINT *args )
{
INT style = get_ulong( &args );
INT width = get_ulong( &args );
COLORREF color = get_ulong( &args );
HBRUSH brush = get_handle( &args );
return HandleToUlong( NtGdiCreatePen( style, width, color, brush ));
}
NTSTATUS WINAPI wow64_NtGdiExtCreatePen( UINT *args )
{
DWORD style = get_ulong( &args );
DWORD width = get_ulong( &args );
ULONG brush_style = get_ulong( &args );
ULONG color = get_ulong( &args );
ULONG_PTR client_hatch = get_ulong( &args );
ULONG_PTR hatch = get_ulong( &args );
DWORD style_count = get_ulong( &args );
const DWORD *style_bits = get_ptr( &args );
ULONG dib_size = get_ulong( &args );
BOOL old_style = get_ulong( &args );
HBRUSH brush = get_handle( &args );
return HandleToUlong( NtGdiExtCreatePen( style, width, brush_style, color, client_hatch,
hatch, style_count, style_bits, dib_size,
old_style, brush ));
}
NTSTATUS WINAPI wow64_NtGdiCreateRectRgn( UINT *args ) NTSTATUS WINAPI wow64_NtGdiCreateRectRgn( UINT *args )
{ {
INT left = get_ulong( &args ); INT left = get_ulong( &args );

View File

@ -34,6 +34,7 @@
SYSCALL_ENTRY( NtGdiCreateHatchBrushInternal ) \ SYSCALL_ENTRY( NtGdiCreateHatchBrushInternal ) \
SYSCALL_ENTRY( NtGdiCreatePaletteInternal ) \ SYSCALL_ENTRY( NtGdiCreatePaletteInternal ) \
SYSCALL_ENTRY( NtGdiCreatePatternBrushInternal ) \ SYSCALL_ENTRY( NtGdiCreatePatternBrushInternal ) \
SYSCALL_ENTRY( NtGdiCreatePen ) \
SYSCALL_ENTRY( NtGdiCreateRectRgn ) \ SYSCALL_ENTRY( NtGdiCreateRectRgn ) \
SYSCALL_ENTRY( NtGdiCreateRoundRectRgn ) \ SYSCALL_ENTRY( NtGdiCreateRoundRectRgn ) \
SYSCALL_ENTRY( NtGdiCreateSolidBrush ) \ SYSCALL_ENTRY( NtGdiCreateSolidBrush ) \
@ -41,6 +42,7 @@
SYSCALL_ENTRY( NtGdiDescribePixelFormat ) \ SYSCALL_ENTRY( NtGdiDescribePixelFormat ) \
SYSCALL_ENTRY( NtGdiDrawStream ) \ SYSCALL_ENTRY( NtGdiDrawStream ) \
SYSCALL_ENTRY( NtGdiEqualRgn ) \ SYSCALL_ENTRY( NtGdiEqualRgn ) \
SYSCALL_ENTRY( NtGdiExtCreatePen ) \
SYSCALL_ENTRY( NtGdiExtCreateRegion ) \ SYSCALL_ENTRY( NtGdiExtCreateRegion ) \
SYSCALL_ENTRY( NtGdiExtGetObjectW ) \ SYSCALL_ENTRY( NtGdiExtGetObjectW ) \
SYSCALL_ENTRY( NtGdiFlattenPath ) \ SYSCALL_ENTRY( NtGdiFlattenPath ) \