Module: wine Branch: master Commit: 259837a19976f7cd6a59fa316b6593eda1dd60dd URL: http://source.winehq.org/git/wine.git/?a=commit;h=259837a19976f7cd6a59fa316b...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Fri Sep 9 13:42:44 2016 -0500
gdiplus: Implement GdipGetMetafileHeaderFromMetafile.
Signed-off-by: Vincent Povirk vincent@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdiplus/metafile.c | 20 ++++++++++++++++---- dlls/gdiplus/tests/image.c | 24 ++++++++++++------------ 2 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c index b3b4682..d471a13 100644 --- a/dlls/gdiplus/metafile.c +++ b/dlls/gdiplus/metafile.c @@ -1667,17 +1667,29 @@ GpStatus WINGDIPAPI GdipEnumerateMetafileDestPointI(GpGraphics *graphics, GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile * metafile, MetafileHeader * header) { - static int calls; + GpStatus status;
TRACE("(%p, %p)\n", metafile, header);
if(!metafile || !header) return InvalidParameter;
- if(!(calls++)) - FIXME("not implemented\n"); + if (metafile->hemf) + { + status = GdipGetMetafileHeaderFromEmf(metafile->hemf, header); + if (status != Ok) return status; + } + else + { + memset(header, 0, sizeof(*header)); + header->Version = 0xdbc01002; + }
- memset(header, 0, sizeof(MetafileHeader)); + header->Type = metafile->metafile_type; + header->DpiX = metafile->image.xres; + header->DpiY = metafile->image.yres; + header->Width = gdip_round(metafile->bounds.Width); + header->Height = gdip_round(metafile->bounds.Height);
return Ok; } diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index cabd2fce..8c123b9 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -1465,17 +1465,17 @@ static void test_loadwmf(void) expect(Ok, stat); if (stat == Ok) { - todo_wine expect(MetafileTypeWmfPlaceable, header.Type); + expect(MetafileTypeWmfPlaceable, header.Type); todo_wine expect(sizeof(wmfimage)-sizeof(WmfPlaceableFileHeader), header.Size); todo_wine expect(0x300, header.Version); expect(0, header.EmfPlusFlags); - todo_wine expectf(1440.0, header.DpiX); - todo_wine expectf(1440.0, header.DpiY); + expectf(1440.0, header.DpiX); + expectf(1440.0, header.DpiY); expect(0, header.X); expect(0, header.Y); - todo_wine expect(320, header.Width); - todo_wine expect(320, header.Height); - todo_wine expect(1, U(header).WmfHeader.mtType); + expect(320, header.Width); + expect(320, header.Height); + expect(1, U(header).WmfHeader.mtType); expect(0, header.EmfPlusHeaderSize); expect(0, header.LogicalDpiX); expect(0, header.LogicalDpiY); @@ -1523,17 +1523,17 @@ static void test_createfromwmf(void) expect(Ok, stat); if (stat == Ok) { - todo_wine expect(MetafileTypeWmfPlaceable, header.Type); + expect(MetafileTypeWmfPlaceable, header.Type); todo_wine expect(sizeof(wmfimage)-sizeof(WmfPlaceableFileHeader), header.Size); todo_wine expect(0x300, header.Version); expect(0, header.EmfPlusFlags); - todo_wine expectf(1440.0, header.DpiX); - todo_wine expectf(1440.0, header.DpiY); + expectf(1440.0, header.DpiX); + expectf(1440.0, header.DpiY); expect(0, header.X); expect(0, header.Y); - todo_wine expect(320, header.Width); - todo_wine expect(320, header.Height); - todo_wine expect(1, U(header).WmfHeader.mtType); + expect(320, header.Width); + expect(320, header.Height); + expect(1, U(header).WmfHeader.mtType); expect(0, header.EmfPlusHeaderSize); expect(0, header.LogicalDpiX); expect(0, header.LogicalDpiY);