public static void Clear() { IntPtr clipboard_handle; clipboard_handle = XplatUI.ClipboardOpen(false); XplatUI.ClipboardStore(clipboard_handle, null, 0, null, false); }
internal static void SetDataObjectImpl(object data, bool copy) { var converter = new XplatUI.ObjectToClipboard(ConvertToClipboardData); var clipboard_handle = XplatUI.ClipboardOpen(false); XplatUI.ClipboardStore(clipboard_handle, null, 0, null, copy); // Empty clipboard if (data is IDataObject idata) { XplatUI.ClipboardStore(clipboard_handle, idata, DataFormats.GetFormat(IDataObjectFormat).Id, converter, copy); } else if (data is string text) { var tdata = new DataObject(DataFormats.UnicodeText, text); XplatUI.ClipboardStore(clipboard_handle, tdata, DataFormats.GetFormat(IDataObjectFormat).Id, converter, copy); } else { var format = DataFormats.Format.Find(data.GetType().FullName); var id = (format != null) && (format.Name != DataFormats.StringFormat) ? format.Id : -1; XplatUI.ClipboardStore(clipboard_handle, data, id, converter, copy); } XplatUI.ClipboardClose(clipboard_handle); }
internal static bool ClipboardContainsFormat(params string[] formats) { var clipboard_handle = XplatUI.ClipboardOpen(false); var native_formats = XplatUI.ClipboardAvailableFormats(clipboard_handle); if (native_formats == null) { return(false); } foreach (int i in native_formats) { // We might get a format we don't understand or know var item_format = DataFormats.GetFormat(i); if (item_format != null) { if (((IList)formats).Contains(item_format.Name)) { return(true); } } } return(false); }
// Assumes we are locked on the lock_object when it is called private static void Init() { if (initialized) { return; } IntPtr cliphandle = XplatUI.ClipboardOpen(false); new Format(Text, XplatUI.ClipboardGetID(cliphandle, Text)); new Format(Bitmap, XplatUI.ClipboardGetID(cliphandle, Bitmap)); new Format(MetafilePict, XplatUI.ClipboardGetID(cliphandle, MetafilePict)); new Format(SymbolicLink, XplatUI.ClipboardGetID(cliphandle, SymbolicLink)); new Format(Dif, XplatUI.ClipboardGetID(cliphandle, Dif)); new Format(Tiff, XplatUI.ClipboardGetID(cliphandle, Tiff)); new Format(OemText, XplatUI.ClipboardGetID(cliphandle, OemText)); new Format(Dib, XplatUI.ClipboardGetID(cliphandle, Dib)); new Format(Palette, XplatUI.ClipboardGetID(cliphandle, Palette)); new Format(PenData, XplatUI.ClipboardGetID(cliphandle, PenData)); new Format(Riff, XplatUI.ClipboardGetID(cliphandle, Riff)); new Format(WaveAudio, XplatUI.ClipboardGetID(cliphandle, WaveAudio)); new Format(UnicodeText, XplatUI.ClipboardGetID(cliphandle, UnicodeText)); new Format(EnhancedMetafile, XplatUI.ClipboardGetID(cliphandle, EnhancedMetafile)); new Format(FileDrop, XplatUI.ClipboardGetID(cliphandle, FileDrop)); new Format(Locale, XplatUI.ClipboardGetID(cliphandle, Locale)); new Format(CommaSeparatedValue, XplatUI.ClipboardGetID(cliphandle, CommaSeparatedValue)); new Format(Html, XplatUI.ClipboardGetID(cliphandle, Html)); new Format(Rtf, XplatUI.ClipboardGetID(cliphandle, Rtf)); new Format(Serializable, XplatUI.ClipboardGetID(cliphandle, Serializable)); new Format(StringFormat, XplatUI.ClipboardGetID(cliphandle, StringFormat)); XplatUI.ClipboardClose(cliphandle); initialized = true; }
internal static void SetDataObjectImpl(object data, bool copy) { IntPtr clipboard_handle; XplatUI.ObjectToClipboard converter; int native_format; DataFormats.Format item_format; converter = new XplatUI.ObjectToClipboard(ConvertToClipboardData); clipboard_handle = XplatUI.ClipboardOpen(false); XplatUI.ClipboardStore(clipboard_handle, null, 0, null); // Empty clipboard native_format = -1; if (data is IDataObject) { string[] formats; IDataObject data_object = data as IDataObject; formats = data_object.GetFormats(); for (int i = 0; i < formats.Length; i++) { item_format = DataFormats.GetFormat(formats[i]); if ((item_format != null) && (item_format.Name != DataFormats.StringFormat)) { native_format = item_format.Id; } object obj = data_object.GetData(formats [i]); // this is used only by custom formats if (IsDataSerializable(obj)) { item_format.is_serializable = true; } XplatUI.ClipboardStore(clipboard_handle, obj, native_format, converter); } } else { item_format = DataFormats.Format.Find(data.GetType().FullName); if ((item_format != null) && (item_format.Name != DataFormats.StringFormat)) { native_format = item_format.Id; } XplatUI.ClipboardStore(clipboard_handle, data, native_format, converter); } XplatUI.ClipboardClose(clipboard_handle); }
internal static Format Add(string name) { Format f; f = Find(name); if (f == null) { IntPtr cliphandle; cliphandle = XplatUI.ClipboardOpen(false); f = new Format(name, XplatUI.ClipboardGetID(cliphandle, name)); XplatUI.ClipboardClose(cliphandle); } return(f); }
internal static IDataObject GetDataObject(bool primary_selection) { DataObject clipboard; IntPtr clipboard_handle; int[] native_formats; DataFormats.Format item_format; object managed_clipboard_item; XplatUI.ClipboardToObject converter; converter = new XplatUI.ClipboardToObject(ConvertFromClipboardData); clipboard_handle = XplatUI.ClipboardOpen(primary_selection); native_formats = XplatUI.ClipboardAvailableFormats(clipboard_handle); if (native_formats == null) { return(null); // Clipboard empty } // Build the IDataObject clipboard = new DataObject(); for (int i = 0; i < native_formats.Length; i++) { // We might get a format we don't understand or know item_format = DataFormats.GetFormat(native_formats[i]); if (item_format != null) { managed_clipboard_item = XplatUI.ClipboardRetrieve(clipboard_handle, native_formats[i], converter); if (managed_clipboard_item != null) { clipboard.SetData(item_format.Name, managed_clipboard_item); // We don't handle 'bitmap' since it involves handles, so we'll equate it to dib if (item_format.Name == DataFormats.Dib) { clipboard.SetData(DataFormats.Bitmap, managed_clipboard_item); } } } } XplatUI.ClipboardClose(clipboard_handle); return(clipboard); }
internal static IDataObject GetDataObject(bool primary_selection) { IDataObject data = null; var clipboard_handle = XplatUI.ClipboardOpen(primary_selection); var formats = XplatUI.ClipboardAvailableFormats(clipboard_handle); if (formats != null) { var format = DataFormats.GetFormat(IDataObjectFormat).Id; var converter = new XplatUI.ClipboardToObject(ConvertFromClipboardData); if (XplatUI.ClipboardRetrieve(clipboard_handle, format, converter) is IDataObject idata) { data = idata; } } XplatUI.ClipboardClose(clipboard_handle); return(data ?? new DataObject()); }