Ken Thomases : winemac: Add support for the CF_ENHMETAFILE clipboard format .

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


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

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

winemac: Add support for the CF_ENHMETAFILE clipboard format.

---

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

diff --git a/dlls/winemac.drv/clipboard.c b/dlls/winemac.drv/clipboard.c
index 9f4a81f..71b9975 100644
--- a/dlls/winemac.drv/clipboard.c
+++ b/dlls/winemac.drv/clipboard.c
@@ -72,6 +72,7 @@ typedef struct
 static HANDLE import_clipboard_data(CFDataRef data);
 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_nsfilenames_to_hdrop(CFDataRef data);
 static HANDLE import_oemtext_to_text(CFDataRef data);
@@ -90,6 +91,7 @@ static HANDLE import_utf16_to_unicodetext(CFDataRef data);
 static CFDataRef export_clipboard_data(HANDLE data);
 static CFDataRef export_bitmap_to_bmp(HANDLE data);
 static CFDataRef export_dib_to_bmp(HANDLE data);
+static CFDataRef export_enhmetafile(HANDLE data);
 static CFDataRef export_hdrop_to_filenames(HANDLE data);
 static CFDataRef export_metafilepict(HANDLE data);
 static CFDataRef export_oemtext_to_utf8(HANDLE data);
@@ -197,6 +199,7 @@ static const struct
     { CF_HDROP,             CFSTR("org.winehq.builtin.hdrop"),              import_clipboard_data,          export_clipboard_data,      FALSE },
     { 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 },
 };
 
@@ -675,6 +678,25 @@ static HANDLE import_bmp_to_dib(CFDataRef data)
 
 
 /**************************************************************************
+ *              import_enhmetafile
+ *
+ *  Import enhanced metafile data, converting it to CF_ENHMETAFILE.
+ */
+static HANDLE import_enhmetafile(CFDataRef data)
+{
+    HANDLE ret = 0;
+    CFIndex len = CFDataGetLength(data);
+
+    TRACE("data %s\n", debugstr_cf(data));
+
+    if (len)
+        ret = SetEnhMetaFileBits(len, (const BYTE*)CFDataGetBytePtr(data));
+
+    return ret;
+}
+
+
+/**************************************************************************
  *              import_metafilepict
  *
  *  Import metafile picture data, converting it to CF_METAFILEPICT.
@@ -1169,6 +1191,30 @@ static CFDataRef export_dib_to_bmp(HANDLE data)
 
 
 /**************************************************************************
+ *              export_enhmetafile
+ *
+ *  Export an enhanced metafile to data.
+ */
+static CFDataRef export_enhmetafile(HANDLE data)
+{
+    CFMutableDataRef ret = NULL;
+    unsigned int size = GetEnhMetaFileBits(data, 0, NULL);
+
+    TRACE("data %p\n", data);
+
+    ret = CFDataCreateMutable(NULL, size);
+    if (ret)
+    {
+        CFDataSetLength(ret, size);
+        GetEnhMetaFileBits(data, size, (BYTE*)CFDataGetMutableBytePtr(ret));
+    }
+
+    TRACE(" -> %s\n", debugstr_cf(ret));
+    return ret;
+}
+
+
+/**************************************************************************
  *              export_hdrop_to_filenames
  *
  *  Export CF_HDROP to NSFilenamesPboardType data, which is a CFArray of




More information about the wine-cvs mailing list