gdi32: Add support for disk-based metafiles to GetMetaFileBitsEx.
Dmitry Timoshkov
dmitry at baikal.ru
Fri Mar 15 22:20:24 CDT 2013
---
dlls/gdi32/metafile.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/gdi32/metafile.c b/dlls/gdi32/metafile.c
index dbbffee..406728e 100644
--- a/dlls/gdi32/metafile.c
+++ b/dlls/gdi32/metafile.c
@@ -1088,17 +1088,27 @@ UINT WINAPI GetMetaFileBitsEx( HMETAFILE hmf, UINT nSize, LPVOID buf )
{
METAHEADER *mh = GDI_GetObjPtr( hmf, OBJ_METAFILE );
UINT mfSize;
+ BOOL mf_copy = FALSE;
TRACE("(%p,%d,%p)\n", hmf, nSize, buf);
if (!mh) return 0; /* FIXME: error code */
if(mh->mtType == METAFILE_DISK)
- FIXME("Disk-based metafile?\n");
+ {
+ mh = MF_LoadDiskBasedMetaFile( mh );
+ if (!mh)
+ {
+ GDI_ReleaseObj( hmf );
+ return 0;
+ }
+ mf_copy = TRUE;
+ }
mfSize = mh->mtSize * 2;
if (buf)
{
if(mfSize > nSize) mfSize = nSize;
memmove(buf, mh, mfSize);
}
+ if (mf_copy) HeapFree( GetProcessHeap(), 0, mh );
GDI_ReleaseObj( hmf );
TRACE("returning size %d\n", mfSize);
return mfSize;
--
1.8.2
More information about the wine-patches
mailing list