Module: wine Branch: master Commit: dc19c31d8baf841c2201204137d4c7b9aceb9484 URL: https://source.winehq.org/git/wine.git/?a=commit;h=dc19c31d8baf841c220120413...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Aug 19 10:23:15 2021 +0200
gdi32: Use NtGdiStrokeAndFillPath for StrokeAndFillPath.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdi32/enhmfdrv/graphics.c | 11 ++++++++++- dlls/gdi32/gdi_private.h | 1 + dlls/gdi32/gdidc.c | 12 ++++++++++++ dlls/gdi32/path.c | 6 ++---- 4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c index 0f48d6876dd..e567808016b 100644 --- a/dlls/gdi32/enhmfdrv/graphics.c +++ b/dlls/gdi32/enhmfdrv/graphics.c @@ -1197,7 +1197,16 @@ BOOL EMFDC_FillPath( DC_ATTR *dc_attr ) */ BOOL CDECL EMFDRV_StrokeAndFillPath( PHYSDEV dev ) { - return emfdrv_stroke_and_fill_path( dev, EMR_STROKEANDFILLPATH ); + /* FIXME: update bound rect */ + return TRUE; +} + +/********************************************************************** + * EMFDC_StrokeAndFillPath + */ +BOOL EMFDC_StrokeAndFillPath( DC_ATTR *dc_attr ) +{ + return emfdrv_stroke_and_fill_path( dc_attr->emf, EMR_STROKEANDFILLPATH ); }
/********************************************************************** diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h index bb90ee471f1..a159aa875a6 100644 --- a/dlls/gdi32/gdi_private.h +++ b/dlls/gdi32/gdi_private.h @@ -217,5 +217,6 @@ extern BOOL EMFDC_StretchDIBits( DC_ATTR *dc_attr, INT x_dst, INT y_dst, INT wid INT height_dst, INT x_src, INT y_src, INT width_src, INT height_src, const void *bits, const BITMAPINFO *info, UINT coloruse, DWORD rop ) DECLSPEC_HIDDEN; +extern BOOL EMFDC_StrokeAndFillPath( DC_ATTR *dc_attr ) DECLSPEC_HIDDEN;
#endif /* __WINE_GDI_PRIVATE_H */ diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c index c5e8d29837a..0e7c0574024 100644 --- a/dlls/gdi32/gdidc.c +++ b/dlls/gdi32/gdidc.c @@ -1531,6 +1531,18 @@ BOOL WINAPI FillPath( HDC hdc ) return NtGdiFillPath( hdc ); }
+/******************************************************************* + * StrokeAndFillPath (GDI32.@) + */ +BOOL WINAPI StrokeAndFillPath( HDC hdc ) +{ + DC_ATTR *dc_attr; + + if (!(dc_attr = get_dc_attr( hdc ))) return FALSE; + if (dc_attr->emf && !EMFDC_StrokeAndFillPath( dc_attr )) return FALSE; + return NtGdiStrokeAndFillPath( hdc ); +} + /*********************************************************************** * FlattenPath (GDI32.@) */ diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c index b903ebc0c15..f08592598b9 100644 --- a/dlls/gdi32/path.c +++ b/dlls/gdi32/path.c @@ -1901,11 +1901,9 @@ static struct gdi_path *PATH_WidenPath(DC *dc)
/******************************************************************* - * StrokeAndFillPath [GDI32.@] - * - * + * NtGdiStrokeAndFillPath (win32u.@) */ -BOOL WINAPI StrokeAndFillPath(HDC hdc) +BOOL WINAPI NtGdiStrokeAndFillPath( HDC hdc ) { BOOL ret = FALSE; DC *dc = get_dc_ptr( hdc );