Пример #1
0
        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));
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
 }
Пример #10
0
 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));
 }
Пример #13
0
 public byte[] UnwrapStructure(IClipboardFormat format)
 {
     return(clipboardNativeApi.GetClipboardDataBytes(format.Number));
 }