diff --git a/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs new file mode 100644 index 0000000..882d67a --- /dev/null +++ b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs @@ -0,0 +1,25 @@ +using Godot; +using SharpIDE.Application.Features.Nuget; + +namespace SharpIDE.Godot.Features.Nuget; + +public static class ImageTextureHelper +{ + public static ImageTexture? GetImageTextureFromBytes(byte[]? imageBytes, NugetPackageIconFormat? format) + { + if (imageBytes is null || format is null) return null; + var image = new Image(); + var error = format switch + { + NugetPackageIconFormat.Png => image.LoadPngFromBuffer(imageBytes), + NugetPackageIconFormat.Jpg => image.LoadJpgFromBuffer(imageBytes), + _ => Error.FileUnrecognized + }; + if (error is Error.Ok) + { + image.Resize(32, 32, Image.Interpolation.Lanczos); // Probably should cache resized images instead + return ImageTexture.CreateFromImage(image); + } + return null!; + } +} \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid new file mode 100644 index 0000000..ed75e56 --- /dev/null +++ b/src/SharpIDE.Godot/Features/Nuget/ImageTextureHelper.cs.uid @@ -0,0 +1 @@ +uid://f62r1og43wye diff --git a/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs b/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs index c1d5bec..953662e 100644 --- a/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs +++ b/src/SharpIDE.Godot/Features/Nuget/NugetPackageDetails.cs @@ -1,8 +1,36 @@ using Godot; +using SharpIDE.Application.Features.Nuget; namespace SharpIDE.Godot.Features.Nuget; public partial class NugetPackageDetails : VBoxContainer { + private TextureRect _packageIconTextureRect = null!; + private Label _packageNameLabel = null!; + + private IdePackageResult? _package; + [Inject] private readonly NugetPackageIconCacheService _nugetPackageIconCacheService = null!; + public override void _Ready() + { + _packageIconTextureRect = GetNode("%PackageIconTextureRect"); + _packageNameLabel = GetNode