From f25f0fa2ac47af177de8ea7ef3a476b2b78a4941 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 2 Nov 2017 14:10:41 +0300 Subject: [PATCH] gdiplus/metafile: Support hatch brushes for recording. Signed-off-by: Nikolay Sivov Signed-off-by: Vincent Povirk Signed-off-by: Alexandre Julliard --- dlls/gdiplus/metafile.c | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c index 063077938ef..8e9ad870e37 100644 --- a/dlls/gdiplus/metafile.c +++ b/dlls/gdiplus/metafile.c @@ -3752,25 +3752,45 @@ static GpStatus METAFILE_AddPathObject(GpMetafile *metafile, GpPath *path, DWORD static GpStatus METAFILE_PrepareBrushData(GpBrush *brush, DWORD *size) { - if (brush->bt == BrushTypeSolidColor) + switch (brush->bt) { - *size = FIELD_OFFSET(EmfPlusBrush, BrushData.solid) + sizeof(EmfPlusSolidBrushData); - return Ok; + case BrushTypeSolidColor: + *size = FIELD_OFFSET(EmfPlusBrush, BrushData) + sizeof(EmfPlusSolidBrushData); + break; + case BrushTypeHatchFill: + *size = FIELD_OFFSET(EmfPlusBrush, BrushData) + sizeof(EmfPlusHatchBrushData); + break; + default: + FIXME("unsupported brush type: %d\n", brush->bt); + return NotImplemented; } - FIXME("unsupported brush type: %d\n", brush->bt); - return NotImplemented; + return Ok; } static void METAFILE_FillBrushData(GpBrush *brush, EmfPlusBrush *data) { - if (brush->bt == BrushTypeSolidColor) - { - GpSolidFill *solid = (GpSolidFill*)brush; + data->Version = VERSION_MAGIC2; + data->Type = brush->bt; - data->Version = VERSION_MAGIC2; - data->Type = solid->brush.bt; + switch (brush->bt) + { + case BrushTypeSolidColor: + { + GpSolidFill *solid = (GpSolidFill *)brush; data->BrushData.solid.SolidColor = solid->color; + break; + } + case BrushTypeHatchFill: + { + GpHatch *hatch = (GpHatch *)brush; + data->BrushData.hatch.HatchStyle = hatch->hatchstyle; + data->BrushData.hatch.ForeColor = hatch->forecol; + data->BrushData.hatch.BackColor = hatch->backcol; + break; + } + default: + FIXME("unsupported brush type: %d\n", brush->bt); } }