Rebase against c1bc25dd38dab0504bd9eb45641a830ff08488b3.

[gdiplus-GdipCreateMetafileFromStream]
Removed patches to implement GdipCreateMetafileFromStream and
GdipGetMetafileHeaderFromMetafile (accepted upstream).
This commit is contained in:
Sebastian Lackner
2016-09-12 23:38:48 +02:00
parent 2ad4a084dd
commit 3bb2024464
8 changed files with 20 additions and 215 deletions

View File

@@ -1,40 +0,0 @@
From df5c81e67b4f660770f98db3dab2d8cb62329975 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 19 Mar 2016 15:47:10 +0800
Subject: gdiplus: Implement GdipCreateMetafileFromStream.
---
dlls/gdiplus/metafile.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index 922c101..ea9badc 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -1139,8 +1139,21 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromFile(GDIPCONST WCHAR *file,
GpStatus WINGDIPAPI GdipCreateMetafileFromStream(IStream *stream,
GpMetafile **metafile)
{
- FIXME("(%p, %p): stub\n", stream, metafile);
- return NotImplemented;
+ GpStatus stat;
+
+ TRACE("%p %p\n", stream, metafile);
+
+ stat = GdipLoadImageFromStream(stream, (GpImage **)metafile);
+ if (stat != Ok) return stat;
+
+ if ((*metafile)->image.type != ImageTypeMetafile)
+ {
+ GdipDisposeImage(&(*metafile)->image);
+ *metafile = NULL;
+ return GenericError;
+ }
+
+ return Ok;
}
GpStatus WINGDIPAPI GdipSetMetafileDownLevelRasterizationLimit(GpMetafile *metafile,
--
2.7.1

View File

@@ -1,102 +0,0 @@
From 38a7a77a067d4610666ca453f4ca68a69117e80e Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 10 May 2016 12:44:49 +0800
Subject: gdiplus: Implement GdipGetMetafileHeaderFromMetafile.
For bug #27415.
These patches depend on
"gdiplus: Reimplement metafile loading using gdi32 instead of IPicture. (v2)"
---
dlls/gdiplus/metafile.c | 15 +++++++++++----
dlls/gdiplus/tests/image.c | 24 ++++++++++++------------
2 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index 7af6c8c..30b2122 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -957,17 +957,24 @@ 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)
+ return InvalidParameter;
- memset(header, 0, sizeof(MetafileHeader));
+ status = GdipGetMetafileHeaderFromEmf(metafile->hemf, header);
+ if (status != Ok) return status;
+
+ header->Type = metafile->metafile_type;
+ header->DpiX = metafile->image.xres;
+ header->DpiY = metafile->image.yres;
+ header->Width = metafile->bounds.Width;
+ header->Height = metafile->bounds.Height;
return Ok;
}
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index e6de9db..a28ddb4 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);
--
2.8.0

View File

@@ -1,41 +0,0 @@
From 0bfed12f7c720bc7a929bd8c8b249b47b949aeb3 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Wed, 22 Jun 2016 16:19:59 +0800
Subject: gdiplus: Implement GdipCreateMetafileFromFile.
---
dlls/gdiplus/metafile.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/metafile.c b/dlls/gdiplus/metafile.c
index 6b9ee73..a3933b0 100644
--- a/dlls/gdiplus/metafile.c
+++ b/dlls/gdiplus/metafile.c
@@ -1227,8 +1227,22 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmfFile(GDIPCONST WCHAR *file,
GpStatus WINGDIPAPI GdipCreateMetafileFromFile(GDIPCONST WCHAR *file,
GpMetafile **metafile)
{
- FIXME("(%p, %p): stub\n", file, metafile);
- return NotImplemented;
+ GpStatus status;
+ IStream *stream;
+
+ TRACE("(%p, %p)\n", file, metafile);
+
+ if (!file || !metafile) return InvalidParameter;
+
+ *metafile = NULL;
+
+ status = GdipCreateStreamOnFile(file, GENERIC_READ, &stream);
+ if (status == Ok)
+ {
+ status = GdipCreateMetafileFromStream(stream, metafile);
+ IStream_Release(stream);
+ }
+ return status;
}
GpStatus WINGDIPAPI GdipCreateMetafileFromStream(IStream *stream,
--
2.8.0

View File

@@ -1,2 +0,0 @@
Fixes: [40325] Implement GdipCreateMetafileFromStream
Fixes: [27415] Implement GdipGetMetafileHeaderFromMetafile