From f33f4c9a2473875ddfafa6a93ee4ff1e2166ad4f Mon Sep 17 00:00:00 2001 From: Luiz Henrique Cassettari Date: Fri, 1 Dec 2023 23:39:30 -0300 Subject: [PATCH] Icons Improve --- CHANGELOG.md | 2 + Directory.Build.props | 2 +- .../Resources/DrawingTests.cs | 8 +++ .../Resources/Images/Revit21Frames.ico | Bin 0 -> 200781 bytes .../Resources/ResourcePngTests.cs | 30 +++++++++++ .../Resources/ResourceTests.cs | 28 ++++++---- .../Resources/ResourcesFramesTests.cs | 39 ++++++++++++++ .../ricaun.Revit.UI.Tests.csproj | 2 + ricaun.Revit.UI/BitmapExtension.cs | 50 +++++++++++------- .../Drawing/BitmapDrawingExtension.cs | 3 +- 10 files changed, 135 insertions(+), 29 deletions(-) create mode 100644 ricaun.Revit.UI.Tests/Resources/Images/Revit21Frames.ico create mode 100644 ricaun.Revit.UI.Tests/Resources/ResourcePngTests.cs create mode 100644 ricaun.Revit.UI.Tests/Resources/ResourcesFramesTests.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index e4bcf2f..101189a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Update to support `net7.0-windows` and `net8.0-windows` - SetImage works with `Resources` without assembly name. - Change `System.Drawing` to a separate namespace and class. +- Icons `GetBitmapSource` return the biggest frame. ### Updated - Update `Build` project - Update `Example` project @@ -20,6 +21,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Test `StackTraceUtils` - Test `Resources` without assembly name. - Test `Drawing` Resources. +- Test `ResourceTests`, `ResourcePngTests` and `ResourcesFramesTests` ## [0.5.7] / 2023-11-17 ### Features diff --git a/Directory.Build.props b/Directory.Build.props index 6d4a7bf..8b2ce0a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,5 +1,5 @@ - 0.6.0-rc + 0.6.0-rc.2 \ No newline at end of file diff --git a/ricaun.Revit.UI.Tests/Resources/DrawingTests.cs b/ricaun.Revit.UI.Tests/Resources/DrawingTests.cs index 76f5d43..7c83b65 100644 --- a/ricaun.Revit.UI.Tests/Resources/DrawingTests.cs +++ b/ricaun.Revit.UI.Tests/Resources/DrawingTests.cs @@ -28,5 +28,13 @@ public void GetBitmapSource_Icon() Assert.IsNotNull(image.GetBitmapSource()); } + [TestCase(32)] + public void GetBitmapSource_Icon_Width(int width) + { + Icon image = Images.Resources.Revit; + var source = image.GetBitmapSource(); + Assert.AreEqual(width, source.Width); + } + } } \ No newline at end of file diff --git a/ricaun.Revit.UI.Tests/Resources/Images/Revit21Frames.ico b/ricaun.Revit.UI.Tests/Resources/Images/Revit21Frames.ico new file mode 100644 index 0000000000000000000000000000000000000000..b48fbe82bcd1b865a0eb8039d4d48f956b9d2b4c GIT binary patch literal 200781 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 literal 0 HcmV?d00001 diff --git a/ricaun.Revit.UI.Tests/Resources/ResourcePngTests.cs b/ricaun.Revit.UI.Tests/Resources/ResourcePngTests.cs new file mode 100644 index 0000000..e50d294 --- /dev/null +++ b/ricaun.Revit.UI.Tests/Resources/ResourcePngTests.cs @@ -0,0 +1,30 @@ +using NUnit.Framework; +using System; + +namespace ricaun.Revit.UI.Tests.Resources +{ + public class ResourcePngTests + { + const string ResourceNamePng = "Resources/Images/Revit32.png"; + + [Test] + public void GetBitmapSource_NotNull_Png() + { + Console.WriteLine(ResourceNamePng.GetBitmapSource()); + Assert.IsNotNull(ResourceNamePng.GetBitmapSource()); + Assert.IsNotNull(("/" + ResourceNamePng).GetBitmapSource()); + } + + [TestCase(15, 15)] + [TestCase(16, 16)] + [TestCase(31, 31)] + [TestCase(32, 32)] + [TestCase(48, 32)] + [TestCase(64, 32)] + public void GetBitmapFrame_Width_ScaleDown(int width, int expected) + { + var source = ResourceNamePng.GetBitmapSource().GetBitmapFrame(width); + Assert.AreEqual(expected, (int)Math.Round(source.Width)); + } + } +} \ No newline at end of file diff --git a/ricaun.Revit.UI.Tests/Resources/ResourceTests.cs b/ricaun.Revit.UI.Tests/Resources/ResourceTests.cs index 1d8c0b9..fa8d6cf 100644 --- a/ricaun.Revit.UI.Tests/Resources/ResourceTests.cs +++ b/ricaun.Revit.UI.Tests/Resources/ResourceTests.cs @@ -6,7 +6,6 @@ namespace ricaun.Revit.UI.Tests.Resources public class ResourceTests { const string ResourceNameIco = "Resources/Images/Revit.ico"; - const string ResourceNamePng = "Resources/Images/Revit32.png"; [Test] public void GetBitmapSource_NotNull() @@ -16,14 +15,6 @@ public void GetBitmapSource_NotNull() Assert.IsNotNull(("/" + ResourceNameIco).GetBitmapSource()); } - [Test] - public void GetBitmapSource_NotNull_Png() - { - Console.WriteLine(ResourceNamePng.GetBitmapSource()); - Assert.IsNotNull(ResourceNamePng.GetBitmapSource()); - Assert.IsNotNull(("/" + ResourceNamePng).GetBitmapSource()); - } - [Test] public void GetBitmapSource_NotNull_Component() { @@ -39,5 +30,24 @@ public void GetBitmapSource_Null_NotExist() var source = component.GetBitmapSource(); Assert.IsNull(source); } + + [TestCase(32)] + public void GetBitmapSource_Width(int width) + { + var source = ResourceNameIco.GetBitmapSource(); + Assert.AreEqual(width, source.Width); + } + + [TestCase(0, 16)] + [TestCase(10, 10)] + [TestCase(16, 16)] + [TestCase(32, 32)] + [TestCase(64, 32)] + [TestCase(128, 32)] + public void GetBitmapFrame_Width(int width, int expected) + { + var source = ResourceNameIco.GetBitmapSource().GetBitmapFrame(width); + Assert.AreEqual(expected, source.Width); + } } } \ No newline at end of file diff --git a/ricaun.Revit.UI.Tests/Resources/ResourcesFramesTests.cs b/ricaun.Revit.UI.Tests/Resources/ResourcesFramesTests.cs new file mode 100644 index 0000000..a6917b5 --- /dev/null +++ b/ricaun.Revit.UI.Tests/Resources/ResourcesFramesTests.cs @@ -0,0 +1,39 @@ +using NUnit.Framework; +using System; + +namespace ricaun.Revit.UI.Tests.Resources +{ + public class ResourcesFramesTests + { + const string ResourceNameIcoFrames = "Resources/Images/Revit21Frames.ico"; + + [Test] + public void Frames_GetBitmapSource_NotNull() + { + Console.WriteLine(ResourceNameIcoFrames.GetBitmapSource()); + Assert.IsNotNull(ResourceNameIcoFrames.GetBitmapSource()); + Assert.IsNotNull(("/" + ResourceNameIcoFrames).GetBitmapSource()); + } + + [TestCase(256)] + public void Frames_GetBitmapSource_Width(int width) + { + var source = ResourceNameIcoFrames.GetBitmapSource(); + Assert.AreEqual(width, source.Width); + } + + [TestCase(0, 16)] + [TestCase(10, 10)] + [TestCase(16, 16)] + [TestCase(32, 32)] + [TestCase(64, 64)] + [TestCase(128, 128)] + [TestCase(256, 256)] + [TestCase(512, 256)] + public void Frames_GetBitmapFrame_Width(int width, int expected) + { + var source = ResourceNameIcoFrames.GetBitmapSource().GetBitmapFrame(width); + Assert.AreEqual(expected, source.Width); + } + } +} \ No newline at end of file diff --git a/ricaun.Revit.UI.Tests/ricaun.Revit.UI.Tests.csproj b/ricaun.Revit.UI.Tests/ricaun.Revit.UI.Tests.csproj index c241469..13ba75c 100644 --- a/ricaun.Revit.UI.Tests/ricaun.Revit.UI.Tests.csproj +++ b/ricaun.Revit.UI.Tests/ricaun.Revit.UI.Tests.csproj @@ -40,6 +40,7 @@ + @@ -73,6 +74,7 @@ + diff --git a/ricaun.Revit.UI/BitmapExtension.cs b/ricaun.Revit.UI/BitmapExtension.cs index bc06920..78f1f69 100644 --- a/ricaun.Revit.UI/BitmapExtension.cs +++ b/ricaun.Revit.UI/BitmapExtension.cs @@ -17,7 +17,7 @@ internal static BitmapFrame UriToBitmapFrame(string uriString) { var uri = new Uri(uriString, UriKind.RelativeOrAbsolute); var decoder = BitmapDecoder.Create(uri, BitmapCreateOptions.None, BitmapCacheOption.Default); - return decoder.Frames[0]; + return decoder.Frames.OrderBy(e => e.Width).LastOrDefault(); } ///

