You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Removed upstream patches
This commit is contained in:
@@ -1,100 +0,0 @@
|
||||
From dd305e7b072569a178f3736e8185c28986cb1a4a Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Tue, 26 Apr 2016 12:11:17 +0800
|
||||
Subject: [PATCH] oleaut32/tests: Add some tests for loading and saving EMF
|
||||
using IPicture interface.
|
||||
|
||||
---
|
||||
dlls/oleaut32/tests/olepicture.c | 45 +++++++++++++++++++-------------
|
||||
1 file changed, 27 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c
|
||||
index 58d5577631c..025f7c84873 100644
|
||||
--- a/dlls/oleaut32/tests/olepicture.c
|
||||
+++ b/dlls/oleaut32/tests/olepicture.c
|
||||
@@ -1634,55 +1634,64 @@ static void test_load_save_emf(void)
|
||||
desc.emf.hemf = CloseEnhMetaFile(hdc);
|
||||
ok(desc.emf.hemf != 0, "CloseEnhMetaFile failed\n");
|
||||
hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
|
||||
- ok(hr == S_OK, "OleCreatePictureIndirect error %#lx\n", hr);
|
||||
+ ok(hr == S_OK, "OleCreatePictureIndirect error %#x\n", hr);
|
||||
|
||||
type = -1;
|
||||
hr = IPicture_get_Type(pic, &type);
|
||||
- ok(hr == S_OK, "get_Type error %#lx\n", hr);
|
||||
+ ok(hr == S_OK,"get_Type error %#8x\n", hr);
|
||||
ok(type == PICTYPE_ENHMETAFILE,"expected PICTYPE_ENHMETAFILE, got %d\n", type);
|
||||
|
||||
hr = IPicture_get_Handle(pic, &handle);
|
||||
- ok(hr == S_OK,"get_Handle error %#lx\n", hr);
|
||||
+ ok(hr == S_OK,"get_Handle error %#8x\n", hr);
|
||||
ok(IntToPtr(handle) == desc.emf.hemf, "get_Handle returned wrong handle %#x\n", handle);
|
||||
|
||||
hmem = GlobalAlloc(GMEM_MOVEABLE, 0);
|
||||
hr = CreateStreamOnHGlobal(hmem, FALSE, &dst_stream);
|
||||
- ok(hr == S_OK, "createstreamonhglobal error %#lx\n", hr);
|
||||
+ ok(hr == S_OK, "createstreamonhglobal error %#x\n", hr);
|
||||
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, TRUE, &size);
|
||||
- ok(hr == S_OK, "IPicture_SaveasFile error %#lx\n", hr);
|
||||
- ok(size == 128, "expected 128, got %ld\n", size);
|
||||
+ ok(hr == S_OK, "IPicture_SaveasFile error %#x\n", hr);
|
||||
+todo_wine
|
||||
+ ok(size == 128, "expected 128, got %d\n", size);
|
||||
emh = GlobalLock(hmem);
|
||||
- ok(emh->iType == EMR_HEADER, "wrong iType %04lx\n", emh->iType);
|
||||
- ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08lx\n", emh->dSignature);
|
||||
+if (size)
|
||||
+{
|
||||
+ ok(emh->iType == EMR_HEADER, "wrong iType %04x\n", emh->iType);
|
||||
+ ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08x\n", emh->dSignature);
|
||||
+}
|
||||
GlobalUnlock(hmem);
|
||||
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
|
||||
- ok(hr == E_FAIL, "expected E_FAIL, got %#lx\n", hr);
|
||||
- ok(size == -1, "expected -1, got %ld\n", size);
|
||||
+todo_wine
|
||||
+ ok(hr == E_FAIL, "expected E_FAIL, got %#x\n", hr);
|
||||
+todo_wine
|
||||
+ ok(size == -1, "expected -1, got %d\n", size);
|
||||
|
||||
offset.QuadPart = 0;
|
||||
hr = IStream_Seek(dst_stream, offset, SEEK_SET, NULL);
|
||||
- ok(hr == S_OK, "IStream_Seek %#lx\n", hr);
|
||||
+ ok(hr == S_OK, "IStream_Seek %#x\n", hr);
|
||||
|
||||
hr = IPicture_QueryInterface(pic, &IID_IPersistStream, (void **)&src_stream);
|
||||
- ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
|
||||
+ ok(hr == S_OK, "QueryInterface error %#x\n", hr);
|
||||
|
||||
hr = IPersistStream_Save(src_stream, dst_stream, TRUE);
|
||||
- ok(hr == S_OK, "Save error %#lx\n", hr);
|
||||
+todo_wine
|
||||
+ ok(hr == S_OK, "Save error %#x\n", hr);
|
||||
|
||||
IPersistStream_Release(src_stream);
|
||||
IStream_Release(dst_stream);
|
||||
|
||||
mem = GlobalLock(hmem);
|
||||
- ok(!memcmp(mem, "lt\0\0", 4), "got wrong stream header %04lx\n", mem[0]);
|
||||
- ok(mem[1] == 128, "expected 128, got %lu\n", mem[1]);
|
||||
+if (hr == S_OK)
|
||||
+{
|
||||
+ ok(!memcmp(mem, "lt\0\0", 4), "got wrong stream header %04x\n", mem[0]);
|
||||
+ ok(mem[1] == 128, "expected 128, got %u\n", mem[1]);
|
||||
emh = (ENHMETAHEADER *)(mem + 2);
|
||||
- ok(emh->iType == EMR_HEADER, "wrong iType %04lx\n", emh->iType);
|
||||
- ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08lx\n", emh->dSignature);
|
||||
-
|
||||
+ ok(emh->iType == EMR_HEADER, "wrong iType %04x\n", emh->iType);
|
||||
+ ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08x\n", emh->dSignature);
|
||||
+}
|
||||
GlobalUnlock(hmem);
|
||||
GlobalFree(hmem);
|
||||
|
||||
--
|
||||
2.47.2
|
||||
|
@@ -1,130 +0,0 @@
|
||||
From 92c5616bf7048e9d69010a473fa5fd65db43a6fc Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Tue, 26 Apr 2016 13:15:41 +0800
|
||||
Subject: [PATCH] oleaut32: Add support for loading and saving EMF to IPicture
|
||||
interface.
|
||||
|
||||
For bug #40523.
|
||||
---
|
||||
dlls/oleaut32/olepicture.c | 53 +++++++++++++++++++++++++++++---
|
||||
dlls/oleaut32/tests/olepicture.c | 5 +--
|
||||
2 files changed, 49 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
|
||||
index 78fd3fc5681..91327f78eef 100644
|
||||
--- a/dlls/oleaut32/olepicture.c
|
||||
+++ b/dlls/oleaut32/olepicture.c
|
||||
@@ -256,6 +256,18 @@ static void OLEPictureImpl_SetIcon(OLEPictureImpl * This)
|
||||
}
|
||||
}
|
||||
|
||||
+static void OLEPictureImpl_SetEMF(OLEPictureImpl *This)
|
||||
+{
|
||||
+ ENHMETAHEADER emh;
|
||||
+
|
||||
+ GetEnhMetaFileHeader(This->desc.emf.hemf, sizeof(emh), &emh);
|
||||
+
|
||||
+ This->origWidth = 0;
|
||||
+ This->origHeight = 0;
|
||||
+ This->himetricWidth = emh.rclFrame.right - emh.rclFrame.left;
|
||||
+ This->himetricHeight = emh.rclFrame.bottom - emh.rclFrame.top;
|
||||
+}
|
||||
+
|
||||
/************************************************************************
|
||||
* OLEPictureImpl_Construct
|
||||
*
|
||||
@@ -339,8 +351,7 @@ static HRESULT OLEPictureImpl_Construct(LPPICTDESC pictDesc, BOOL fOwn, OLEPictu
|
||||
break;
|
||||
|
||||
case PICTYPE_ENHMETAFILE:
|
||||
- FIXME("EMF is not supported\n");
|
||||
- newObject->himetricWidth = newObject->himetricHeight = 0;
|
||||
+ OLEPictureImpl_SetEMF(newObject);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1760,6 +1771,22 @@ static BOOL serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength)
|
||||
return success;
|
||||
}
|
||||
|
||||
+static HRESULT serializeEMF(HENHMETAFILE hemf, void **buf, unsigned *size)
|
||||
+{
|
||||
+ if (!(*size = GetEnhMetaFileBits(hemf, 0, NULL)))
|
||||
+ return E_FAIL;
|
||||
+
|
||||
+ if (!(*buf = HeapAlloc(GetProcessHeap(), 0, *size)))
|
||||
+ return E_OUTOFMEMORY;
|
||||
+
|
||||
+ if (!GetEnhMetaFileBits(hemf, *size, *buf))
|
||||
+ {
|
||||
+ HeapFree(GetProcessHeap(), 0, *buf);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI OLEPictureImpl_Save(
|
||||
IPersistStream* iface,IStream*pStm,BOOL fClearDirty)
|
||||
{
|
||||
@@ -1831,12 +1858,28 @@ static HRESULT WINAPI OLEPictureImpl_Save(
|
||||
IStream_Write(pStm, This->data, This->datalen, &dummy);
|
||||
hResult = S_OK;
|
||||
break;
|
||||
+
|
||||
+ case PICTYPE_ENHMETAFILE:
|
||||
+ if (This->bIsDirty || !This->data)
|
||||
+ {
|
||||
+ hResult = serializeEMF(This->desc.emf.hemf, &pIconData, &iDataSize);
|
||||
+ if (hResult != S_OK)
|
||||
+ break;
|
||||
+
|
||||
+ HeapFree(GetProcessHeap(), 0, This->data);
|
||||
+ This->data = pIconData;
|
||||
+ This->datalen = iDataSize;
|
||||
+ }
|
||||
+ header[0] = 0x0000746c;
|
||||
+ header[1] = This->datalen;
|
||||
+ IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
||||
+ IStream_Write(pStm, This->data, This->datalen, &dummy);
|
||||
+ hResult = S_OK;
|
||||
+ break;
|
||||
+
|
||||
case PICTYPE_METAFILE:
|
||||
FIXME("(%p,%p,%d), PICTYPE_METAFILE not implemented!\n",This,pStm,fClearDirty);
|
||||
break;
|
||||
- case PICTYPE_ENHMETAFILE:
|
||||
- FIXME("(%p,%p,%d),PICTYPE_ENHMETAFILE not implemented!\n",This,pStm,fClearDirty);
|
||||
- break;
|
||||
default:
|
||||
FIXME("(%p,%p,%d), [unknown type] not implemented!\n",This,pStm,fClearDirty);
|
||||
break;
|
||||
diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c
|
||||
index af2c9255e3c..f19ef01c773 100644
|
||||
--- a/dlls/oleaut32/tests/olepicture.c
|
||||
+++ b/dlls/oleaut32/tests/olepicture.c
|
||||
@@ -1546,21 +1546,18 @@ todo_wine
|
||||
ok(hr == S_OK, "QueryInterface error %#x\n", hr);
|
||||
|
||||
hr = IPersistStream_Save(src_stream, dst_stream, TRUE);
|
||||
-todo_wine
|
||||
ok(hr == S_OK, "Save error %#x\n", hr);
|
||||
|
||||
IPersistStream_Release(src_stream);
|
||||
IStream_Release(dst_stream);
|
||||
|
||||
mem = GlobalLock(hmem);
|
||||
-if (hr == S_OK)
|
||||
-{
|
||||
ok(!memcmp(mem, "lt\0\0", 4), "got wrong stream header %04x\n", mem[0]);
|
||||
ok(mem[1] == 128, "expected 128, got %u\n", mem[1]);
|
||||
emh = (ENHMETAHEADER *)(mem + 2);
|
||||
ok(emh->iType == EMR_HEADER, "wrong iType %04x\n", emh->iType);
|
||||
ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08x\n", emh->dSignature);
|
||||
-}
|
||||
+
|
||||
GlobalUnlock(hmem);
|
||||
GlobalFree(hmem);
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
@@ -1,2 +0,0 @@
|
||||
Fixes: [40523] Implement support for loading and saving EMF to IPicture interface
|
||||
Disabled: True
|
@@ -1,179 +0,0 @@
|
||||
From 7b40ae4316f61b52e0ad740bb1ba0a32e6545a40 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Tue, 24 Nov 2015 17:22:02 +0800
|
||||
Subject: [PATCH] oleaut32: Implement a better stub for IPicture::SaveAsFile.
|
||||
|
||||
Based on OLEPictureImpl_Save implementation.
|
||||
|
||||
For bug 8532.
|
||||
---
|
||||
dlls/oleaut32/olepicture.c | 92 +++++++++++++++++++++++++++-----
|
||||
dlls/oleaut32/tests/olepicture.c | 9 ----
|
||||
2 files changed, 79 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
|
||||
index 6e0db65a101..48d7ae13846 100644
|
||||
--- a/dlls/oleaut32/olepicture.c
|
||||
+++ b/dlls/oleaut32/olepicture.c
|
||||
@@ -819,19 +819,6 @@ static HRESULT WINAPI OLEPictureImpl_PictureChanged(IPicture *iface)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
-/************************************************************************
|
||||
- * OLEPictureImpl_SaveAsFile
|
||||
- */
|
||||
-static HRESULT WINAPI OLEPictureImpl_SaveAsFile(IPicture *iface,
|
||||
- IStream *pstream,
|
||||
- BOOL SaveMemCopy,
|
||||
- LONG *pcbSize)
|
||||
-{
|
||||
- OLEPictureImpl *This = impl_from_IPicture(iface);
|
||||
- FIXME("(%p)->(%p, %d, %p), hacked stub.\n", This, pstream, SaveMemCopy, pcbSize);
|
||||
- return IStream_Write(pstream,This->data,This->datalen,(ULONG*)pcbSize);
|
||||
-}
|
||||
-
|
||||
/************************************************************************
|
||||
* OLEPictureImpl_get_Attributes
|
||||
*/
|
||||
@@ -1891,6 +1878,85 @@ static HRESULT WINAPI OLEPictureImpl_GetSizeMax(IPersistStream *iface, ULARGE_IN
|
||||
return hr;
|
||||
}
|
||||
|
||||
+/************************************************************************
|
||||
+ * OLEPictureImpl_SaveAsFile
|
||||
+ */
|
||||
+static HRESULT WINAPI OLEPictureImpl_SaveAsFile(IPicture *iface,
|
||||
+ IStream *stream, BOOL mem_copy, LONG *size)
|
||||
+{
|
||||
+ OLEPictureImpl *This = impl_from_IPicture(iface);
|
||||
+ void *data;
|
||||
+ unsigned data_size;
|
||||
+ ULONG written;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ FIXME("(%p)->(%p,%d,%p): semi-stub\n", This, stream, mem_copy, size);
|
||||
+
|
||||
+ switch (This->desc.picType)
|
||||
+ {
|
||||
+ case PICTYPE_NONE:
|
||||
+ return S_OK;
|
||||
+
|
||||
+ case PICTYPE_ICON:
|
||||
+ if (!mem_copy) return E_FAIL;
|
||||
+
|
||||
+ if (This->bIsDirty || !This->data)
|
||||
+ {
|
||||
+ if (!serializeIcon(This->desc.icon.hicon, &data, &data_size))
|
||||
+ return E_FAIL;
|
||||
+ HeapFree(GetProcessHeap(), 0, This->data);
|
||||
+ This->data = data;
|
||||
+ This->datalen = data_size;
|
||||
+ }
|
||||
+ hr = IStream_Write(stream, This->data, This->datalen, &written);
|
||||
+ if (hr == S_OK && size) *size = written;
|
||||
+ return hr;
|
||||
+
|
||||
+ case PICTYPE_BITMAP:
|
||||
+ if (!mem_copy) return E_FAIL;
|
||||
+
|
||||
+ if (This->bIsDirty || !This->data)
|
||||
+ {
|
||||
+ switch (This->keepOrigFormat ? This->loadtime_format : BITMAP_FORMAT_BMP)
|
||||
+ {
|
||||
+ case BITMAP_FORMAT_BMP:
|
||||
+ if (!serializeBMP(This->desc.bmp.hbitmap, &data, &data_size))
|
||||
+ return E_FAIL;
|
||||
+ break;
|
||||
+ case BITMAP_FORMAT_JPEG:
|
||||
+ FIXME("BITMAP_FORMAT_JPEG is not implemented\n");
|
||||
+ return E_NOTIMPL;
|
||||
+ case BITMAP_FORMAT_GIF:
|
||||
+ FIXME("BITMAP_FORMAT_GIF is not implemented\n");
|
||||
+ return E_NOTIMPL;
|
||||
+ case BITMAP_FORMAT_PNG:
|
||||
+ FIXME("BITMAP_FORMAT_PNG is not implemented\n");
|
||||
+ return E_NOTIMPL;
|
||||
+ default:
|
||||
+ FIXME("PICTYPE_BITMAP/%#x is not implemented\n", This->loadtime_format);
|
||||
+ return E_NOTIMPL;
|
||||
+ }
|
||||
+
|
||||
+ HeapFree(GetProcessHeap(), 0, This->data);
|
||||
+ This->data = data;
|
||||
+ This->datalen = data_size;
|
||||
+ }
|
||||
+ hr = IStream_Write(stream, This->data, This->datalen, &written);
|
||||
+ if (hr == S_OK && size) *size = written;
|
||||
+ return hr;
|
||||
+
|
||||
+ case PICTYPE_METAFILE:
|
||||
+ FIXME("PICTYPE_METAFILE is not implemented\n");
|
||||
+ return E_NOTIMPL;
|
||||
+ case PICTYPE_ENHMETAFILE:
|
||||
+ FIXME("ENHMETAFILE is not implemented\n");
|
||||
+ return E_NOTIMPL;
|
||||
+ default:
|
||||
+ FIXME("%#x is not implemented\n", This->desc.picType);
|
||||
+ break;
|
||||
+ }
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
|
||||
/************************************************************************
|
||||
* IDispatch
|
||||
diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c
|
||||
index a269491fd3f..97c80027b99 100644
|
||||
--- a/dlls/oleaut32/tests/olepicture.c
|
||||
+++ b/dlls/oleaut32/tests/olepicture.c
|
||||
@@ -1231,18 +1231,14 @@ static void test_load_save_bmp(void)
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, TRUE, &size);
|
||||
ok(hr == S_OK, "IPicture_SaveasFile error %#lx\n", hr);
|
||||
- todo_wine
|
||||
ok(size == 66, "expected 66, got %ld\n", size);
|
||||
mem = GlobalLock(hmem);
|
||||
- todo_wine
|
||||
ok(!memcmp(&mem[0], "BM", 2), "got wrong bmp header %04lx\n", mem[0]);
|
||||
GlobalUnlock(hmem);
|
||||
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
|
||||
- todo_wine
|
||||
ok(hr == E_FAIL, "expected E_FAIL, got %#lx\n", hr);
|
||||
- todo_wine
|
||||
ok(size == -1, "expected -1, got %ld\n", size);
|
||||
|
||||
offset.QuadPart = 0;
|
||||
@@ -1317,15 +1313,12 @@ static void test_load_save_icon(void)
|
||||
todo_wine
|
||||
ok(size == 766, "expected 766, got %ld\n", size);
|
||||
mem = GlobalLock(hmem);
|
||||
- todo_wine
|
||||
ok(mem[0] == 0x00010000, "got wrong icon header %04lx\n", mem[0]);
|
||||
GlobalUnlock(hmem);
|
||||
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
|
||||
- todo_wine
|
||||
ok(hr == E_FAIL, "expected E_FAIL, got %#lx\n", hr);
|
||||
- todo_wine
|
||||
ok(size == -1, "expected -1, got %ld\n", size);
|
||||
|
||||
offset.QuadPart = 0;
|
||||
@@ -1399,13 +1392,11 @@ static void test_load_save_empty_picture(void)
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, TRUE, &size);
|
||||
ok(hr == S_OK, "IPicture_SaveasFile error %#lx\n", hr);
|
||||
- todo_wine
|
||||
ok(size == -1, "expected -1, got %ld\n", size);
|
||||
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
|
||||
ok(hr == S_OK, "IPicture_SaveasFile error %#lx\n", hr);
|
||||
- todo_wine
|
||||
ok(size == -1, "expected -1, got %ld\n", size);
|
||||
|
||||
hr = IPicture_QueryInterface(pic, &IID_IPersistStream, (void **)&src_stream);
|
||||
--
|
||||
2.43.0
|
||||
|
@@ -1,64 +0,0 @@
|
||||
From 517bb10261069abd3ffd642dddd6338b7cacd094 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 15 May 2016 19:08:44 +0200
|
||||
Subject: oleaut32: Implement SaveAsFile for PICTYPE_ENHMETAFILE.
|
||||
|
||||
---
|
||||
dlls/oleaut32/olepicture.c | 17 +++++++++++++++--
|
||||
dlls/oleaut32/tests/olepicture.c | 3 ---
|
||||
2 files changed, 15 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/oleaut32/olepicture.c b/dlls/oleaut32/olepicture.c
|
||||
index 7d13942..db90c4c 100644
|
||||
--- a/dlls/oleaut32/olepicture.c
|
||||
+++ b/dlls/oleaut32/olepicture.c
|
||||
@@ -1961,9 +1961,22 @@ static HRESULT WINAPI OLEPictureImpl_SaveAsFile(IPicture *iface,
|
||||
case PICTYPE_METAFILE:
|
||||
FIXME("PICTYPE_METAFILE is not implemented\n");
|
||||
return E_NOTIMPL;
|
||||
+
|
||||
case PICTYPE_ENHMETAFILE:
|
||||
- FIXME("ENHMETAFILE is not implemented\n");
|
||||
- return E_NOTIMPL;
|
||||
+ if (!mem_copy) return E_FAIL;
|
||||
+
|
||||
+ if (This->bIsDirty || !This->data)
|
||||
+ {
|
||||
+ if (!serializeEMF(This->desc.emf.hemf, &data, &data_size))
|
||||
+ return E_FAIL;
|
||||
+ HeapFree(GetProcessHeap(), 0, This->data);
|
||||
+ This->data = data;
|
||||
+ This->datalen = data_size;
|
||||
+ }
|
||||
+ hr = IStream_Write(stream, This->data, This->datalen, &written);
|
||||
+ if (hr == S_OK && size) *size = written;
|
||||
+ return hr;
|
||||
+
|
||||
default:
|
||||
FIXME("%#x is not implemented\n", This->desc.picType);
|
||||
break;
|
||||
diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c
|
||||
index 29d787e..7b1178e 100644
|
||||
--- a/dlls/oleaut32/tests/olepicture.c
|
||||
+++ b/dlls/oleaut32/tests/olepicture.c
|
||||
@@ -1338,7 +1338,6 @@ static void test_load_save_emf(void)
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, TRUE, &size);
|
||||
ok(hr == S_OK, "IPicture_SaveasFile error %#x\n", hr);
|
||||
-todo_wine
|
||||
ok(size == 128, "expected 128, got %d\n", size);
|
||||
emh = GlobalLock(hmem);
|
||||
if (size)
|
||||
@@ -1350,9 +1349,7 @@ if (size)
|
||||
|
||||
size = -1;
|
||||
hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
|
||||
-todo_wine
|
||||
ok(hr == E_FAIL, "expected E_FAIL, got %#x\n", hr);
|
||||
-todo_wine
|
||||
ok(size == -1, "expected -1, got %d\n", size);
|
||||
|
||||
offset.QuadPart = 0;
|
||||
--
|
||||
2.8.0
|
||||
|
@@ -1,3 +0,0 @@
|
||||
Fixes: [8532] Implement a better stub for IPicture::SaveAsFile
|
||||
Depends: oleaut32-Load_Save_EMF
|
||||
Disabled: True
|
Reference in New Issue
Block a user