Jacek Caban : gdi32: Directly handle EMFs in GdiComment.

Alexandre Julliard julliard at winehq.org
Tue Aug 17 16:26:52 CDT 2021


Module: wine
Branch: master
Commit: 2ef5b9720f9867371a5dcc6069d819cc93e3929d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=2ef5b9720f9867371a5dcc6069d819cc93e3929d

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Aug 17 11:39:46 2021 +0200

gdi32: Directly handle EMFs in GdiComment.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/enhmfdrv/enhmetafiledrv.h |  1 -
 dlls/gdi32/enhmfdrv/init.c           |  2 +-
 dlls/gdi32/enhmfdrv/objects.c        | 11 +++++++----
 dlls/gdi32/gdiobj.c                  | 19 -------------------
 4 files changed, 8 insertions(+), 25 deletions(-)

diff --git a/dlls/gdi32/enhmfdrv/enhmetafiledrv.h b/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
index 3e24af9f0da..fb108c15be5 100644
--- a/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
+++ b/dlls/gdi32/enhmfdrv/enhmetafiledrv.h
@@ -73,7 +73,6 @@ extern BOOL     CDECL EMFDRV_FillPath( PHYSDEV dev ) DECLSPEC_HIDDEN;
 extern BOOL     CDECL EMFDRV_FillRgn( PHYSDEV dev, HRGN hrgn, HBRUSH hbrush ) DECLSPEC_HIDDEN;
 extern BOOL     CDECL EMFDRV_FlattenPath( PHYSDEV dev ) DECLSPEC_HIDDEN;
 extern BOOL     CDECL EMFDRV_FrameRgn( PHYSDEV dev, HRGN hrgn, HBRUSH hbrush, INT width, INT height ) DECLSPEC_HIDDEN;
-extern BOOL     CDECL EMFDRV_GdiComment( PHYSDEV dev, UINT bytes, const BYTE *buffer ) DECLSPEC_HIDDEN;
 extern INT      CDECL EMFDRV_GetDeviceCaps( PHYSDEV dev, INT cap ) DECLSPEC_HIDDEN;
 extern BOOL     CDECL EMFDRV_GradientFill( PHYSDEV dev, TRIVERTEX *vert_array, ULONG nvert,
                                            void *grad_array, ULONG ngrad, ULONG mode ) DECLSPEC_HIDDEN;
diff --git a/dlls/gdi32/enhmfdrv/init.c b/dlls/gdi32/enhmfdrv/init.c
index bdae8005e90..4bd9d831a53 100644
--- a/dlls/gdi32/enhmfdrv/init.c
+++ b/dlls/gdi32/enhmfdrv/init.c
@@ -66,7 +66,7 @@ static const struct gdi_dc_funcs emfdrv_driver =
     EMFDRV_FlattenPath,              /* pFlattenPath */
     NULL,                            /* pFontIsLinked */
     EMFDRV_FrameRgn,                 /* pFrameRgn */
-    EMFDRV_GdiComment,               /* pGdiComment */
+    NULL,                            /* pGdiComment */
     NULL,                            /* pGetBoundsRect */
     NULL,                            /* pGetCharABCWidths */
     NULL,                            /* pGetCharABCWidthsI */
diff --git a/dlls/gdi32/enhmfdrv/objects.c b/dlls/gdi32/enhmfdrv/objects.c
index 14632dc7b23..1e2cb52dc6a 100644
--- a/dlls/gdi32/enhmfdrv/objects.c
+++ b/dlls/gdi32/enhmfdrv/objects.c
@@ -510,15 +510,18 @@ COLORREF CDECL EMFDRV_SetDCPenColor( PHYSDEV dev, COLORREF color )
     return EMFDRV_WriteRecord( dev, &emr.emr ) ? color : CLR_INVALID;
 }
 
-/******************************************************************
- *         EMFDRV_GdiComment
+/*******************************************************************
+ *      GdiComment   (GDI32.@)
  */
-BOOL CDECL EMFDRV_GdiComment(PHYSDEV dev, UINT bytes, const BYTE *buffer)
+BOOL WINAPI GdiComment( HDC hdc, UINT bytes, const BYTE *buffer )
 {
+    DC_ATTR *dc_attr;
     EMRGDICOMMENT *emr;
     UINT total, rounded_size;
     BOOL ret;
 
+    if (!(dc_attr = get_dc_attr( hdc )) || !dc_attr->emf) return FALSE;
+
     rounded_size = (bytes+3) & ~3;
     total = offsetof(EMRGDICOMMENT,Data) + rounded_size;
 
@@ -529,7 +532,7 @@ BOOL CDECL EMFDRV_GdiComment(PHYSDEV dev, UINT bytes, const BYTE *buffer)
     memset(&emr->Data[bytes], 0, rounded_size - bytes);
     memcpy(&emr->Data[0], buffer, bytes);
 
-    ret = EMFDRV_WriteRecord( dev, &emr->emr );
+    ret = EMFDRV_WriteRecord( dc_attr->emf, &emr->emr );
 
     HeapFree(GetProcessHeap(), 0, emr);
 
diff --git a/dlls/gdi32/gdiobj.c b/dlls/gdi32/gdiobj.c
index 8435c009716..da428d149ce 100644
--- a/dlls/gdi32/gdiobj.c
+++ b/dlls/gdi32/gdiobj.c
@@ -1217,25 +1217,6 @@ BOOL WINAPI GetColorAdjustment(HDC hdc, LPCOLORADJUSTMENT lpca)
     return FALSE;
 }
 
-/*******************************************************************
- *      GdiComment [GDI32.@]
- *
- *
- */
-BOOL WINAPI GdiComment(HDC hdc, UINT cbSize, const BYTE *lpData)
-{
-    DC *dc = get_dc_ptr(hdc);
-    BOOL ret = FALSE;
-
-    if(dc)
-    {
-        PHYSDEV physdev = GET_DC_PHYSDEV( dc, pGdiComment );
-        ret = physdev->funcs->pGdiComment( physdev, cbSize, lpData );
-        release_dc_ptr( dc );
-    }
-    return ret;
-}
-
 /*******************************************************************
  *      SetColorAdjustment [GDI32.@]
  *




More information about the wine-cvs mailing list