From a02b9e7825c58b217c7c005af105212c162e5a8a Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Sat, 29 Jun 2024 19:39:34 +0100 Subject: [PATCH] write thumbnail to wallet store --- Toolkit.Avalonia/IImageResizer.cs | 2 +- .../IServiceCollectionExtensions.cs | 8 +++++++- .../{ImageProvider.cs => ImageReader.cs} | 8 +++----- Toolkit.Avalonia/ImageWriter.cs | 17 +++++++++++++++++ Toolkit.Foundation/Activated.cs | 3 +-- .../{IImageProvider.cs => IImageReader.cs} | 4 ++-- Toolkit.Foundation/IImageWriter.cs | 6 ++++++ Toolkit.Foundation/Read.cs | 10 ++++++++++ Toolkit.Foundation/ReadEventArgs.cs | 3 +++ Toolkit.Foundation/Request.cs | 8 ++++---- Toolkit.Foundation/RequestEventArgs.cs | 2 +- Toolkit.Foundation/Write.cs | 10 ++++++++++ Toolkit.Foundation/WriteEventArgs.cs | 3 +++ 13 files changed, 68 insertions(+), 16 deletions(-) rename Toolkit.Avalonia/{ImageProvider.cs => ImageReader.cs} (62%) create mode 100644 Toolkit.Avalonia/ImageWriter.cs rename Toolkit.Foundation/{IImageProvider.cs => IImageReader.cs} (60%) create mode 100644 Toolkit.Foundation/IImageWriter.cs create mode 100644 Toolkit.Foundation/Read.cs create mode 100644 Toolkit.Foundation/ReadEventArgs.cs create mode 100644 Toolkit.Foundation/Write.cs create mode 100644 Toolkit.Foundation/WriteEventArgs.cs diff --git a/Toolkit.Avalonia/IImageResizer.cs b/Toolkit.Avalonia/IImageResizer.cs index ad1bc8b..2a7187a 100644 --- a/Toolkit.Avalonia/IImageResizer.cs +++ b/Toolkit.Avalonia/IImageResizer.cs @@ -8,4 +8,4 @@ public interface IImageResizer int targetWidth, int targetHeight, bool maintainAspectRatio); -} \ No newline at end of file +} diff --git a/Toolkit.Avalonia/IServiceCollectionExtensions.cs b/Toolkit.Avalonia/IServiceCollectionExtensions.cs index 5f2ec1a..2de2873 100644 --- a/Toolkit.Avalonia/IServiceCollectionExtensions.cs +++ b/Toolkit.Avalonia/IServiceCollectionExtensions.cs @@ -126,7 +126,9 @@ public static class IServiceCollectionExtensions { services.AddTransient(); services.AddTransient(); - services.AddTransient(); + + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -149,6 +151,10 @@ public static class IServiceCollectionExtensions services.AddTransient((Func>)(provider => new ProxyServiceCollection(services => { + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddSingleton(provider.GetRequiredService()); services.AddTransient(); diff --git a/Toolkit.Avalonia/ImageProvider.cs b/Toolkit.Avalonia/ImageReader.cs similarity index 62% rename from Toolkit.Avalonia/ImageProvider.cs rename to Toolkit.Avalonia/ImageReader.cs index 21e8998..af6857e 100644 --- a/Toolkit.Avalonia/ImageProvider.cs +++ b/Toolkit.Avalonia/ImageReader.cs @@ -3,17 +3,15 @@ using Toolkit.Foundation; namespace Toolkit.Avalonia; -public class ImageProvider(IImageResizer imageResizer) : - IImageProvider +public class ImageReader(IImageResizer imageResizer) : + IImageReader { - public async Task Get(string filePath, + public async Task Get(Stream stream, int width, int height, bool maintainAspectRatio) { - await using FileStream stream = File.OpenRead(filePath); Bitmap resizedImage = imageResizer.Resize(stream, width, height, maintainAspectRatio); - return new ImageDescriptor(resizedImage, width, height); } } diff --git a/Toolkit.Avalonia/ImageWriter.cs b/Toolkit.Avalonia/ImageWriter.cs new file mode 100644 index 0000000..4f48486 --- /dev/null +++ b/Toolkit.Avalonia/ImageWriter.cs @@ -0,0 +1,17 @@ +using Avalonia.Media.Imaging; +using Toolkit.Foundation; + +namespace Toolkit.Avalonia; + +public class ImageWriter : + IImageWriter +{ + public void Write(IImageDescriptor imageDescriptor, + Stream stream) + { + if (imageDescriptor.Image is Bitmap bitmap) + { + bitmap.Save(stream); + } + } +} diff --git a/Toolkit.Foundation/Activated.cs b/Toolkit.Foundation/Activated.cs index 001d9f6..adfb47e 100644 --- a/Toolkit.Foundation/Activated.cs +++ b/Toolkit.Foundation/Activated.cs @@ -1,5 +1,4 @@ - -namespace Toolkit.Foundation; +namespace Toolkit.Foundation; public record Activated { diff --git a/Toolkit.Foundation/IImageProvider.cs b/Toolkit.Foundation/IImageReader.cs similarity index 60% rename from Toolkit.Foundation/IImageProvider.cs rename to Toolkit.Foundation/IImageReader.cs index 517780a..4b468fd 100644 --- a/Toolkit.Foundation/IImageProvider.cs +++ b/Toolkit.Foundation/IImageReader.cs @@ -1,8 +1,8 @@ namespace Toolkit.Foundation; -public interface IImageProvider +public interface IImageReader { - Task Get(string filePath, + Task Get(Stream stream, int width, int height, bool maintainAspectRatio = false); diff --git a/Toolkit.Foundation/IImageWriter.cs b/Toolkit.Foundation/IImageWriter.cs new file mode 100644 index 0000000..e69f610 --- /dev/null +++ b/Toolkit.Foundation/IImageWriter.cs @@ -0,0 +1,6 @@ +namespace Toolkit.Foundation; + +public interface IImageWriter +{ + void Write(IImageDescriptor imageDescriptor, Stream stream); +} \ No newline at end of file diff --git a/Toolkit.Foundation/Read.cs b/Toolkit.Foundation/Read.cs new file mode 100644 index 0000000..ff3a77a --- /dev/null +++ b/Toolkit.Foundation/Read.cs @@ -0,0 +1,10 @@ +namespace Toolkit.Foundation; + +public class Read +{ + public static ReadEventArgs As(TSender sender) => + new(sender); + + public static ReadEventArgs As() where TSender : new() => + new(new TSender()); +} diff --git a/Toolkit.Foundation/ReadEventArgs.cs b/Toolkit.Foundation/ReadEventArgs.cs new file mode 100644 index 0000000..b251204 --- /dev/null +++ b/Toolkit.Foundation/ReadEventArgs.cs @@ -0,0 +1,3 @@ +namespace Toolkit.Foundation; + +public record ReadEventArgs(TSender? Sender = default); diff --git a/Toolkit.Foundation/Request.cs b/Toolkit.Foundation/Request.cs index cbf71d6..f098aa1 100644 --- a/Toolkit.Foundation/Request.cs +++ b/Toolkit.Foundation/Request.cs @@ -2,9 +2,9 @@ public class Request { - public static RequestEventArgs As(TValue value) => - new(value); + public static RequestEventArgs As(TSender sender) => + new(sender); - public static RequestEventArgs As() where TValue : new() => - new(new TValue()); + public static RequestEventArgs As() where TSender : new() => + new(new TSender()); } \ No newline at end of file diff --git a/Toolkit.Foundation/RequestEventArgs.cs b/Toolkit.Foundation/RequestEventArgs.cs index 7634c78..6cb1cf9 100644 --- a/Toolkit.Foundation/RequestEventArgs.cs +++ b/Toolkit.Foundation/RequestEventArgs.cs @@ -1,3 +1,3 @@ namespace Toolkit.Foundation; -public record RequestEventArgs(TSender? Sender = default); +public record RequestEventArgs(TSender? Sender = default); \ No newline at end of file diff --git a/Toolkit.Foundation/Write.cs b/Toolkit.Foundation/Write.cs new file mode 100644 index 0000000..479e25b --- /dev/null +++ b/Toolkit.Foundation/Write.cs @@ -0,0 +1,10 @@ +namespace Toolkit.Foundation; + +public class Write +{ + public static WriteEventArgs As(TSender sender) => + new(sender); + + public static WriteEventArgs As() where TSender : new() => + new(new TSender()); +} \ No newline at end of file diff --git a/Toolkit.Foundation/WriteEventArgs.cs b/Toolkit.Foundation/WriteEventArgs.cs new file mode 100644 index 0000000..f6ad727 --- /dev/null +++ b/Toolkit.Foundation/WriteEventArgs.cs @@ -0,0 +1,3 @@ +namespace Toolkit.Foundation; + +public record WriteEventArgs(TSender? Sender = default); \ No newline at end of file