From 35ad8784f00443085574945c47e4e38334da09d8 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 7 Jun 2018 08:40:29 +0200 Subject: [PATCH] More fixes, the ClipboardDestination "should" now work again, mostly... --- .../Extensions/ClipboardHtmlExtensions.cs | 8 ++--- .../Destinations/ClipboardDestination.cs | 29 ++++++++++++++++--- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/Greenshot.Addons/Extensions/ClipboardHtmlExtensions.cs b/src/Greenshot.Addons/Extensions/ClipboardHtmlExtensions.cs index 127e53f3a..393fed8ad 100644 --- a/src/Greenshot.Addons/Extensions/ClipboardHtmlExtensions.cs +++ b/src/Greenshot.Addons/Extensions/ClipboardHtmlExtensions.cs @@ -152,16 +152,16 @@ EndSelection:<<<<<<<4 /// Place the bitmap as embedded HTML on the clipboard /// /// IClipboardAccessToken - /// Bitmap - public static void SetAsEmbeddedHtml(this IClipboardAccessToken clipboardAccessToken, Bitmap bitmap) + /// ISurface + public static void SetAsEmbeddedHtml(this IClipboardAccessToken clipboardAccessToken, ISurface surface) { using (var pngStream = new MemoryStream()) { var pngOutputSettings = new SurfaceOutputSettings(OutputFormats.png, 100, false); - ImageOutput.SaveToStream(bitmap, null, pngStream, pngOutputSettings); + ImageOutput.SaveToStream(surface, pngStream, pngOutputSettings); pngStream.Seek(0, SeekOrigin.Begin); // Set the PNG stream - var htmlText = GenerateHtmlDataUrlString(bitmap.Size, pngStream); + var htmlText = GenerateHtmlDataUrlString(new NativeSize(surface.Width, surface.Height), pngStream); clipboardAccessToken.SetAsHtml(htmlText); } } diff --git a/src/Greenshot/Destinations/ClipboardDestination.cs b/src/Greenshot/Destinations/ClipboardDestination.cs index 72c66f823..ace4bb58c 100644 --- a/src/Greenshot/Destinations/ClipboardDestination.cs +++ b/src/Greenshot/Destinations/ClipboardDestination.cs @@ -34,7 +34,6 @@ using Greenshot.Addons.Core.Enums; using Greenshot.Addons.Extensions; using Greenshot.Addons.Interfaces; using Greenshot.Addons.Interfaces.Plugin; -using Greenshot.Configuration; #endregion @@ -67,9 +66,31 @@ namespace Greenshot.Destinations using (var clipboardAccessToken = ClipboardNative.Access()) { clipboardAccessToken.ClearContents(); - - //clipboardAccessToken.SetAsDeviceIndependendBitmap(surface); - clipboardAccessToken.SetAsFormat17(surface); + + foreach (var clipboardFormat in CoreConfiguration.ClipboardFormats) + { + switch (clipboardFormat) + { + case ClipboardFormats.DIB: + clipboardAccessToken.SetAsDeviceIndependendBitmap(surface); + break; + case ClipboardFormats.DIBV5: + clipboardAccessToken.SetAsFormat17(surface); + break; + case ClipboardFormats.PNG: + clipboardAccessToken.SetAsBitmap(surface, new SurfaceOutputSettings(OutputFormats.png)); + break; + case ClipboardFormats.BITMAP: + clipboardAccessToken.SetAsBitmap(surface, new SurfaceOutputSettings(OutputFormats.bmp)); + break; + case ClipboardFormats.HTML: + clipboardAccessToken.SetAsHtml(surface); + break; + case ClipboardFormats.HTMLDATAURL: + clipboardAccessToken.SetAsEmbeddedHtml(surface); + break; + } + } } exportInformation.ExportMade = true; }