Ken Thomases : winemac: Synthesize CF_ENHMETAFILE from CF_METAFILEPICT.

Alexandre Julliard julliard at winehq.org
Fri Nov 22 10:23:06 CST 2013


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

Author: Ken Thomases <ken at codeweavers.com>
Date:   Fri Nov 22 04:31:33 2013 -0600

winemac: Synthesize CF_ENHMETAFILE from CF_METAFILEPICT.

---

 dlls/winemac.drv/clipboard.c |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/dlls/winemac.drv/clipboard.c b/dlls/winemac.drv/clipboard.c
index 71b9975..24a75b9 100644
--- a/dlls/winemac.drv/clipboard.c
+++ b/dlls/winemac.drv/clipboard.c
@@ -74,6 +74,7 @@ static HANDLE import_bmp_to_bitmap(CFDataRef data);
 static HANDLE import_bmp_to_dib(CFDataRef data);
 static HANDLE import_enhmetafile(CFDataRef data);
 static HANDLE import_metafilepict(CFDataRef data);
+static HANDLE import_metafilepict_to_enhmetafile(CFDataRef data);
 static HANDLE import_nsfilenames_to_hdrop(CFDataRef data);
 static HANDLE import_oemtext_to_text(CFDataRef data);
 static HANDLE import_oemtext_to_unicodetext(CFDataRef data);
@@ -200,7 +201,9 @@ static const struct
     { CF_HDROP,             CFSTR("NSFilenamesPboardType"),                 import_nsfilenames_to_hdrop,    export_hdrop_to_filenames,  TRUE },
 
     { CF_ENHMETAFILE,       CFSTR("org.winehq.builtin.enhmetafile"),        import_enhmetafile,             export_enhmetafile,         FALSE },
-    { CF_METAFILEPICT,      CFSTR("org.winehq.builtin.metafilepict"),       import_metafilepict,            export_metafilepict,        FALSE },
+
+    { CF_METAFILEPICT,      CFSTR("org.winehq.builtin.metafilepict"),       import_metafilepict,                export_metafilepict,    FALSE },
+    { CF_ENHMETAFILE,       CFSTR("org.winehq.builtin.metafilepict"),       import_metafilepict_to_enhmetafile, NULL,                   TRUE },
 };
 
 static const WCHAR wszRichTextFormat[] = {'R','i','c','h',' ','T','e','x','t',' ','F','o','r','m','a','t',0};
@@ -724,6 +727,29 @@ static HANDLE import_metafilepict(CFDataRef data)
 
 
 /**************************************************************************
+ *              import_metafilepict_to_enhmetafile
+ *
+ *  Import metafile picture data, converting it to CF_ENHMETAFILE.
+ */
+static HANDLE import_metafilepict_to_enhmetafile(CFDataRef data)
+{
+    HANDLE ret = 0;
+    CFIndex len = CFDataGetLength(data);
+    const METAFILEPICT *mfp;
+
+    TRACE("data %s\n", debugstr_cf(data));
+
+    if (len >= sizeof(*mfp))
+    {
+        mfp = (const METAFILEPICT*)CFDataGetBytePtr(data);
+        ret = SetWinMetaFileBits(len - sizeof(*mfp), (const BYTE*)(mfp + 1), NULL, mfp);
+    }
+
+    return ret;
+}
+
+
+/**************************************************************************
  *              import_nsfilenames_to_hdrop
  *
  *  Import NSFilenamesPboardType data, converting the property-list-




More information about the wine-cvs mailing list