diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c index eacf596c92b..0f48d6876dd 100644 --- a/dlls/gdi32/enhmfdrv/graphics.c +++ b/dlls/gdi32/enhmfdrv/graphics.c @@ -1180,7 +1180,16 @@ BOOL EMFDC_GradientFill( DC_ATTR *dc_attr, TRIVERTEX *vert_array, ULONG nvert, */ BOOL CDECL EMFDRV_FillPath( PHYSDEV dev ) { - return emfdrv_stroke_and_fill_path( dev, EMR_FILLPATH ); + /* FIXME: update bound rect */ + return TRUE; +} + +/********************************************************************** + * EMFDC_FillPath + */ +BOOL EMFDC_FillPath( DC_ATTR *dc_attr ) +{ + return emfdrv_stroke_and_fill_path( dc_attr->emf, EMR_FILLPATH ); } /********************************************************************** diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h index b32bae5449d..0a894e9ec3d 100644 --- a/dlls/gdi32/gdi_private.h +++ b/dlls/gdi32/gdi_private.h @@ -147,6 +147,7 @@ extern BOOL EMFDC_ExtFloodFill( DC_ATTR *dc_attr, INT x, INT y, COLORREF color, extern BOOL EMFDC_ExtSelectClipRgn( DC_ATTR *dc_attr, HRGN hrgn, INT mode ) DECLSPEC_HIDDEN; extern BOOL EMFDC_ExtTextOut( DC_ATTR *dc_attr, INT x, INT y, UINT flags, const RECT *rect, const WCHAR *str, UINT count, const INT *dx ) DECLSPEC_HIDDEN; +extern BOOL EMFDC_FillPath( DC_ATTR *dc_attr ) DECLSPEC_HIDDEN; extern BOOL EMFDC_FillRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush ) DECLSPEC_HIDDEN; extern BOOL EMFDC_FrameRgn( DC_ATTR *dc_attr, HRGN hrgn, HBRUSH hbrush, INT width, INT height ) DECLSPEC_HIDDEN; diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c index 041cba83581..85744cc5c11 100644 --- a/dlls/gdi32/gdidc.c +++ b/dlls/gdi32/gdidc.c @@ -1519,6 +1519,18 @@ BOOL WINAPI CloseFigure( HDC hdc ) return NtGdiCloseFigure( hdc ); } +/*********************************************************************** + * FillPath (GDI32.@) + */ +BOOL WINAPI FillPath( HDC hdc ) +{ + DC_ATTR *dc_attr; + + if (!(dc_attr = get_dc_attr( hdc ))) return FALSE; + if (dc_attr->emf && !EMFDC_FillPath( dc_attr )) return FALSE; + return NtGdiFillPath( hdc ); +} + /*********************************************************************** * IntersectClipRect (GDI32.@) */ diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c index fd8970f2929..54e93ca74db 100644 --- a/dlls/gdi32/path.c +++ b/dlls/gdi32/path.c @@ -696,12 +696,9 @@ HRGN WINAPI PathToRegion(HDC hdc) /*********************************************************************** - * FillPath (GDI32.@) - * - * FIXME - * Check that SetLastError is being called correctly + * NtGdiFillPath (win32u.@) */ -BOOL WINAPI FillPath(HDC hdc) +BOOL WINAPI NtGdiFillPath( HDC hdc ) { BOOL ret = FALSE; DC *dc = get_dc_ptr( hdc );