[PATCH 1/4] gdiplus/metafile: Support hatch brushes in playback

Nikolay Sivov nsivov at codeweavers.com
Wed Nov 1 06:28:57 CDT 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/gdiplus/metafile.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index e40487acff..6acebfb7cb 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -236,12 +236,20 @@ typedef struct EmfPlusSolidBrushData
     EmfPlusARGB SolidColor;
 } EmfPlusSolidBrushData;
 
+typedef struct EmfPlusHatchBrushData
+{
+    DWORD HatchStyle;
+    EmfPlusARGB ForeColor;
+    EmfPlusARGB BackColor;
+} EmfPlusHatchBrushData;
+
 typedef struct EmfPlusBrush
 {
     DWORD Version;
     DWORD Type;
     union {
         EmfPlusSolidBrushData solid;
+        EmfPlusHatchBrushData hatch;
     } BrushData;
 } EmfPlusBrush;
 
@@ -1839,6 +1847,13 @@ static GpStatus metafile_deserialize_brush(const BYTE *record_data, UINT data_si
 
         status = GdipCreateSolidFill(*(ARGB *)&data->BrushData.solid.SolidColor, (GpSolidFill **)brush);
         break;
+    case BrushTypeHatchFill:
+        if (data_size != header_size + sizeof(EmfPlusHatchBrushData))
+            return InvalidParameter;
+
+        status = GdipCreateHatchBrush(data->BrushData.hatch.HatchStyle, *(ARGB *)&data->BrushData.hatch.ForeColor,
+            *(ARGB *)&data->BrushData.hatch.BackColor, (GpHatch **)brush);
+        break;
     default:
         FIXME("brush type %u is not supported.\n", data->Type);
         return NotImplemented;
-- 
2.14.2




More information about the wine-patches mailing list