Module: wine Branch: master Commit: fea9bb75237bb83eebdc0cbaa4b02f4bf6e8a54a URL: https://gitlab.winehq.org/wine/wine/-/commit/fea9bb75237bb83eebdc0cbaa4b02f4...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Sat Oct 7 18:25:06 2023 +0200
gdi32/emf: Add SetMetaRgn() recording.
---
dlls/gdi32/dc.c | 2 +- dlls/gdi32/emfdc.c | 9 +++++++++ dlls/gdi32/gdi_private.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 09068c7d13a..3185fb273ba 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -2253,7 +2253,7 @@ INT WINAPI SetMetaRgn( HDC hdc ) DC_ATTR *dc_attr;
if (!(dc_attr = get_dc_attr( hdc ))) return FALSE; - if (dc_attr->emf) FIXME( "EMFs are not yet supported\n" ); + if (dc_attr->emf && !EMFDC_SetMetaRgn( dc_attr )) return FALSE; return NtGdiSetMetaRgn( hdc ); }
diff --git a/dlls/gdi32/emfdc.c b/dlls/gdi32/emfdc.c index 35910b388c3..e94f3c69b12 100644 --- a/dlls/gdi32/emfdc.c +++ b/dlls/gdi32/emfdc.c @@ -2254,6 +2254,15 @@ BOOL EMFDC_SetMapMode( DC_ATTR *dc_attr, INT mode ) return emfdc_record( get_dc_emf( dc_attr ), &emr.emr ); }
+BOOL EMFDC_SetMetaRgn( DC_ATTR *dc_attr ) +{ + EMRSETMETARGN emr; + + emr.emr.iType = EMR_SETMETARGN; + emr.emr.nSize = sizeof(emr); + return emfdc_record( get_dc_emf( dc_attr ), &emr.emr ); +} + BOOL EMFDC_SetMiterLimit( DC_ATTR *dc_attr, FLOAT limit ) { struct emr_set_miter_limit emr; diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h index a98c0f29917..d9bf1c32895 100644 --- a/dlls/gdi32/gdi_private.h +++ b/dlls/gdi32/gdi_private.h @@ -241,6 +241,7 @@ INT EMFDC_SetDIBitsToDevice( DC_ATTR *dc_attr, INT x_dest, INT y_dest, DWORD wi BOOL EMFDC_SetLayout( DC_ATTR *dc_attr, DWORD layout ); BOOL EMFDC_SetMapMode( DC_ATTR *dc_attr, INT mode ); BOOL EMFDC_SetMapperFlags( DC_ATTR *dc_attr, DWORD flags ); +BOOL EMFDC_SetMetaRgn( DC_ATTR *dc_attr ); BOOL EMFDC_SetMiterLimit( DC_ATTR *dc_attr, FLOAT limit ); BOOL EMFDC_SetPixel( DC_ATTR *dc_attr, INT x, INT y, COLORREF color ); BOOL EMFDC_SetPolyFillMode( DC_ATTR *dc_attr, INT mode );