Added Giphy support, Favourites
This commit is contained in:
@@ -27,12 +27,20 @@ public sealed class ClipboardService : IClipboardService
|
||||
// reading a pasted image, because those older formats are lossy for transparency. This
|
||||
// covers Teams, Slack, Discord's web layer, and browsers - without it, paste into any of
|
||||
// them can silently produce nothing even though CF_DIB is present and perfectly valid.
|
||||
using var pngStream = new MemoryStream();
|
||||
var pngEncoder = new PngBitmapEncoder();
|
||||
pngEncoder.Frames.Add(BitmapFrame.Create(firstFrame));
|
||||
pngEncoder.Save(pngStream);
|
||||
pngStream.Position = 0;
|
||||
data.SetData("PNG", pngStream);
|
||||
//
|
||||
// Deliberately skipped for GIFs: a PNG can only ever hold one static frame, and since
|
||||
// Chromium PREFERS this format over all others, offering it for a GIF is what makes
|
||||
// animated GIFs paste as a still first frame. Omitting it lets those targets fall
|
||||
// through to CF_HTML below, which carries the full animated data URI.
|
||||
if (!ImageDecoding.IsGif(filePath))
|
||||
{
|
||||
using var pngStream = new MemoryStream();
|
||||
var pngEncoder = new PngBitmapEncoder();
|
||||
pngEncoder.Frames.Add(BitmapFrame.Create(firstFrame));
|
||||
pngEncoder.Save(pngStream);
|
||||
pngStream.Position = 0;
|
||||
data.SetData("PNG", pngStream);
|
||||
}
|
||||
|
||||
// CF_HTML: the other route those same web-based paste targets check, and the only one of
|
||||
// these formats that preserves animation for them, for GIFs.
|
||||
|
||||
Reference in New Issue
Block a user