write thumbnail to wallet store

This commit is contained in:
TheXamlGuy
2024-06-29 19:39:34 +01:00
parent 4b185513ee
commit a02b9e7825
13 changed files with 68 additions and 16 deletions
+1 -1
View File
@@ -8,4 +8,4 @@ public interface IImageResizer
int targetWidth, int targetWidth,
int targetHeight, int targetHeight,
bool maintainAspectRatio); bool maintainAspectRatio);
} }
@@ -126,7 +126,9 @@ public static class IServiceCollectionExtensions
{ {
services.AddTransient<ITopLevelProvider, TopLevelProvider>(); services.AddTransient<ITopLevelProvider, TopLevelProvider>();
services.AddTransient<IFileProvider, FileProvider>(); services.AddTransient<IFileProvider, FileProvider>();
services.AddTransient<IImageProvider, ImageProvider>();
services.AddTransient<IImageReader, ImageReader>();
services.AddTransient<IImageWriter, ImageWriter>();
services.AddTransient<IImageResizer, ImageResizer>(); services.AddTransient<IImageResizer, ImageResizer>();
services.AddTransient<IDispatcher, AvaloniaDispatcher>(); services.AddTransient<IDispatcher, AvaloniaDispatcher>();
@@ -149,6 +151,10 @@ public static class IServiceCollectionExtensions
services.AddTransient((Func<IServiceProvider, IProxyServiceCollection<IComponentBuilder>>)(provider => services.AddTransient((Func<IServiceProvider, IProxyServiceCollection<IComponentBuilder>>)(provider =>
new ProxyServiceCollection<IComponentBuilder>(services => new ProxyServiceCollection<IComponentBuilder>(services =>
{ {
services.AddTransient<IImageReader, ImageReader>();
services.AddTransient<IImageWriter, ImageWriter>();
services.AddTransient<IImageResizer, ImageResizer>();
services.AddSingleton(provider.GetRequiredService<IDispatcher>()); services.AddSingleton(provider.GetRequiredService<IDispatcher>());
services.AddTransient<IContentTemplate, ContentTemplate>(); services.AddTransient<IContentTemplate, ContentTemplate>();
@@ -3,17 +3,15 @@ using Toolkit.Foundation;
namespace Toolkit.Avalonia; namespace Toolkit.Avalonia;
public class ImageProvider(IImageResizer imageResizer) : public class ImageReader(IImageResizer imageResizer) :
IImageProvider IImageReader
{ {
public async Task<IImageDescriptor> Get(string filePath, public async Task<IImageDescriptor> Get(Stream stream,
int width, int width,
int height, int height,
bool maintainAspectRatio) bool maintainAspectRatio)
{ {
await using FileStream stream = File.OpenRead(filePath);
Bitmap resizedImage = imageResizer.Resize(stream, width, height, maintainAspectRatio); Bitmap resizedImage = imageResizer.Resize(stream, width, height, maintainAspectRatio);
return new ImageDescriptor(resizedImage, width, height); return new ImageDescriptor(resizedImage, width, height);
} }
} }
+17
View File
@@ -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);
}
}
}
+1 -2
View File
@@ -1,5 +1,4 @@
namespace Toolkit.Foundation;
namespace Toolkit.Foundation;
public record Activated public record Activated
{ {
@@ -1,8 +1,8 @@
namespace Toolkit.Foundation; namespace Toolkit.Foundation;
public interface IImageProvider public interface IImageReader
{ {
Task<IImageDescriptor> Get(string filePath, Task<IImageDescriptor> Get(Stream stream,
int width, int width,
int height, int height,
bool maintainAspectRatio = false); bool maintainAspectRatio = false);
+6
View File
@@ -0,0 +1,6 @@
namespace Toolkit.Foundation;
public interface IImageWriter
{
void Write(IImageDescriptor imageDescriptor, Stream stream);
}
+10
View File
@@ -0,0 +1,10 @@
namespace Toolkit.Foundation;
public class Read
{
public static ReadEventArgs<TSender> As<TSender>(TSender sender) =>
new(sender);
public static ReadEventArgs<TSender> As<TSender>() where TSender : new() =>
new(new TSender());
}
+3
View File
@@ -0,0 +1,3 @@
namespace Toolkit.Foundation;
public record ReadEventArgs<TSender>(TSender? Sender = default);
+4 -4
View File
@@ -2,9 +2,9 @@
public class Request public class Request
{ {
public static RequestEventArgs<TValue> As<TValue>(TValue value) => public static RequestEventArgs<TSender> As<TSender>(TSender sender) =>
new(value); new(sender);
public static RequestEventArgs<TValue> As<TValue>() where TValue : new() => public static RequestEventArgs<TSender> As<TSender>() where TSender : new() =>
new(new TValue()); new(new TSender());
} }
+1 -1
View File
@@ -1,3 +1,3 @@
namespace Toolkit.Foundation; namespace Toolkit.Foundation;
public record RequestEventArgs<TSender>(TSender? Sender = default); public record RequestEventArgs<TSender>(TSender? Sender = default);
+10
View File
@@ -0,0 +1,10 @@
namespace Toolkit.Foundation;
public class Write
{
public static WriteEventArgs<TSender> As<TSender>(TSender sender) =>
new(sender);
public static WriteEventArgs<TSender> As<TSender>() where TSender : new() =>
new(new TSender());
}
+3
View File
@@ -0,0 +1,3 @@
namespace Toolkit.Foundation;
public record WriteEventArgs<TSender>(TSender? Sender = default);