[PATCH] gdiplus: GdipCreateMetafileFromWmfFile will also load EMFs
Andrew Eikum
aeikum at codeweavers.com
Wed Aug 16 14:32:00 CDT 2017
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
dlls/gdiplus/metafile.c | 13 ++++++++++---
dlls/gdiplus/tests/metafile.c | 17 +++++++++++++++++
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index 41355bc3d2..0bd3033a1d 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -2361,13 +2361,20 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete,
GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR *file,
GDIPCONST WmfPlaceableFileHeader * placeable, GpMetafile **metafile)
{
- HMETAFILE hmf = GetMetaFileW(file);
+ HMETAFILE hmf;
+ HENHMETAFILE emf;
TRACE("(%s, %p, %p)\n", debugstr_w(file), placeable, metafile);
- if(!hmf) return InvalidParameter;
+ hmf = GetMetaFileW(file);
+ if(hmf)
+ return GdipCreateMetafileFromWmf(hmf, TRUE, placeable, metafile);
- return GdipCreateMetafileFromWmf(hmf, TRUE, placeable, metafile);
+ emf = GetEnhMetaFileW(file);
+ if(emf)
+ return GdipCreateMetafileFromEmf(emf, TRUE, metafile);
+
+ return GenericError;
}
GpStatus WINGDIPAPI GdipCreateMetafileFromFile(GDIPCONST WCHAR *file,
diff --git a/dlls/gdiplus/tests/metafile.c b/dlls/gdiplus/tests/metafile.c
index 1d36d9e457..9770a8f6ab 100644
--- a/dlls/gdiplus/tests/metafile.c
+++ b/dlls/gdiplus/tests/metafile.c
@@ -2702,6 +2702,7 @@ static void test_fillpath(void)
{
static const WCHAR description[] = {'w','i','n','e','t','e','s','t',0};
static const GpRectF frame = {0.0, 0.0, 100.0, 100.0};
+ static const WCHAR winetestemfW[] = {'w','i','n','e','t','e','s','t','.','e','m','f',0};
GpMetafile *metafile;
GpGraphics *graphics;
@@ -2745,10 +2746,26 @@ static void test_fillpath(void)
expect(Ok, stat);
check_emfplus(hemf, fill_path_records, "fill path");
+
+ /* write to disk */
+ DeleteEnhMetaFile(CopyEnhMetaFileW(hemf, winetestemfW));
+
DeleteEnhMetaFile(hemf);
stat = GdipDisposeImage((GpImage*)metafile);
expect(Ok, stat);
+
+ /* should succeed when given path to an EMF */
+ stat = GdipCreateMetafileFromWmfFile(winetestemfW, NULL, &metafile);
+ expect(Ok, stat);
+
+ stat = GdipDisposeImage((GpImage*)metafile);
+ expect(Ok, stat);
+
+ DeleteFileW(winetestemfW);
+
+ stat = GdipCreateMetafileFromWmfFile(winetestemfW, NULL, &metafile);
+ expect(GenericError, stat);
}
START_TEST(metafile)
--
2.14.1
More information about the wine-patches
mailing list