See FillPie implementation.
From: Akihiro Sagawa sagawa.aki@gmail.com
See FillPie implementation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57083 --- dlls/gdiplus/metafile.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c index e529f237941..49c41b37965 100644 --- a/dlls/gdiplus/metafile.c +++ b/dlls/gdiplus/metafile.c @@ -5083,6 +5083,7 @@ GpStatus METAFILE_DrawPath(GpMetafile *metafile, GpPen *pen, GpPath *path) GpStatus METAFILE_DrawEllipse(GpMetafile *metafile, GpPen *pen, GpRectF *rect) { EmfPlusDrawEllipse *record; + BOOL is_int_rect; GpStatus stat; DWORD pen_id;
@@ -5095,12 +5096,15 @@ GpStatus METAFILE_DrawEllipse(GpMetafile *metafile, GpPen *pen, GpRectF *rect) stat = METAFILE_AddPenObject(metafile, pen, &pen_id); if (stat != Ok) return stat;
+ is_int_rect = is_integer_rect(rect); + stat = METAFILE_AllocateRecord(metafile, EmfPlusRecordTypeDrawEllipse, - sizeof(EmfPlusDrawEllipse), (void **)&record); + FIELD_OFFSET(EmfPlusDrawEllipse, RectData) + (is_int_rect ? sizeof(EmfPlusRect) : sizeof(EmfPlusRectF)), + (void **)&record); if (stat != Ok) return stat; record->Header.Type = EmfPlusRecordTypeDrawEllipse; record->Header.Flags = pen_id; - if (is_integer_rect(rect)) + if (is_int_rect) { record->Header.Flags |= 0x4000; record->RectData.rect.X = (SHORT)rect->X;
From: Akihiro Sagawa sagawa.aki@gmail.com
--- dlls/gdiplus/metafile.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c index 49c41b37965..c70aa333428 100644 --- a/dlls/gdiplus/metafile.c +++ b/dlls/gdiplus/metafile.c @@ -5162,9 +5162,9 @@ GpStatus METAFILE_FillPath(GpMetafile *metafile, GpBrush *brush, GpPath *path)
GpStatus METAFILE_FillEllipse(GpMetafile *metafile, GpBrush *brush, GpRectF *rect) { + BOOL is_int_rect, inline_color; EmfPlusFillEllipse *record; DWORD brush_id = -1; - BOOL inline_color; GpStatus stat;
if (metafile->metafile_type == MetafileTypeEmf) @@ -5180,7 +5180,11 @@ GpStatus METAFILE_FillEllipse(GpMetafile *metafile, GpBrush *brush, GpRectF *rec if (stat != Ok) return stat; }
- stat = METAFILE_AllocateRecord(metafile, EmfPlusRecordTypeFillEllipse, sizeof(EmfPlusFillEllipse), (void **)&record); + is_int_rect = is_integer_rect(rect); + + stat = METAFILE_AllocateRecord(metafile, EmfPlusRecordTypeFillEllipse, + FIELD_OFFSET(EmfPlusFillEllipse, RectData) + (is_int_rect ? sizeof(EmfPlusRect) : sizeof(EmfPlusRectF)), + (void **)&record); if (stat != Ok) return stat; if (inline_color) { @@ -5190,7 +5194,7 @@ GpStatus METAFILE_FillEllipse(GpMetafile *metafile, GpBrush *brush, GpRectF *rec else record->BrushId = brush_id;
- if (is_integer_rect(rect)) + if (is_int_rect) { record->Header.Flags |= 0x4000; record->RectData.rect.X = (SHORT)rect->X;
This merge request was approved by Esme Povirk.