public IClipboardData BuildData(IClipboardFormat format, byte[] rawData) { if (!CanBuildData(format)) { throw new InvalidOperationException("The given format is not supported."); } var bitmapSource = DIBV5ToBitmapSource(rawData); return(new ClipboardImageData() { RawData = rawData, RawFormat = format, Image = imagePersistenceService.ConvertBitmapSourceToByteArray(bitmapSource) }); }
void DecoratePackageWithClipboardDataFromRawDataAndFormat( IClipboardDataPackage package, IClipboardFormat format, byte[] rawData) { var factory = FindCapableFactoryFromFormat(format); logger.Information("Generating clipboard data object for format {format} using {factory}.", format, factory.GetType().Name); var clipboardData = factory.BuildData(format, rawData); if (clipboardData != null) { package.AddData(clipboardData); } }
static string GetProcessedTextFromRawData(IClipboardFormat format, byte[] data) { var text = GetTextFromRawData(format, data); if (text == null) { return(null); } var terminaryNullCharacterPosition = text.IndexOf('\0'); if (terminaryNullCharacterPosition > -1) { text = text.Substring(0, terminaryNullCharacterPosition); } return(HtmlEntity.DeEntitize(text)); }
IClipboardData ConstructDataFromFiles( IReadOnlyCollection <string> files, IClipboardFormat format, byte[] rawData) { if (files.Count == 1) { return(ConstructClipboardFileData( files.Single(), format, rawData)); } return(ConstructClipboardFileCollectionData( files, format, rawData)); }
public IClipboardData BuildData( IClipboardFormat format, byte[] rawData) { if (!CanBuildData(format)) { throw new ArgumentException( "Can't construct data from this format.", nameof(format)); } var files = GetFilesCopiedFromRawData(rawData); if (!files.Any()) { return(null); } return(ConstructDataFromFiles(files, format, rawData)); }
public byte[] UnwrapStructure(IClipboardFormat format) { if (format.Number != ClipboardNativeApi.CF_DIBV5) { return(null); } var hBitmap = clipboardNativeApi.GetClipboardData(ClipboardNativeApi.CF_DIBV5); var ptr = generalNativeApi.GlobalLock(hBitmap); try { return(GetAllBytesFromBitmapHeader(ptr)); } finally { imageNativeApi.DeleteObject(ptr); } }
void DecoratePackageWithClipboardDataForFormat( IClipboardDataPackage package, IClipboardFormat format) { var unwrapper = FindCapableUnwrapperFromFormat(format); if (unwrapper == null) { return; } logger.Information("Unwrapping format {format} using {unwrapper}.", format, unwrapper.GetType().Name); var rawData = unwrapper.UnwrapStructure(format); if (rawData == null) { return; } DecoratePackageWithClipboardDataFromRawDataAndFormat(package, format, rawData); }
public IClipboardData BuildData(IClipboardFormat format, byte[] data) { if (!CanBuildData(format)) { throw new ArgumentException( "Can't construct data from this format.", nameof(format)); } var text = GetProcessedTextFromRawData(format, data); if (text == null) { return(null); } return(new ClipboardTextData() { Text = text.Trim(), RawData = data, RawFormat = format }); }
public bool CanBuildData(IClipboardFormat format) { return(true); }
public FormatDataPair(IClipboardFormat format, byte[] data) { Format = format; Data = data; }
public bool CanBuildData(IClipboardFormat format) { return(format.Number == ClipboardNativeApi.CF_HDROP); }
IClipboardFileData ConstructClipboardFileData( string file, IClipboardFormat format) { return(ConstructClipboardFileData(file, format, null)); }
public byte[] UnwrapStructure(IClipboardFormat format) { return(clipboardNativeApi.GetClipboardDataBytes(format.Number)); }