Dmitry Timoshkov : gdiplus: Implement GdipGetMetafileHeaderFromMetafile.

Alexandre Julliard julliard at winehq.org
Mon Sep 12 10:14:09 CDT 2016


Module: wine
Branch: master
Commit: 259837a19976f7cd6a59fa316b6593eda1dd60dd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=259837a19976f7cd6a59fa316b6593eda1dd60dd

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Fri Sep  9 13:42:44 2016 -0500

gdiplus: Implement GdipGetMetafileHeaderFromMetafile.

Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list