@@ -87,38 +87,52 @@ public static ImageSource Scale(this ImageSource imageSource, double scale) /// /// /// - /// + /// /// - public static TImageSource GetBitmapFrame(this TImageSource imageSource, int width = 16, Action action = null) where TImageSource : ImageSource + /// When is zero, return the smallest width frame. + public static TImageSource GetBitmapFrame(this TImageSource imageSource, int width = 0, Action downloadCompleted = null) where TImageSource : ImageSource { + TImageSource ScaleDownIfWidthIsGreater(TImageSource imageSource, int width) + { + if (width <= 0) + return imageSource; + + if (imageSource.Width > width) + imageSource = imageSource.Scale(width / imageSource.Width) as TImageSource; + + return imageSource; + } + if (imageSource is BitmapFrame bitmapFrame) { + BitmapFrame GetBitmapFrameByWidth(BitmapFrame bitmapFrame, int width) + { + var frames = bitmapFrame.Decoder.Frames; + var frame = frames + .OrderBy(e => e.Width) + .FirstOrDefault(e => e.Width >= width); + + return frame; + } + if (bitmapFrame.IsDownloading) { bitmapFrame.DownloadCompleted += (s, e) => { - var frames = bitmapFrame.Decoder.Frames; - var frame = frames.FirstOrDefault(e => e.Width == width); + if (GetBitmapFrameByWidth(bitmapFrame, width) is TImageSource frame) + imageSource = frame; - if (frame != null) - imageSource = frame as TImageSource; + imageSource = ScaleDownIfWidthIsGreater(imageSource, width); - if (imageSource.Width > width) - imageSource = imageSource.Scale(width / imageSource.Width) as TImageSource; - - action?.Invoke(imageSource); + downloadCompleted?.Invoke(imageSource); }; } - var frames = bitmapFrame.Decoder.Frames; - var frame = frames.FirstOrDefault(e => e.Width == width); - - if (frame != null) - imageSource = frame as TImageSource; + if (GetBitmapFrameByWidth(bitmapFrame, width) is TImageSource frame) + imageSource = frame; } - if (imageSource.Width > width) - imageSource = imageSource.Scale(width / imageSource.Width) as TImageSource; + imageSource = ScaleDownIfWidthIsGreater(imageSource, width); return imageSource; } diff --git a/ricaun.Revit.UI/Drawing/BitmapDrawingExtension.cs b/ricaun.Revit.UI/Drawing/BitmapDrawingExtension.cs index 48a4c20..6f96a55 100644 --- a/ricaun.Revit.UI/Drawing/BitmapDrawingExtension.cs +++ b/ricaun.Revit.UI/Drawing/BitmapDrawingExtension.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using System.Windows.Media.Imaging; namespace ricaun.Revit.UI.Drawing @@ -40,7 +41,7 @@ public static BitmapSource GetBitmapSource(this System.Drawing.Icon icon) var stream = new MemoryStream(); icon.Save(stream); var decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.Default); - return decoder.Frames[0]; + return decoder.Frames.OrderBy(e => e.Width).LastOrDefault(); } ///