Commit 1ac5a2e0 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

win32u: Use syscall interface for more font functions.

parent 9b5c916e
...@@ -1034,21 +1034,14 @@ static struct unix_funcs unix_funcs = ...@@ -1034,21 +1034,14 @@ static struct unix_funcs unix_funcs =
NtGdiExcludeClipRect, NtGdiExcludeClipRect,
NtGdiExtEscape, NtGdiExtEscape,
NtGdiExtSelectClipRgn, NtGdiExtSelectClipRgn,
NtGdiFontIsLinked,
NtGdiGetAndSetDCDword, NtGdiGetAndSetDCDword,
NtGdiGetAppClipBox, NtGdiGetAppClipBox,
NtGdiGetBoundsRect, NtGdiGetBoundsRect,
NtGdiGetDeviceCaps, NtGdiGetDeviceCaps,
NtGdiGetDeviceGammaRamp, NtGdiGetDeviceGammaRamp,
NtGdiGetFontData,
NtGdiGetFontUnicodeRanges,
NtGdiGetGlyphIndicesW,
NtGdiGetGlyphOutline,
NtGdiGetKerningPairs,
NtGdiGetNearestColor, NtGdiGetNearestColor,
NtGdiGetRandomRgn, NtGdiGetRandomRgn,
NtGdiGetRasterizerCaps, NtGdiGetRasterizerCaps,
NtGdiGetRealizationInfo,
NtGdiIntersectClipRect, NtGdiIntersectClipRect,
NtGdiOffsetClipRgn, NtGdiOffsetClipRgn,
NtGdiPtVisible, NtGdiPtVisible,
......
...@@ -98,6 +98,7 @@ static void * const syscalls[] = ...@@ -98,6 +98,7 @@ static void * const syscalls[] =
NtGdiFillRgn, NtGdiFillRgn,
NtGdiFlattenPath, NtGdiFlattenPath,
NtGdiFlush, NtGdiFlush,
NtGdiFontIsLinked,
NtGdiFrameRgn, NtGdiFrameRgn,
NtGdiGetBitmapBits, NtGdiGetBitmapBits,
NtGdiGetBitmapDimension, NtGdiGetBitmapDimension,
...@@ -109,12 +110,18 @@ static void * const syscalls[] = ...@@ -109,12 +110,18 @@ static void * const syscalls[] =
NtGdiGetDCObject, NtGdiGetDCObject,
NtGdiGetDCPoint, NtGdiGetDCPoint,
NtGdiGetDIBitsInternal, NtGdiGetDIBitsInternal,
NtGdiGetFontData,
NtGdiGetFontFileData, NtGdiGetFontFileData,
NtGdiGetFontFileInfo, NtGdiGetFontFileInfo,
NtGdiGetFontUnicodeRanges,
NtGdiGetGlyphIndicesW,
NtGdiGetGlyphOutline,
NtGdiGetKerningPairs,
NtGdiGetNearestPaletteIndex, NtGdiGetNearestPaletteIndex,
NtGdiGetOutlineTextMetricsInternalW, NtGdiGetOutlineTextMetricsInternalW,
NtGdiGetPath, NtGdiGetPath,
NtGdiGetPixel, NtGdiGetPixel,
NtGdiGetRealizationInfo,
NtGdiGetRegionData, NtGdiGetRegionData,
NtGdiGetRgnBox, NtGdiGetRgnBox,
NtGdiGetSpoolMessage, NtGdiGetSpoolMessage,
......
...@@ -437,7 +437,7 @@ ...@@ -437,7 +437,7 @@
@ stdcall -syscall NtGdiFillRgn(long long long) @ stdcall -syscall NtGdiFillRgn(long long long)
@ stdcall -syscall NtGdiFlattenPath(long) @ stdcall -syscall NtGdiFlattenPath(long)
@ stdcall -syscall NtGdiFlush() @ stdcall -syscall NtGdiFlush()
@ stdcall NtGdiFontIsLinked(long) @ stdcall -syscall NtGdiFontIsLinked(long)
@ stub NtGdiForceUFIMapping @ stub NtGdiForceUFIMapping
@ stdcall -syscall NtGdiFrameRgn(long long long long long) @ stdcall -syscall NtGdiFrameRgn(long long long long long)
@ stub NtGdiFullscreenControl @ stub NtGdiFullscreenControl
...@@ -477,16 +477,16 @@ ...@@ -477,16 +477,16 @@
@ stub NtGdiGetEmbedFonts @ stub NtGdiGetEmbedFonts
@ stub NtGdiGetEntry @ stub NtGdiGetEntry
@ stub NtGdiGetEudcTimeStampEx @ 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 NtGdiGetFontFileData(long long ptr ptr long)
@ stdcall -syscall NtGdiGetFontFileInfo(long long ptr long ptr) @ stdcall -syscall NtGdiGetFontFileInfo(long long ptr long ptr)
@ stub NtGdiGetFontResourceInfoInternalW @ stub NtGdiGetFontResourceInfoInternalW
@ stdcall NtGdiGetFontUnicodeRanges(long ptr) @ stdcall -syscall NtGdiGetFontUnicodeRanges(long ptr)
@ stub NtGdiGetGammaRampCapability @ stub NtGdiGetGammaRampCapability
@ stdcall NtGdiGetGlyphIndicesW(long wstr long ptr long) @ stdcall -syscall NtGdiGetGlyphIndicesW(long wstr long ptr long)
@ stub NtGdiGetGlyphIndicesWInternal @ stub NtGdiGetGlyphIndicesWInternal
@ stdcall NtGdiGetGlyphOutline(long long long ptr long ptr ptr long) @ stdcall -syscall NtGdiGetGlyphOutline(long long long ptr long ptr ptr long)
@ stdcall NtGdiGetKerningPairs(long long ptr) @ stdcall -syscall NtGdiGetKerningPairs(long long ptr)
@ stub NtGdiGetLinkedUFIs @ stub NtGdiGetLinkedUFIs
@ stub NtGdiGetMiterLimit @ stub NtGdiGetMiterLimit
@ stub NtGdiGetMonitorID @ stub NtGdiGetMonitorID
...@@ -506,7 +506,7 @@ ...@@ -506,7 +506,7 @@
@ stub NtGdiGetPublicFontTableChangeCookie @ stub NtGdiGetPublicFontTableChangeCookie
@ stdcall NtGdiGetRandomRgn(long long long) @ stdcall NtGdiGetRandomRgn(long long long)
@ stdcall NtGdiGetRasterizerCaps(ptr long) @ stdcall NtGdiGetRasterizerCaps(ptr long)
@ stdcall NtGdiGetRealizationInfo(long ptr) @ stdcall -syscall NtGdiGetRealizationInfo(long ptr)
@ stdcall -syscall NtGdiGetRegionData(long long ptr) @ stdcall -syscall NtGdiGetRegionData(long long ptr)
@ stdcall -syscall NtGdiGetRgnBox(long ptr) @ stdcall -syscall NtGdiGetRgnBox(long ptr)
@ stub NtGdiGetServerMetaFileBits @ stub NtGdiGetServerMetaFileBits
......
...@@ -41,24 +41,14 @@ struct unix_funcs ...@@ -41,24 +41,14 @@ struct unix_funcs
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 );
INT (WINAPI *pNtGdiExtSelectClipRgn)( HDC hdc, HRGN region, INT mode ); 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 ); BOOL (WINAPI *pNtGdiGetAndSetDCDword)( HDC hdc, UINT method, DWORD value, DWORD *result );
INT (WINAPI *pNtGdiGetAppClipBox)( HDC hdc, RECT *rect ); INT (WINAPI *pNtGdiGetAppClipBox)( HDC hdc, RECT *rect );
UINT (WINAPI *pNtGdiGetBoundsRect)( HDC hdc, RECT *rect, UINT flags ); UINT (WINAPI *pNtGdiGetBoundsRect)( HDC hdc, RECT *rect, UINT flags );
INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap ); INT (WINAPI *pNtGdiGetDeviceCaps)( HDC hdc, INT cap );
BOOL (WINAPI *pNtGdiGetDeviceGammaRamp)( HDC hdc, void *ptr ); 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 ); COLORREF (WINAPI *pNtGdiGetNearestColor)( HDC hdc, COLORREF color );
INT (WINAPI *pNtGdiGetRandomRgn)( HDC hdc, HRGN region, INT code ); INT (WINAPI *pNtGdiGetRandomRgn)( HDC hdc, HRGN region, INT code );
BOOL (WINAPI *pNtGdiGetRasterizerCaps)( RASTERIZER_STATUS *status, UINT size ); 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 *pNtGdiIntersectClipRect)( HDC hdc, INT left, INT top, INT right, INT bottom );
INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y ); INT (WINAPI *pNtGdiOffsetClipRgn)( HDC hdc, INT x, INT y );
BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y ); BOOL (WINAPI *pNtGdiPtVisible)( HDC hdc, INT x, INT y );
......
...@@ -57,12 +57,6 @@ INT WINAPI NtGdiExtSelectClipRgn( HDC hdc, HRGN region, INT mode ) ...@@ -57,12 +57,6 @@ INT WINAPI NtGdiExtSelectClipRgn( HDC hdc, HRGN region, INT mode )
return unix_funcs->pNtGdiExtSelectClipRgn( hdc, region, 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 ) BOOL WINAPI NtGdiGetAndSetDCDword( HDC hdc, UINT method, DWORD value, DWORD *result )
{ {
if (!unix_funcs) return FALSE; if (!unix_funcs) return FALSE;
...@@ -93,39 +87,6 @@ BOOL WINAPI NtGdiGetDeviceGammaRamp( HDC hdc, void *ptr ) ...@@ -93,39 +87,6 @@ BOOL WINAPI NtGdiGetDeviceGammaRamp( HDC hdc, void *ptr )
return unix_funcs->pNtGdiGetDeviceGammaRamp( hdc, 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 ) COLORREF WINAPI NtGdiGetNearestColor( HDC hdc, COLORREF color )
{ {
if (!unix_funcs) return CLR_INVALID; if (!unix_funcs) return CLR_INVALID;
...@@ -144,12 +105,6 @@ BOOL WINAPI NtGdiGetRasterizerCaps( RASTERIZER_STATUS *status, UINT size ) ...@@ -144,12 +105,6 @@ BOOL WINAPI NtGdiGetRasterizerCaps( RASTERIZER_STATUS *status, UINT size )
return unix_funcs->pNtGdiGetRasterizerCaps( status, 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 ) INT WINAPI NtGdiIntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom )
{ {
if (!unix_funcs) return ERROR; if (!unix_funcs) return ERROR;
......
...@@ -913,6 +913,13 @@ NTSTATUS WINAPI wow64_NtGdiFlush( UINT *args ) ...@@ -913,6 +913,13 @@ NTSTATUS WINAPI wow64_NtGdiFlush( UINT *args )
return NtGdiFlush(); return NtGdiFlush();
} }
NTSTATUS WINAPI wow64_NtGdiFontIsLinked( UINT *args )
{
HDC hdc = get_handle( &args );
return NtGdiFontIsLinked( hdc );
}
NTSTATUS WINAPI wow64_NtGdiFrameRgn( UINT *args ) NTSTATUS WINAPI wow64_NtGdiFrameRgn( UINT *args )
{ {
HDC hdc = get_handle( &args ); HDC hdc = get_handle( &args );
...@@ -1023,6 +1030,17 @@ NTSTATUS WINAPI wow64_NtGdiGetDIBitsInternal( UINT *args ) ...@@ -1023,6 +1030,17 @@ NTSTATUS WINAPI wow64_NtGdiGetDIBitsInternal( UINT *args )
max_bits, max_info ); 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 ) NTSTATUS WINAPI wow64_NtGdiGetFontFileData( UINT *args )
{ {
DWORD instance_id = get_ulong( &args ); DWORD instance_id = get_ulong( &args );
...@@ -1050,6 +1068,48 @@ NTSTATUS WINAPI wow64_NtGdiGetFontFileInfo( UINT *args ) ...@@ -1050,6 +1068,48 @@ NTSTATUS WINAPI wow64_NtGdiGetFontFileInfo( UINT *args )
return ret; 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 ) NTSTATUS WINAPI wow64_NtGdiGetNearestPaletteIndex( UINT *args )
{ {
HPALETTE hpalette = get_handle( &args ); HPALETTE hpalette = get_handle( &args );
...@@ -1132,6 +1192,14 @@ NTSTATUS WINAPI wow64_NtGdiGetPixel( UINT *args ) ...@@ -1132,6 +1192,14 @@ NTSTATUS WINAPI wow64_NtGdiGetPixel( UINT *args )
return NtGdiGetPixel( hdc, x, y ); 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 ) NTSTATUS WINAPI wow64_NtGdiGetTextCharsetInfo( UINT *args )
{ {
HDC hdc = get_ptr( &args ); HDC hdc = get_ptr( &args );
......
...@@ -84,6 +84,7 @@ ...@@ -84,6 +84,7 @@
SYSCALL_ENTRY( NtGdiFillRgn ) \ SYSCALL_ENTRY( NtGdiFillRgn ) \
SYSCALL_ENTRY( NtGdiFlattenPath ) \ SYSCALL_ENTRY( NtGdiFlattenPath ) \
SYSCALL_ENTRY( NtGdiFlush ) \ SYSCALL_ENTRY( NtGdiFlush ) \
SYSCALL_ENTRY( NtGdiFontIsLinked ) \
SYSCALL_ENTRY( NtGdiFrameRgn ) \ SYSCALL_ENTRY( NtGdiFrameRgn ) \
SYSCALL_ENTRY( NtGdiGetBitmapBits ) \ SYSCALL_ENTRY( NtGdiGetBitmapBits ) \
SYSCALL_ENTRY( NtGdiGetBitmapDimension ) \ SYSCALL_ENTRY( NtGdiGetBitmapDimension ) \
...@@ -95,12 +96,18 @@ ...@@ -95,12 +96,18 @@
SYSCALL_ENTRY( NtGdiGetDCObject ) \ SYSCALL_ENTRY( NtGdiGetDCObject ) \
SYSCALL_ENTRY( NtGdiGetDCPoint ) \ SYSCALL_ENTRY( NtGdiGetDCPoint ) \
SYSCALL_ENTRY( NtGdiGetDIBitsInternal ) \ SYSCALL_ENTRY( NtGdiGetDIBitsInternal ) \
SYSCALL_ENTRY( NtGdiGetFontData ) \
SYSCALL_ENTRY( NtGdiGetFontFileData ) \ SYSCALL_ENTRY( NtGdiGetFontFileData ) \
SYSCALL_ENTRY( NtGdiGetFontFileInfo ) \ SYSCALL_ENTRY( NtGdiGetFontFileInfo ) \
SYSCALL_ENTRY( NtGdiGetFontUnicodeRanges ) \
SYSCALL_ENTRY( NtGdiGetGlyphIndicesW ) \
SYSCALL_ENTRY( NtGdiGetGlyphOutline ) \
SYSCALL_ENTRY( NtGdiGetKerningPairs ) \
SYSCALL_ENTRY( NtGdiGetNearestPaletteIndex ) \ SYSCALL_ENTRY( NtGdiGetNearestPaletteIndex ) \
SYSCALL_ENTRY( NtGdiGetOutlineTextMetricsInternalW ) \ SYSCALL_ENTRY( NtGdiGetOutlineTextMetricsInternalW ) \
SYSCALL_ENTRY( NtGdiGetPath ) \ SYSCALL_ENTRY( NtGdiGetPath ) \
SYSCALL_ENTRY( NtGdiGetPixel ) \ SYSCALL_ENTRY( NtGdiGetPixel ) \
SYSCALL_ENTRY( NtGdiGetRealizationInfo ) \
SYSCALL_ENTRY( NtGdiGetRegionData ) \ SYSCALL_ENTRY( NtGdiGetRegionData ) \
SYSCALL_ENTRY( NtGdiGetRgnBox ) \ SYSCALL_ENTRY( NtGdiGetRgnBox ) \
SYSCALL_ENTRY( NtGdiGetSpoolMessage ) \ SYSCALL_ENTRY( NtGdiGetSpoolMessage ) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment