diff --git a/src/IconPacks.Avalonia.BootstrapIcons/Converter/PackIconBootstrapIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.BootstrapIcons/Converter/PackIconBootstrapIconsKindToImageConverter.cs
index 4b2ee25..7454de5 100644
--- a/src/IconPacks.Avalonia.BootstrapIcons/Converter/PackIconBootstrapIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.BootstrapIcons/Converter/PackIconBootstrapIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.BootstrapIcons.Converter
{
public class PackIconBootstrapIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconBootstrapIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIcons.cs b/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIcons.cs
index 9d9a3f9..40609ba 100644
--- a/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIcons.cs
+++ b/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.BootstrapIcons
[MetaData("Bootstrap Icons", "https://icons.getbootstrap.com/", "https://github.com/twbs/icons?tab=MIT-1-ov-file#readme")]
public class PackIconBootstrapIcons : PackIconControlBase
{
- public PackIconBootstrapIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIconsImageExtension.cs b/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIconsImageExtension.cs
index 1425978..3757eaf 100644
--- a/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.BootstrapIcons/PackIconBootstrapIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconBootstrapIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.BoxIcons/Converter/PackIconBoxIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.BoxIcons/Converter/PackIconBoxIconsKindToImageConverter.cs
index 293140d..1ef0d34 100644
--- a/src/IconPacks.Avalonia.BoxIcons/Converter/PackIconBoxIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.BoxIcons/Converter/PackIconBoxIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.BoxIcons.Converter
{
public class PackIconBoxIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconBoxIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIcons.cs b/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIcons.cs
index 62e7ba6..2f3986d 100644
--- a/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIcons.cs
+++ b/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.BoxIcons
[MetaData("Boxicons v3", "https://boxicons.com/", "https://docs.boxicons.com/license/free")]
public class PackIconBoxIcons : PackIconControlBase
{
- public PackIconBoxIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIconsImageExtension.cs b/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIconsImageExtension.cs
index 07eca25..1ef1dae 100644
--- a/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.BoxIcons/PackIconBoxIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconBoxIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.BoxIcons2/Converter/PackIconBoxIcons2KindToImageConverter.cs b/src/IconPacks.Avalonia.BoxIcons2/Converter/PackIconBoxIcons2KindToImageConverter.cs
index 47563e5..a11eb0c 100644
--- a/src/IconPacks.Avalonia.BoxIcons2/Converter/PackIconBoxIcons2KindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.BoxIcons2/Converter/PackIconBoxIcons2KindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.BoxIcons2.Converter
{
public class PackIconBoxIcons2KindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconBoxIcons2Kind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2.cs b/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2.cs
index 09ed5bf..e0779a4 100644
--- a/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2.cs
+++ b/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.BoxIcons2
[MetaData("Boxicons v2", "https://v2.boxicons.com/", "https://v2.boxicons.com/usage#license")]
public class PackIconBoxIcons2 : PackIconControlBase
{
- public PackIconBoxIcons2()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2ImageExtension.cs b/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2ImageExtension.cs
index 2aeb570..5ee6c59 100644
--- a/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2ImageExtension.cs
+++ b/src/IconPacks.Avalonia.BoxIcons2/PackIconBoxIcons2ImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconBoxIcons2Kind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.CircumIcons/Converter/PackIconCircumIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.CircumIcons/Converter/PackIconCircumIconsKindToImageConverter.cs
index a4ee260..eed55f9 100644
--- a/src/IconPacks.Avalonia.CircumIcons/Converter/PackIconCircumIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.CircumIcons/Converter/PackIconCircumIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.CircumIcons.Converter
{
public class PackIconCircumIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconCircumIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIcons.cs b/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIcons.cs
index 0209434..0370f92 100644
--- a/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIcons.cs
+++ b/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.CircumIcons
[MetaData("Circum Icons Free", "https://github.com/Klarr-Agency/Circum-Icons", "https://github.com/Klarr-Agency/Circum-Icons?tab=MPL-2.0-1-ov-file")]
public class PackIconCircumIcons : PackIconControlBase
{
- public PackIconCircumIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIconsImageExtension.cs b/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIconsImageExtension.cs
index 2d8336d..996e408 100644
--- a/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.CircumIcons/PackIconCircumIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconCircumIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Codicons/Converter/PackIconCodiconsKindToImageConverter.cs b/src/IconPacks.Avalonia.Codicons/Converter/PackIconCodiconsKindToImageConverter.cs
index 6400d1c..add3642 100644
--- a/src/IconPacks.Avalonia.Codicons/Converter/PackIconCodiconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Codicons/Converter/PackIconCodiconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Codicons.Converter
{
public class PackIconCodiconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconCodiconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Codicons/PackIconCodicons.cs b/src/IconPacks.Avalonia.Codicons/PackIconCodicons.cs
index 7b51986..d882c32 100644
--- a/src/IconPacks.Avalonia.Codicons/PackIconCodicons.cs
+++ b/src/IconPacks.Avalonia.Codicons/PackIconCodicons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Codicons
[MetaData("Codicons", "https://github.com/microsoft/vscode-codicons", "https://github.com/microsoft/vscode-codicons/blob/main/LICENSE")]
public class PackIconCodicons : PackIconControlBase
{
- public PackIconCodicons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Codicons/PackIconCodiconsImageExtension.cs b/src/IconPacks.Avalonia.Codicons/PackIconCodiconsImageExtension.cs
index 16c7e70..bf106e1 100644
--- a/src/IconPacks.Avalonia.Codicons/PackIconCodiconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Codicons/PackIconCodiconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconCodiconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Coolicons/Converter/PackIconCooliconsKindToImageConverter.cs b/src/IconPacks.Avalonia.Coolicons/Converter/PackIconCooliconsKindToImageConverter.cs
index ce668c0..74dcf0d 100644
--- a/src/IconPacks.Avalonia.Coolicons/Converter/PackIconCooliconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Coolicons/Converter/PackIconCooliconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Coolicons.Converter
{
public class PackIconCooliconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconCooliconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Coolicons/PackIconCoolicons.cs b/src/IconPacks.Avalonia.Coolicons/PackIconCoolicons.cs
index f7c972f..a3157e9 100644
--- a/src/IconPacks.Avalonia.Coolicons/PackIconCoolicons.cs
+++ b/src/IconPacks.Avalonia.Coolicons/PackIconCoolicons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Coolicons
[MetaData("Coolicons", "https://github.com/krystonschwarze/coolicons", "https://github.com/krystonschwarze/coolicons/blob/master/README.md#license")]
public class PackIconCoolicons : PackIconControlBase
{
- public PackIconCoolicons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Coolicons/PackIconCooliconsImageExtension.cs b/src/IconPacks.Avalonia.Coolicons/PackIconCooliconsImageExtension.cs
index 0d47e34..d5a857c 100644
--- a/src/IconPacks.Avalonia.Coolicons/PackIconCooliconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Coolicons/PackIconCooliconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconCooliconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Core/Converter/PackIconKindToImageConverterBase.cs b/src/IconPacks.Avalonia.Core/Converter/PackIconKindToImageConverterBase.cs
index ff75d8c..5c42ba3 100644
--- a/src/IconPacks.Avalonia.Core/Converter/PackIconKindToImageConverterBase.cs
+++ b/src/IconPacks.Avalonia.Core/Converter/PackIconKindToImageConverterBase.cs
@@ -24,7 +24,12 @@ public abstract class PackIconKindToImageConverterBase : MarkupConverter
///
/// Gets the path data for the given kind.
///
- protected abstract string GetPathData(object iconKind);
+ protected string GetPathData(object iconKind)
+ {
+ return PackIconDataIndex.TryGetPath((Enum)iconKind, out string data)
+ ? data
+ : null;
+ }
///
/// Gets the ScaleTransform for the given kind.
@@ -53,7 +58,7 @@ protected Transform GetTransformGroup(object iconKind)
}
///
- /// Gets the object that will be used for the .
+ /// Gets the object that will be used for the .
///
protected virtual DrawingGroup GetDrawingGroup(object iconKind, IBrush foregroundBrush, string path)
{
diff --git a/src/IconPacks.Avalonia.Core/IconGeometryCache.cs b/src/IconPacks.Avalonia.Core/IconGeometryCache.cs
new file mode 100644
index 0000000..b9529fc
--- /dev/null
+++ b/src/IconPacks.Avalonia.Core/IconGeometryCache.cs
@@ -0,0 +1,114 @@
+#nullable enable
+using System;
+using System.Collections.Generic;
+using Avalonia.Media;
+
+namespace IconPacks.Avalonia.Core;
+
+public static class PackIconGeometryCache
+{
+ private static int _cacheSize = 100;
+
+ ///
+ /// Gets or sets the maximum number of icons to cache.
+ ///
+ public static int CacheSize
+ {
+ get => _cacheSize;
+ set
+ {
+ _cacheSize = value;
+ TrimUnsafe(_cacheSize);
+ }
+ }
+
+ private sealed class Entry
+ {
+ public Enum Key { get; }
+ public StreamGeometry Geometry { get; }
+
+ public Entry(Enum key, StreamGeometry geometry)
+ {
+ Key = key;
+ Geometry = geometry;
+ }
+ }
+
+ private static readonly object _Gate = new();
+ private static readonly Dictionary> _Map = new();
+ private static readonly LinkedList _Lru = new();
+
+ public static StreamGeometry? GetOrAdd(Enum kind)
+ {
+ var capacity = CacheSize;
+ string? path;
+
+ if (capacity <= 0)
+ return PackIconDataIndex.TryGetPath(kind, out path) ?
+ CreateGeometry(path) : null;
+
+ // Fast path: try hit
+ lock (_Gate)
+ {
+ if (_Map.TryGetValue(kind, out var node))
+ {
+ _Lru.Remove(node);
+ _Lru.AddFirst(node);
+ return node.Value.Geometry;
+ }
+ }
+
+ // Parse outside lock (parsing can be expensive)
+ PackIconDataIndex.TryGetPath(kind, out path);
+ var created = CreateGeometry(path);
+ if (created is null)
+ return null;
+
+ lock (_Gate)
+ {
+ // Re-check in case it was added while we parsed
+ if (_Map.TryGetValue(kind, out var existing))
+ {
+ _Lru.Remove(existing);
+ _Lru.AddFirst(existing);
+ return existing.Value.Geometry;
+ }
+
+ var newNode = new LinkedListNode(new Entry(kind, created));
+ _Lru.AddFirst(newNode);
+ _Map[kind] = newNode;
+
+ TrimUnsafe(capacity);
+ return created;
+ }
+ }
+
+ private static StreamGeometry? CreateGeometry(string? data)
+ {
+ return data is null || string.IsNullOrWhiteSpace(data)
+ ? null
+ : StreamGeometry.Parse(data);
+ }
+
+ private static void TrimUnsafe(int capacity)
+ {
+ lock (_Gate)
+ {
+ while (_Map.Count > capacity && _Lru.Last is not null)
+ {
+ var last = _Lru.Last;
+ _Lru.RemoveLast();
+ _Map.Remove(last.Value.Key);
+ }
+ }
+ }
+
+ public static void Clear()
+ {
+ lock (_Gate)
+ {
+ _Map.Clear();
+ _Lru.Clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Core/IconJsonContext.cs b/src/IconPacks.Avalonia.Core/IconJsonContext.cs
new file mode 100644
index 0000000..a8738e6
--- /dev/null
+++ b/src/IconPacks.Avalonia.Core/IconJsonContext.cs
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+using System.Text.Json.Serialization;
+
+namespace IconPacks.Avalonia.Core;
+
+[JsonSourceGenerationOptions(
+ GenerationMode = JsonSourceGenerationMode.Metadata, // works for trimming; use Serialization for NativeAOT if you want write support too
+ PropertyNamingPolicy = JsonKnownNamingPolicy.Unspecified,
+ PropertyNameCaseInsensitive = true
+)]
+[JsonSerializable(typeof(Dictionary))]
+internal partial class IconJsonContext : JsonSerializerContext
+{
+}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Core/IconPacks.Avalonia.Core.csproj b/src/IconPacks.Avalonia.Core/IconPacks.Avalonia.Core.csproj
index bcaed3c..496db40 100644
--- a/src/IconPacks.Avalonia.Core/IconPacks.Avalonia.Core.csproj
+++ b/src/IconPacks.Avalonia.Core/IconPacks.Avalonia.Core.csproj
@@ -3,8 +3,15 @@
IconPacks.Avalonia.Core
IconPacks.Avalonia.Core
+ true
+
+ true
+ true
+ true
+
+
diff --git a/src/IconPacks.Avalonia.Core/PackIconControlBase.axaml b/src/IconPacks.Avalonia.Core/PackIconControlBase.axaml
index db63065..11f392e 100644
--- a/src/IconPacks.Avalonia.Core/PackIconControlBase.axaml
+++ b/src/IconPacks.Avalonia.Core/PackIconControlBase.axaml
@@ -15,6 +15,7 @@
@@ -31,27 +32,6 @@
-
-
-
-
-
-
-
-
-
/// Class PackIconControlBase which is the base class for any PackIcon control.
///
- [PseudoClasses(IconDataFlippedVerticallyPseudoClass)]
- [PseudoClasses(IconFilledPseudoClass)]
- [PseudoClasses(IconOutlinedPseudoClass)]
public abstract class PackIconControlBase : PackIconBase
{
- ///
- /// A string representing the pseudo-class when the icon data is flipped vertically
- ///
- /// ":icon-data-flipped-vertically"
- public const string IconDataFlippedVerticallyPseudoClass = ":icon-data-flipped-vertically";
-
- ///
- /// A string representing the pseudo-class when the icon data is drawn filled
- ///
- /// ":icon-filled"
- public const string IconFilledPseudoClass = ":icon-filled";
-
- ///
- /// A string representing the pseudo-class when the icon data is drawn outlined
- ///
- /// ":icon-outlined"
- public const string IconOutlinedPseudoClass = ":icon-outlined";
-
protected PackIconControlBase()
{
AffectsRender(SpinProperty, SpinDurationProperty, OpacityProperty, SpinEasingFunctionProperty, FlipProperty, RotationAngleProperty);
@@ -168,7 +146,7 @@ public static readonly StyledProperty RotationAngleProperty
false,
BindingMode.OneWay,
null,
- (packIcon, value) =>
+ (_, value) =>
{
if (value < 0)
{
@@ -300,12 +278,5 @@ public bool SpinAutoReverse
get { return this.GetValue(SpinAutoReverseProperty); }
set { this.SetValue(SpinAutoReverseProperty, value); }
}
-
- protected void UpdateIconPseudoClasses(bool filled, bool outlined, bool flipped)
- {
- PseudoClasses.Set(IconFilledPseudoClass, filled);
- PseudoClasses.Set(IconOutlinedPseudoClass, outlined);
- PseudoClasses.Set(IconDataFlippedVerticallyPseudoClass, flipped);
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Core/PackIconDataFactory.cs b/src/IconPacks.Avalonia.Core/PackIconDataFactory.cs
index 50778c3..67e0a92 100644
--- a/src/IconPacks.Avalonia.Core/PackIconDataFactory.cs
+++ b/src/IconPacks.Avalonia.Core/PackIconDataFactory.cs
@@ -1,31 +1,53 @@
using System;
using System.Collections.Generic;
-using System.Collections.ObjectModel;
using System.Text.Json;
-using System.Text.Json.Serialization.Metadata;
using Avalonia.Platform;
namespace IconPacks.Avalonia.Core
{
- public static class PackIconDataFactory where TEnum : struct, Enum
+ public static class PackIconDataFactory
{
- public static Lazy> DataIndex { get; }
-
- static PackIconDataFactory()
+ public static IDictionary Create() where TEnum : struct, Enum
{
- DataIndex = new Lazy>(() => new ReadOnlyDictionary(Create()));
- }
+ using var iconJsonStream = AssetLoader.Open(new Uri($"avares://{typeof(TEnum).Assembly.GetName().Name}/Resources/Icons.json"));
+ var stringDict = JsonSerializer.Deserialize(
+ iconJsonStream, IconJsonContext.Default.DictionaryStringString)
+ ?? new Dictionary();
+
+ var result = new Dictionary(stringDict.Count);
+ foreach (var kvp in stringDict)
+ {
+ if (Enum.TryParse(kvp.Key, out var enumKey))
+ {
+ result[enumKey] = kvp.Value;
+ }
+ }
- public static IDictionary Create()
+ return result;
+ }
+
+ public static IDictionary Create(Type enumType)
{
- using var iconJsonStream = AssetLoader.Open(new Uri($"avares://{typeof(TEnum).Assembly.GetName().Name}/Resources/Icons.json"));
-#pragma warning disable IL2026
- var options = new JsonSerializerOptions
+ using var iconJsonStream = AssetLoader.Open(new Uri($"avares://{enumType.Assembly.GetName().Name}/Resources/Icons.json"));
+ var stringDict = JsonSerializer.Deserialize>(
+ iconJsonStream, IconJsonContext.Default.DictionaryStringString)
+ ?? new Dictionary();
+
+ var result = new Dictionary(stringDict.Count);
+ foreach (var kvp in stringDict)
{
- TypeInfoResolver = new DefaultJsonTypeInfoResolver()
- };
- return System.Text.Json.JsonSerializer.Deserialize>(iconJsonStream, options) ?? [];
-#pragma warning restore IL2026
+ try
+ {
+ var enumKey = Enum.Parse(enumType, kvp.Key);
+ result[(Enum)enumKey] = kvp.Value;
+ }
+ catch
+ {
+ // ignored
+ }
+ }
+
+ return result;
}
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Core/PackIconDataIndex.cs b/src/IconPacks.Avalonia.Core/PackIconDataIndex.cs
new file mode 100644
index 0000000..68addf3
--- /dev/null
+++ b/src/IconPacks.Avalonia.Core/PackIconDataIndex.cs
@@ -0,0 +1,49 @@
+#nullable enable
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+namespace IconPacks.Avalonia.Core;
+
+public static class PackIconDataIndex
+{
+ private static readonly object Gate = new();
+ private static readonly Dictionary> Packs = new();
+
+ public static ReadOnlyDictionary Register(Type enumType, IDictionary? icons = null)
+ {
+ lock (Gate)
+ {
+ if (!Packs.TryGetValue(enumType, out ReadOnlyDictionary? value))
+ {
+ // Convert IDictionary to IDictionary
+ var src = icons ?? PackIconDataFactory.Create(enumType);
+ var dst = new Dictionary(src.Count);
+ foreach (var kv in src)
+ {
+ dst[kv.Key] = kv.Value; // box TKind to Enum
+ }
+
+ value = new ReadOnlyDictionary(dst);
+ Packs[enumType] = value;
+ }
+ return value;
+ }
+ }
+
+ public static bool TryGetPath(Enum kind, out string? path)
+ {
+ var type = kind.GetType();
+ ReadOnlyDictionary? packDictionary;
+ lock (Gate)
+ {
+ if (!Packs.TryGetValue(type, out packDictionary))
+ {
+ packDictionary = Register(kind.GetType());
+ }
+ }
+
+ return packDictionary.TryGetValue(kind, out path);
+ }
+}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Core/PackIconImageExtension.cs b/src/IconPacks.Avalonia.Core/PackIconImageExtension.cs
index e0c52ed..eda8ece 100644
--- a/src/IconPacks.Avalonia.Core/PackIconImageExtension.cs
+++ b/src/IconPacks.Avalonia.Core/PackIconImageExtension.cs
@@ -1,4 +1,5 @@
-using Avalonia.Markup.Xaml;
+using System;
+using Avalonia.Markup.Xaml;
using Avalonia.Media;
namespace IconPacks.Avalonia.Core
@@ -20,11 +21,6 @@ public abstract class BasePackIconImageExtension : MarkupExtension
///
public double RotationAngle { get; set; } = 0d;
- ///
- /// Gets the path data for the given kind.
- ///
- protected abstract string GetPathData(object iconKind);
-
///
/// Gets the ScaleTransform for the given kind.
///
@@ -54,11 +50,11 @@ protected Transform GetTransformGroup(object iconKind)
///
/// Gets the object that will be used for the .
///
- protected virtual DrawingGroup GetDrawingGroup(object iconKind, IBrush foregroundBrush, string path)
+ protected virtual DrawingGroup GetDrawingGroup(object iconKind, IBrush foregroundBrush, StreamGeometry path)
{
var geometryDrawing = new GeometryDrawing
{
- Geometry = StreamGeometry.Parse(path),
+ Geometry = path,
Brush = foregroundBrush
};
@@ -76,9 +72,9 @@ protected virtual DrawingGroup GetDrawingGroup(object iconKind, IBrush foregroun
///
protected IImage CreateImageSource(object iconKind, IBrush foregroundBrush)
{
- var path = this.GetPathData(iconKind);
+ var path = PackIconGeometryCache.GetOrAdd((Enum)iconKind);
- if (string.IsNullOrEmpty(path))
+ if (path is null)
{
return null;
}
diff --git a/src/IconPacks.Avalonia.Entypo/Converter/PackIconEntypoKindToImageConverter.cs b/src/IconPacks.Avalonia.Entypo/Converter/PackIconEntypoKindToImageConverter.cs
index a7ff2db..745f234 100644
--- a/src/IconPacks.Avalonia.Entypo/Converter/PackIconEntypoKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Entypo/Converter/PackIconEntypoKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Entypo.Converter
{
public class PackIconEntypoKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconEntypoKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Entypo/PackIconEntypo.cs b/src/IconPacks.Avalonia.Entypo/PackIconEntypo.cs
index c46caa7..820af6f 100644
--- a/src/IconPacks.Avalonia.Entypo/PackIconEntypo.cs
+++ b/src/IconPacks.Avalonia.Entypo/PackIconEntypo.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Entypo
[MetaData("Entypo+", "http://www.entypo.com/", "https://creativecommons.org/licenses/by-sa/4.0/")]
public class PackIconEntypo : PackIconControlBase
{
- public PackIconEntypo()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Entypo/PackIconEntypoImageExtension.cs b/src/IconPacks.Avalonia.Entypo/PackIconEntypoImageExtension.cs
index 8359e8d..aabaf25 100644
--- a/src/IconPacks.Avalonia.Entypo/PackIconEntypoImageExtension.cs
+++ b/src/IconPacks.Avalonia.Entypo/PackIconEntypoImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconEntypoKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.EvaIcons/Converter/PackIconEvaIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.EvaIcons/Converter/PackIconEvaIconsKindToImageConverter.cs
index c38defc..f4fccba 100644
--- a/src/IconPacks.Avalonia.EvaIcons/Converter/PackIconEvaIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.EvaIcons/Converter/PackIconEvaIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.EvaIcons.Converter
{
public class PackIconEvaIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconEvaIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIcons.cs b/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIcons.cs
index c1d7dab..3e507b3 100644
--- a/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIcons.cs
+++ b/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.EvaIcons
[MetaData("Eva Icons", "https://akveo.github.io/eva-icons/", "https://github.com/akveo/eva-icons/blob/master/LICENSE.txt")]
public class PackIconEvaIcons : PackIconControlBase
{
- public PackIconEvaIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIconsImageExtension.cs b/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIconsImageExtension.cs
index 0280785..2919cd2 100644
--- a/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.EvaIcons/PackIconEvaIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconEvaIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FeatherIcons/Converter/PackIconFeatherIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.FeatherIcons/Converter/PackIconFeatherIconsKindToImageConverter.cs
index d39d3c9..84e9740 100644
--- a/src/IconPacks.Avalonia.FeatherIcons/Converter/PackIconFeatherIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.FeatherIcons/Converter/PackIconFeatherIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.FeatherIcons.Converter
{
public class PackIconFeatherIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFeatherIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIcons.cs b/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIcons.cs
index 45e2d80..9a2e233 100644
--- a/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIcons.cs
+++ b/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.FeatherIcons
[MetaData("Feather Icons", "https://feathericons.com/", "https://github.com/feathericons/feather?tab=MIT-1-ov-file#readme")]
public class PackIconFeatherIcons : PackIconControlBase
{
- public PackIconFeatherIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIconsImageExtension.cs b/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIconsImageExtension.cs
index bfdbfbd..793de7c 100644
--- a/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.FeatherIcons/PackIconFeatherIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFeatherIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FileIcons/Converter/PackIconFileIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.FileIcons/Converter/PackIconFileIconsKindToImageConverter.cs
index 5d814d4..961aca3 100644
--- a/src/IconPacks.Avalonia.FileIcons/Converter/PackIconFileIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.FileIcons/Converter/PackIconFileIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.FileIcons.Converter
{
public class PackIconFileIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFileIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FileIcons/PackIconFileIcons.cs b/src/IconPacks.Avalonia.FileIcons/PackIconFileIcons.cs
index 5a0d4cd..54cb6c2 100644
--- a/src/IconPacks.Avalonia.FileIcons/PackIconFileIcons.cs
+++ b/src/IconPacks.Avalonia.FileIcons/PackIconFileIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.FileIcons
[MetaData("File Icons", "https://github.com/file-icons/icons", "https://github.com/file-icons/atom/blob/master/LICENSE.md")]
public class PackIconFileIcons : PackIconControlBase
{
- public PackIconFileIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.FileIcons/PackIconFileIconsImageExtension.cs b/src/IconPacks.Avalonia.FileIcons/PackIconFileIconsImageExtension.cs
index cadc066..443bf3c 100644
--- a/src/IconPacks.Avalonia.FileIcons/PackIconFileIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.FileIcons/PackIconFileIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFileIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FontAwesome/Converter/PackIconFontAwesomeKindToImageConverter.cs b/src/IconPacks.Avalonia.FontAwesome/Converter/PackIconFontAwesomeKindToImageConverter.cs
index a36036f..33722bd 100644
--- a/src/IconPacks.Avalonia.FontAwesome/Converter/PackIconFontAwesomeKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.FontAwesome/Converter/PackIconFontAwesomeKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.FontAwesome.Converter
{
public class PackIconFontAwesomeKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontAwesomeKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesome.cs b/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesome.cs
index 8972dc5..c915c2e 100644
--- a/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesome.cs
+++ b/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesome.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.FontAwesome
[MetaData("Font Awesome Free v7", "https://fontawesome.com/", "https://fontawesome.com/license/free")]
public class PackIconFontAwesome : PackIconControlBase
{
- public PackIconFontAwesome()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesomeImageExtension.cs b/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesomeImageExtension.cs
index 03eb75e..409e8af 100644
--- a/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesomeImageExtension.cs
+++ b/src/IconPacks.Avalonia.FontAwesome/PackIconFontAwesomeImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontAwesomeKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FontAwesome5/Converter/PackIconFontAwesome5KindToImageConverter.cs b/src/IconPacks.Avalonia.FontAwesome5/Converter/PackIconFontAwesome5KindToImageConverter.cs
index e40b3c1..fcdeb93 100644
--- a/src/IconPacks.Avalonia.FontAwesome5/Converter/PackIconFontAwesome5KindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.FontAwesome5/Converter/PackIconFontAwesome5KindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.FontAwesome5.Converter
{
public class PackIconFontAwesome5KindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontAwesome5Kind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5.cs b/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5.cs
index c95577a..c99463e 100644
--- a/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5.cs
+++ b/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.FontAwesome5
[MetaData("Font Awesome Free v5", "https://fontawesome.com/", "https://fontawesome.com/license/free")]
public class PackIconFontAwesome5 : PackIconControlBase
{
- public PackIconFontAwesome5()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5ImageExtension.cs b/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5ImageExtension.cs
index 9e5d8da..a4f8bd6 100644
--- a/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5ImageExtension.cs
+++ b/src/IconPacks.Avalonia.FontAwesome5/PackIconFontAwesome5ImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontAwesome5Kind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FontAwesome6/Converter/PackIconFontAwesome6KindToImageConverter.cs b/src/IconPacks.Avalonia.FontAwesome6/Converter/PackIconFontAwesome6KindToImageConverter.cs
index 0173d2d..aa4cedc 100644
--- a/src/IconPacks.Avalonia.FontAwesome6/Converter/PackIconFontAwesome6KindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.FontAwesome6/Converter/PackIconFontAwesome6KindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.FontAwesome6.Converter
{
public class PackIconFontAwesome6KindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontAwesome6Kind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6.cs b/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6.cs
index f5bb424..87401bb 100644
--- a/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6.cs
+++ b/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.FontAwesome6
[MetaData("Font Awesome Free v6", "https://fontawesome.com/", "https://fontawesome.com/license/free")]
public class PackIconFontAwesome6 : PackIconControlBase
{
- public PackIconFontAwesome6()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6ImageExtension.cs b/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6ImageExtension.cs
index 95b8a71..0349aef 100644
--- a/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6ImageExtension.cs
+++ b/src/IconPacks.Avalonia.FontAwesome6/PackIconFontAwesome6ImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontAwesome6Kind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Fontaudio/Converter/PackIconFontaudioKindToImageConverter.cs b/src/IconPacks.Avalonia.Fontaudio/Converter/PackIconFontaudioKindToImageConverter.cs
index 063162e..fb97a5d 100644
--- a/src/IconPacks.Avalonia.Fontaudio/Converter/PackIconFontaudioKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Fontaudio/Converter/PackIconFontaudioKindToImageConverter.cs
@@ -1,21 +1,9 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Fontaudio.Converter
{
public class PackIconFontaudioKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontaudioKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudio.cs b/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudio.cs
index 697bbd1..668f1c9 100644
--- a/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudio.cs
+++ b/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudio.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Fontaudio
[MetaData("Fontaudio", "https://github.com/fefanto/fontaudio", "https://github.com/fefanto/fontaudio#license")]
public class PackIconFontaudio : PackIconControlBase
{
- public PackIconFontaudio()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudioImageExtension.cs b/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudioImageExtension.cs
index 2c135c8..a23ca5c 100644
--- a/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudioImageExtension.cs
+++ b/src/IconPacks.Avalonia.Fontaudio/PackIconFontaudioImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontaudioKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Fontisto/Converter/PackIconFontistoKindToImageConverter.cs b/src/IconPacks.Avalonia.Fontisto/Converter/PackIconFontistoKindToImageConverter.cs
index c4401c3..ba51465 100644
--- a/src/IconPacks.Avalonia.Fontisto/Converter/PackIconFontistoKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Fontisto/Converter/PackIconFontistoKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Fontisto.Converter
{
public class PackIconFontistoKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontistoKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Fontisto/PackIconFontisto.cs b/src/IconPacks.Avalonia.Fontisto/PackIconFontisto.cs
index 98da774..7e034e3 100644
--- a/src/IconPacks.Avalonia.Fontisto/PackIconFontisto.cs
+++ b/src/IconPacks.Avalonia.Fontisto/PackIconFontisto.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Fontisto
[MetaData("Fontisto", "https://github.com/kenangundogan/fontisto", "https://github.com/kenangundogan/fontisto?tab=readme-ov-file#license")]
public class PackIconFontisto : PackIconControlBase
{
- public PackIconFontisto()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Fontisto/PackIconFontistoImageExtension.cs b/src/IconPacks.Avalonia.Fontisto/PackIconFontistoImageExtension.cs
index 185022c..482685b 100644
--- a/src/IconPacks.Avalonia.Fontisto/PackIconFontistoImageExtension.cs
+++ b/src/IconPacks.Avalonia.Fontisto/PackIconFontistoImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconFontistoKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.ForkAwesome/Converter/PackIconForkAwesomeKindToImageConverter.cs b/src/IconPacks.Avalonia.ForkAwesome/Converter/PackIconForkAwesomeKindToImageConverter.cs
index 70ec763..06a6417 100644
--- a/src/IconPacks.Avalonia.ForkAwesome/Converter/PackIconForkAwesomeKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.ForkAwesome/Converter/PackIconForkAwesomeKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.ForkAwesome.Converter
{
public class PackIconForkAwesomeKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconForkAwesomeKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesome.cs b/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesome.cs
index 7bc34a9..5186a62 100644
--- a/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesome.cs
+++ b/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesome.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.ForkAwesome
[MetaData("Fork Awesome", "https://forkaweso.me/", "https://github.com/ForkAwesome/Fork-Awesome/blob/master/LICENSES")]
public class PackIconForkAwesome : PackIconControlBase
{
- public PackIconForkAwesome()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesomeImageExtension.cs b/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesomeImageExtension.cs
index 2b6f889..f6294b2 100644
--- a/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesomeImageExtension.cs
+++ b/src/IconPacks.Avalonia.ForkAwesome/PackIconForkAwesomeImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconForkAwesomeKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.GameIcons/Converter/PackIconGameIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.GameIcons/Converter/PackIconGameIconsKindToImageConverter.cs
index a3eaf44..0d2a317 100644
--- a/src/IconPacks.Avalonia.GameIcons/Converter/PackIconGameIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.GameIcons/Converter/PackIconGameIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.GameIcons.Converter
{
public class PackIconGameIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconGameIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.GameIcons/PackIconGameIcons.cs b/src/IconPacks.Avalonia.GameIcons/PackIconGameIcons.cs
index a425022..170cf0b 100644
--- a/src/IconPacks.Avalonia.GameIcons/PackIconGameIcons.cs
+++ b/src/IconPacks.Avalonia.GameIcons/PackIconGameIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.GameIcons
[MetaData("Game Icons", "https://github.com/game-icons/icons", "https://github.com/game-icons/icons?tab=License-1-ov-file")]
public class PackIconGameIcons : PackIconControlBase
{
- public PackIconGameIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.GameIcons/PackIconGameIconsImageExtension.cs b/src/IconPacks.Avalonia.GameIcons/PackIconGameIconsImageExtension.cs
index d688a3c..9c2b3dd 100644
--- a/src/IconPacks.Avalonia.GameIcons/PackIconGameIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.GameIcons/PackIconGameIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconGameIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Ionicons/Converter/PackIconIoniconsKindToImageConverter.cs b/src/IconPacks.Avalonia.Ionicons/Converter/PackIconIoniconsKindToImageConverter.cs
index 1df0a9f..16063ac 100644
--- a/src/IconPacks.Avalonia.Ionicons/Converter/PackIconIoniconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Ionicons/Converter/PackIconIoniconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Ionicons.Converter
{
public class PackIconIoniconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconIoniconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Ionicons/PackIconIonicons.cs b/src/IconPacks.Avalonia.Ionicons/PackIconIonicons.cs
index 9363139..fe5406b 100644
--- a/src/IconPacks.Avalonia.Ionicons/PackIconIonicons.cs
+++ b/src/IconPacks.Avalonia.Ionicons/PackIconIonicons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Ionicons
[MetaData("Ionicons", "https://ionicons.com/", "https://github.com/ionic-team/ionicons/blob/master/LICENSE")]
public class PackIconIonicons : PackIconControlBase
{
- public PackIconIonicons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Ionicons/PackIconIoniconsImageExtension.cs b/src/IconPacks.Avalonia.Ionicons/PackIconIoniconsImageExtension.cs
index c211f86..09fcca4 100644
--- a/src/IconPacks.Avalonia.Ionicons/PackIconIoniconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Ionicons/PackIconIoniconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconIoniconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.JamIcons/Converter/PackIconJamIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.JamIcons/Converter/PackIconJamIconsKindToImageConverter.cs
index 5ab883a..9810142 100644
--- a/src/IconPacks.Avalonia.JamIcons/Converter/PackIconJamIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.JamIcons/Converter/PackIconJamIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.JamIcons.Converter
{
public class PackIconJamIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconJamIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.JamIcons/PackIconJamIcons.cs b/src/IconPacks.Avalonia.JamIcons/PackIconJamIcons.cs
index 0ca3cda..b9bd155 100644
--- a/src/IconPacks.Avalonia.JamIcons/PackIconJamIcons.cs
+++ b/src/IconPacks.Avalonia.JamIcons/PackIconJamIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.JamIcons
[MetaData("Jam Icons", "https://jam-icons.com/", "https://github.com/michaelampr/jam/blob/master/LICENSE")]
public class PackIconJamIcons : PackIconControlBase
{
- public PackIconJamIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.JamIcons/PackIconJamIconsImageExtension.cs b/src/IconPacks.Avalonia.JamIcons/PackIconJamIconsImageExtension.cs
index 8452fed..5339d82 100644
--- a/src/IconPacks.Avalonia.JamIcons/PackIconJamIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.JamIcons/PackIconJamIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconJamIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.KeyruneIcons/Converter/PackIconKeyruneIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.KeyruneIcons/Converter/PackIconKeyruneIconsKindToImageConverter.cs
index 1ea141f..8b668d1 100644
--- a/src/IconPacks.Avalonia.KeyruneIcons/Converter/PackIconKeyruneIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.KeyruneIcons/Converter/PackIconKeyruneIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.KeyruneIcons.Converter
{
public class PackIconKeyruneIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconKeyruneIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIcons.cs b/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIcons.cs
index d4807b5..a4661a1 100644
--- a/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIcons.cs
+++ b/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.KeyruneIcons
[MetaData("Keyrune Icons", "https://github.com/andrewgioia/keyrune", "https://github.com/andrewgioia/keyrune?tab=License-1-ov-file")]
public class PackIconKeyruneIcons : PackIconControlBase
{
- public PackIconKeyruneIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIconsImageExtension.cs b/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIconsImageExtension.cs
index 05fa55c..6b937bd 100644
--- a/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.KeyruneIcons/PackIconKeyruneIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconKeyruneIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Lucide/Converter/PackIconLucideKindToImageConverter.cs b/src/IconPacks.Avalonia.Lucide/Converter/PackIconLucideKindToImageConverter.cs
index 907ace6..4694390 100644
--- a/src/IconPacks.Avalonia.Lucide/Converter/PackIconLucideKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Lucide/Converter/PackIconLucideKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Lucide.Converter
{
public class PackIconLucideKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconLucideKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Lucide/PackIconLucide.cs b/src/IconPacks.Avalonia.Lucide/PackIconLucide.cs
index 8d1e68b..749e383 100644
--- a/src/IconPacks.Avalonia.Lucide/PackIconLucide.cs
+++ b/src/IconPacks.Avalonia.Lucide/PackIconLucide.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Lucide
[MetaData("Lucide Icons", "https://github.com/lucide-icons/lucide", "https://github.com/lucide-icons/lucide?tab=ISC-1-ov-file#readme")]
public class PackIconLucide : PackIconControlBase
{
- public PackIconLucide()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Lucide/PackIconLucideImageExtension.cs b/src/IconPacks.Avalonia.Lucide/PackIconLucideImageExtension.cs
index 6f927ef..f6427a4 100644
--- a/src/IconPacks.Avalonia.Lucide/PackIconLucideImageExtension.cs
+++ b/src/IconPacks.Avalonia.Lucide/PackIconLucideImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconLucideKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Material/Converter/PackIconMaterialKindToImageConverter.cs b/src/IconPacks.Avalonia.Material/Converter/PackIconMaterialKindToImageConverter.cs
index c412c61..3d782a7 100644
--- a/src/IconPacks.Avalonia.Material/Converter/PackIconMaterialKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Material/Converter/PackIconMaterialKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Material.Converter
{
public class PackIconMaterialKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMaterialKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Material/PackIconMaterial.cs b/src/IconPacks.Avalonia.Material/PackIconMaterial.cs
index 8c358f2..5fca1ed 100644
--- a/src/IconPacks.Avalonia.Material/PackIconMaterial.cs
+++ b/src/IconPacks.Avalonia.Material/PackIconMaterial.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Material
[MetaData("Material Design Icons", "https://pictogrammers.com/library/mdi/", "https://github.com/Templarian/MaterialDesign?tab=License-1-ov-file#readme")]
public class PackIconMaterial : PackIconControlBase
{
- public PackIconMaterial()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Material/PackIconMaterialImageExtension.cs b/src/IconPacks.Avalonia.Material/PackIconMaterialImageExtension.cs
index 7efc64c..b7a50f2 100644
--- a/src/IconPacks.Avalonia.Material/PackIconMaterialImageExtension.cs
+++ b/src/IconPacks.Avalonia.Material/PackIconMaterialImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMaterialKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MaterialDesign/Converter/PackIconMaterialDesignKindToImageConverter.cs b/src/IconPacks.Avalonia.MaterialDesign/Converter/PackIconMaterialDesignKindToImageConverter.cs
index ab00b08..111e5e2 100644
--- a/src/IconPacks.Avalonia.MaterialDesign/Converter/PackIconMaterialDesignKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.MaterialDesign/Converter/PackIconMaterialDesignKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.MaterialDesign.Converter
{
public class PackIconMaterialDesignKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMaterialDesignKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesign.cs b/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesign.cs
index 74646e4..d41a17a 100644
--- a/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesign.cs
+++ b/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesign.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.MaterialDesign
[MetaData("Material Icons (Google)", "https://github.com/marella/material-icons", "https://github.com/marella/material-icons?tab=Apache-2.0-1-ov-file")]
public class PackIconMaterialDesign : PackIconControlBase
{
- public PackIconMaterialDesign()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesignImageExtension.cs b/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesignImageExtension.cs
index 7c9fba0..7007953 100644
--- a/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesignImageExtension.cs
+++ b/src/IconPacks.Avalonia.MaterialDesign/PackIconMaterialDesignImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMaterialDesignKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MaterialLight/Converter/PackIconMaterialLightKindToImageConverter.cs b/src/IconPacks.Avalonia.MaterialLight/Converter/PackIconMaterialLightKindToImageConverter.cs
index 3b65c98..bc9b901 100644
--- a/src/IconPacks.Avalonia.MaterialLight/Converter/PackIconMaterialLightKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.MaterialLight/Converter/PackIconMaterialLightKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.MaterialLight.Converter
{
public class PackIconMaterialLightKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMaterialLightKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLight.cs b/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLight.cs
index 4183916..7c71b45 100644
--- a/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLight.cs
+++ b/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLight.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.MaterialLight
[MetaData("Material Design Icons Light", "https://github.com/Templarian/MaterialDesignLight", "https://github.com/Templarian/MaterialDesignLight/blob/master/LICENSE.md")]
public class PackIconMaterialLight : PackIconControlBase
{
- public PackIconMaterialLight()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLightImageExtension.cs b/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLightImageExtension.cs
index 0bebda8..c5d133b 100644
--- a/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLightImageExtension.cs
+++ b/src/IconPacks.Avalonia.MaterialLight/PackIconMaterialLightImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMaterialLightKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MemoryIcons/Converter/PackIconMemoryIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.MemoryIcons/Converter/PackIconMemoryIconsKindToImageConverter.cs
index 9734555..380fbfe 100644
--- a/src/IconPacks.Avalonia.MemoryIcons/Converter/PackIconMemoryIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.MemoryIcons/Converter/PackIconMemoryIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.MemoryIcons.Converter
{
public class PackIconMemoryIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMemoryIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIcons.cs b/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIcons.cs
index 4d40f9e..36c690c 100644
--- a/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIcons.cs
+++ b/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.MemoryIcons
[MetaData("Memory Icons", "https://pictogrammers.com/library/memory/", "https://github.com/Pictogrammers/Memory?tab=License-1-ov-file#readme")]
public class PackIconMemoryIcons : PackIconControlBase
{
- public PackIconMemoryIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIconsImageExtension.cs b/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIconsImageExtension.cs
index 426c8e6..1a90cf2 100644
--- a/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.MemoryIcons/PackIconMemoryIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMemoryIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Microns/Converter/PackIconMicronsKindToImageConverter.cs b/src/IconPacks.Avalonia.Microns/Converter/PackIconMicronsKindToImageConverter.cs
index 121d742..f42a610 100644
--- a/src/IconPacks.Avalonia.Microns/Converter/PackIconMicronsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Microns/Converter/PackIconMicronsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Microns.Converter
{
public class PackIconMicronsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMicronsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Microns/PackIconMicrons.cs b/src/IconPacks.Avalonia.Microns/PackIconMicrons.cs
index e8afe27..1a5b08e 100644
--- a/src/IconPacks.Avalonia.Microns/PackIconMicrons.cs
+++ b/src/IconPacks.Avalonia.Microns/PackIconMicrons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Microns
[MetaData("Microns", "https://github.com/stephenhutchings/microns", "https://github.com/stephenhutchings/microns?tab=License-1-ov-file#readme")]
public class PackIconMicrons : PackIconControlBase
{
- public PackIconMicrons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Microns/PackIconMicronsImageExtension.cs b/src/IconPacks.Avalonia.Microns/PackIconMicronsImageExtension.cs
index ade945d..d049f53 100644
--- a/src/IconPacks.Avalonia.Microns/PackIconMicronsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Microns/PackIconMicronsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMicronsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MingCuteIcons/Converter/PackIconMingCuteIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.MingCuteIcons/Converter/PackIconMingCuteIconsKindToImageConverter.cs
index b6199f3..e1b50a4 100644
--- a/src/IconPacks.Avalonia.MingCuteIcons/Converter/PackIconMingCuteIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.MingCuteIcons/Converter/PackIconMingCuteIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.MingCuteIcons.Converter
{
public class PackIconMingCuteIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMingCuteIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIcons.cs b/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIcons.cs
index 0af2ddb..11d3e69 100644
--- a/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIcons.cs
+++ b/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.MingCuteIcons
[MetaData("MingCute Icon", "https://github.com/Richard9394/MingCute", "https://github.com/Richard9394/MingCute?tab=Apache-2.0-1-ov-file")]
public class PackIconMingCuteIcons : PackIconControlBase
{
- public PackIconMingCuteIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIconsImageExtension.cs b/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIconsImageExtension.cs
index 2b0d4a8..9011e56 100644
--- a/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.MingCuteIcons/PackIconMingCuteIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMingCuteIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Modern/Converter/PackIconModernKindToImageConverter.cs b/src/IconPacks.Avalonia.Modern/Converter/PackIconModernKindToImageConverter.cs
index 479bb1b..b141ff4 100644
--- a/src/IconPacks.Avalonia.Modern/Converter/PackIconModernKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Modern/Converter/PackIconModernKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Modern.Converter
{
public class PackIconModernKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconModernKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Modern/PackIconModern.cs b/src/IconPacks.Avalonia.Modern/PackIconModern.cs
index 3d1e45e..1cf01f6 100644
--- a/src/IconPacks.Avalonia.Modern/PackIconModern.cs
+++ b/src/IconPacks.Avalonia.Modern/PackIconModern.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Modern
[MetaData("Modern UI Icons", "https://github.com/Templarian/WindowsIcons", "https://github.com/Templarian/WindowsIcons/blob/master/WindowsPhone/license.txt")]
public class PackIconModern : PackIconControlBase
{
- public PackIconModern()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Modern/PackIconModernImageExtension.cs b/src/IconPacks.Avalonia.Modern/PackIconModernImageExtension.cs
index 06bedfc..5f3abca 100644
--- a/src/IconPacks.Avalonia.Modern/PackIconModernImageExtension.cs
+++ b/src/IconPacks.Avalonia.Modern/PackIconModernImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconModernKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MynaUIIcons/Converter/PackIconMynaUIIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.MynaUIIcons/Converter/PackIconMynaUIIconsKindToImageConverter.cs
index 0d25d60..a24f5cc 100644
--- a/src/IconPacks.Avalonia.MynaUIIcons/Converter/PackIconMynaUIIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.MynaUIIcons/Converter/PackIconMynaUIIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.MynaUIIcons.Converter
{
public class PackIconMynaUIIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMynaUIIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIcons.cs b/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIcons.cs
index 09dfcc7..892a8b0 100644
--- a/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIcons.cs
+++ b/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.MynaUIIcons
[MetaData("MynaUI Icons", "https://github.com/praveenjuge/mynaui-icons", "https://github.com/praveenjuge/mynaui-icons?tab=MIT-1-ov-file")]
public class PackIconMynaUIIcons : PackIconControlBase
{
- public PackIconMynaUIIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIconsImageExtension.cs b/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIconsImageExtension.cs
index 99c45dc..fda8950 100644
--- a/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.MynaUIIcons/PackIconMynaUIIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconMynaUIIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Octicons/Converter/PackIconOcticonsKindToImageConverter.cs b/src/IconPacks.Avalonia.Octicons/Converter/PackIconOcticonsKindToImageConverter.cs
index 082c731..be15827 100644
--- a/src/IconPacks.Avalonia.Octicons/Converter/PackIconOcticonsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Octicons/Converter/PackIconOcticonsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Octicons.Converter
{
public class PackIconOcticonsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconOcticonsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Octicons/PackIconOcticons.cs b/src/IconPacks.Avalonia.Octicons/PackIconOcticons.cs
index 10df441..863e439 100644
--- a/src/IconPacks.Avalonia.Octicons/PackIconOcticons.cs
+++ b/src/IconPacks.Avalonia.Octicons/PackIconOcticons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Octicons
[MetaData("Primer Octicons (GitHub)", "https://github.com/primer/octicons", "https://github.com/primer/octicons?tab=MIT-1-ov-file#readme")]
public class PackIconOcticons : PackIconControlBase
{
- public PackIconOcticons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Octicons/PackIconOcticonsImageExtension.cs b/src/IconPacks.Avalonia.Octicons/PackIconOcticonsImageExtension.cs
index f5f1463..11a3a58 100644
--- a/src/IconPacks.Avalonia.Octicons/PackIconOcticonsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Octicons/PackIconOcticonsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconOcticonsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.PhosphorIcons/Converter/PackIconPhosphorIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.PhosphorIcons/Converter/PackIconPhosphorIconsKindToImageConverter.cs
index 642112f..c3d2df9 100644
--- a/src/IconPacks.Avalonia.PhosphorIcons/Converter/PackIconPhosphorIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.PhosphorIcons/Converter/PackIconPhosphorIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.PhosphorIcons.Converter
{
public class PackIconPhosphorIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconPhosphorIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIcons.cs b/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIcons.cs
index 76200de..42de03b 100644
--- a/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIcons.cs
+++ b/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.PhosphorIcons
[MetaData("Phosphor Icons", "https://phosphoricons.com/", "https://github.com/phosphor-icons/core?tab=MIT-1-ov-file#readme")]
public class PackIconPhosphorIcons : PackIconControlBase
{
- public PackIconPhosphorIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIconsImageExtension.cs b/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIconsImageExtension.cs
index 91e6bad..781e889 100644
--- a/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.PhosphorIcons/PackIconPhosphorIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconPhosphorIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.PicolIcons/Converter/PackIconPicolIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.PicolIcons/Converter/PackIconPicolIconsKindToImageConverter.cs
index fe6da36..6f7b5d4 100644
--- a/src/IconPacks.Avalonia.PicolIcons/Converter/PackIconPicolIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.PicolIcons/Converter/PackIconPicolIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.PicolIcons.Converter
{
public class PackIconPicolIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconPicolIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIcons.cs b/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIcons.cs
index 5d408b3..b21d05a 100644
--- a/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIcons.cs
+++ b/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.PicolIcons
[MetaData("PICOL Icons", "https://github.com/PicolSigns/Icons", "https://github.com/PicolSigns/Icons/blob/master/LICENSE")]
public class PackIconPicolIcons : PackIconControlBase
{
- public PackIconPicolIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIconsImageExtension.cs b/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIconsImageExtension.cs
index e303eca..6ffe1ba 100644
--- a/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.PicolIcons/PackIconPicolIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconPicolIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.PixelartIcons/Converter/PackIconPixelartIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.PixelartIcons/Converter/PackIconPixelartIconsKindToImageConverter.cs
index 927fd01..9b74cc4 100644
--- a/src/IconPacks.Avalonia.PixelartIcons/Converter/PackIconPixelartIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.PixelartIcons/Converter/PackIconPixelartIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.PixelartIcons.Converter
{
public class PackIconPixelartIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconPixelartIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIcons.cs b/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIcons.cs
index a0e21fd..265bfb5 100644
--- a/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIcons.cs
+++ b/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.PixelartIcons
[MetaData("Pixelarticons", "https://pixelarticons.com/", "https://github.com/halfmage/pixelarticons?tab=MIT-1-ov-file#readme")]
public class PackIconPixelartIcons : PackIconControlBase
{
- public PackIconPixelartIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIconsImageExtension.cs b/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIconsImageExtension.cs
index 1f47f18..51de9ce 100644
--- a/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.PixelartIcons/PackIconPixelartIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconPixelartIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.RPGAwesome/Converter/PackIconRPGAwesomeKindToImageConverter.cs b/src/IconPacks.Avalonia.RPGAwesome/Converter/PackIconRPGAwesomeKindToImageConverter.cs
index 0b08d8b..ecf5fb2 100644
--- a/src/IconPacks.Avalonia.RPGAwesome/Converter/PackIconRPGAwesomeKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.RPGAwesome/Converter/PackIconRPGAwesomeKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.RPGAwesome.Converter
{
public class PackIconRPGAwesomeKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconRPGAwesomeKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesome.cs b/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesome.cs
index b6036ea..60107de 100644
--- a/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesome.cs
+++ b/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesome.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.RPGAwesome
[MetaData("RPG Awesome", "http://nagoshiashumari.github.io/Rpg-Awesome/", "https://github.com/nagoshiashumari/Rpg-Awesome/blob/master/LICENSE.md")]
public class PackIconRPGAwesome : PackIconControlBase
{
- public PackIconRPGAwesome()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesomeImageExtension.cs b/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesomeImageExtension.cs
index 4ed7b94..7f0469d 100644
--- a/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesomeImageExtension.cs
+++ b/src/IconPacks.Avalonia.RPGAwesome/PackIconRPGAwesomeImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconRPGAwesomeKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.RadixIcons/Converter/PackIconRadixIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.RadixIcons/Converter/PackIconRadixIconsKindToImageConverter.cs
index 18d1497..8446eba 100644
--- a/src/IconPacks.Avalonia.RadixIcons/Converter/PackIconRadixIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.RadixIcons/Converter/PackIconRadixIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.RadixIcons.Converter
{
public class PackIconRadixIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconRadixIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIcons.cs b/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIcons.cs
index 8450962..e30909a 100644
--- a/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIcons.cs
+++ b/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.RadixIcons
[MetaData("Radix Icons", "https://github.com/radix-ui/icons", "https://github.com/radix-ui/icons?tab=MIT-1-ov-file#readme")]
public class PackIconRadixIcons : PackIconControlBase
{
- public PackIconRadixIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIconsImageExtension.cs b/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIconsImageExtension.cs
index bf09560..4a72e64 100644
--- a/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.RadixIcons/PackIconRadixIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconRadixIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.RemixIcon/Converter/PackIconRemixIconKindToImageConverter.cs b/src/IconPacks.Avalonia.RemixIcon/Converter/PackIconRemixIconKindToImageConverter.cs
index 93814cf..322abfe 100644
--- a/src/IconPacks.Avalonia.RemixIcon/Converter/PackIconRemixIconKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.RemixIcon/Converter/PackIconRemixIconKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.RemixIcon.Converter
{
public class PackIconRemixIconKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconRemixIconKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIcon.cs b/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIcon.cs
index 645f2c0..4ba67fb 100644
--- a/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIcon.cs
+++ b/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIcon.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.RemixIcon
[MetaData("Remix Icon", "https://remixicon.com/", "https://github.com/Remix-Design/RemixIcon/blob/master/License")]
public class PackIconRemixIcon : PackIconControlBase
{
- public PackIconRemixIcon()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIconImageExtension.cs b/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIconImageExtension.cs
index 20861c9..44dd68f 100644
--- a/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIconImageExtension.cs
+++ b/src/IconPacks.Avalonia.RemixIcon/PackIconRemixIconImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconRemixIconKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.SimpleIcons/Converter/PackIconSimpleIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.SimpleIcons/Converter/PackIconSimpleIconsKindToImageConverter.cs
index 93b331a..923b691 100644
--- a/src/IconPacks.Avalonia.SimpleIcons/Converter/PackIconSimpleIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.SimpleIcons/Converter/PackIconSimpleIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.SimpleIcons.Converter
{
public class PackIconSimpleIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconSimpleIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIcons.cs b/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIcons.cs
index 9bc3210..d403078 100644
--- a/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIcons.cs
+++ b/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.SimpleIcons
[MetaData("Simple Icons", "https://github.com/simple-icons/simple-icons", "https://github.com/simple-icons/simple-icons?tab=CC0-1.0-1-ov-file#readme")]
public class PackIconSimpleIcons : PackIconControlBase
{
- public PackIconSimpleIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIconsImageExtension.cs b/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIconsImageExtension.cs
index 0872106..4d7d539 100644
--- a/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.SimpleIcons/PackIconSimpleIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconSimpleIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Typicons/Converter/PackIconTypiconsKindToImageConverter.cs b/src/IconPacks.Avalonia.Typicons/Converter/PackIconTypiconsKindToImageConverter.cs
index 84377b4..a7e6341 100644
--- a/src/IconPacks.Avalonia.Typicons/Converter/PackIconTypiconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Typicons/Converter/PackIconTypiconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Typicons.Converter
{
public class PackIconTypiconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconTypiconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Typicons/PackIconTypicons.cs b/src/IconPacks.Avalonia.Typicons/PackIconTypicons.cs
index b85d18f..2bd40b8 100644
--- a/src/IconPacks.Avalonia.Typicons/PackIconTypicons.cs
+++ b/src/IconPacks.Avalonia.Typicons/PackIconTypicons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Typicons
[MetaData("Typicons", "https://www.s-ings.com/typicons/", "https://github.com/stephenhutchings/typicons.font/blob/master/LICENCE.md")]
public class PackIconTypicons : PackIconControlBase
{
- public PackIconTypicons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Typicons/PackIconTypiconsImageExtension.cs b/src/IconPacks.Avalonia.Typicons/PackIconTypiconsImageExtension.cs
index 09bdc6a..2af2fca 100644
--- a/src/IconPacks.Avalonia.Typicons/PackIconTypiconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Typicons/PackIconTypiconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconTypiconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Unicons/Converter/PackIconUniconsKindToImageConverter.cs b/src/IconPacks.Avalonia.Unicons/Converter/PackIconUniconsKindToImageConverter.cs
index 938e1d7..8815282 100644
--- a/src/IconPacks.Avalonia.Unicons/Converter/PackIconUniconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Unicons/Converter/PackIconUniconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Unicons.Converter
{
public class PackIconUniconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconUniconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Unicons/PackIconUnicons.cs b/src/IconPacks.Avalonia.Unicons/PackIconUnicons.cs
index f8cf0ce..bff4d97 100644
--- a/src/IconPacks.Avalonia.Unicons/PackIconUnicons.cs
+++ b/src/IconPacks.Avalonia.Unicons/PackIconUnicons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Unicons
[MetaData("Unicons", "https://github.com/Iconscout/unicons", "https://github.com/Iconscout/unicons?tab=readme-ov-file#license")]
public class PackIconUnicons : PackIconControlBase
{
- public PackIconUnicons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Unicons/PackIconUniconsImageExtension.cs b/src/IconPacks.Avalonia.Unicons/PackIconUniconsImageExtension.cs
index 9320c61..588af6a 100644
--- a/src/IconPacks.Avalonia.Unicons/PackIconUniconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Unicons/PackIconUniconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconUniconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.VaadinIcons/Converter/PackIconVaadinIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.VaadinIcons/Converter/PackIconVaadinIconsKindToImageConverter.cs
index 8d4fe1c..ff3b0e9 100644
--- a/src/IconPacks.Avalonia.VaadinIcons/Converter/PackIconVaadinIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.VaadinIcons/Converter/PackIconVaadinIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.VaadinIcons.Converter
{
public class PackIconVaadinIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconVaadinIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIcons.cs b/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIcons.cs
index 12579b4..34201d1 100644
--- a/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIcons.cs
+++ b/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.VaadinIcons
[MetaData("Vaadin Icons", "https://vaadin.com/icons", "https://github.com/vaadin/web-components/tree/main/packages/icons#license")]
public class PackIconVaadinIcons : PackIconControlBase
{
- public PackIconVaadinIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIconsImageExtension.cs b/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIconsImageExtension.cs
index b1fc2e6..05c5084 100644
--- a/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.VaadinIcons/PackIconVaadinIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconVaadinIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.WeatherIcons/Converter/PackIconWeatherIconsKindToImageConverter.cs b/src/IconPacks.Avalonia.WeatherIcons/Converter/PackIconWeatherIconsKindToImageConverter.cs
index bc0319e..f94f8f6 100644
--- a/src/IconPacks.Avalonia.WeatherIcons/Converter/PackIconWeatherIconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.WeatherIcons/Converter/PackIconWeatherIconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.WeatherIcons.Converter
{
public class PackIconWeatherIconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconWeatherIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIcons.cs b/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIcons.cs
index 7f4e2eb..8318b82 100644
--- a/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIcons.cs
+++ b/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIcons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.WeatherIcons
[MetaData("Weather Icons", "https://github.com/erikflowers/weather-icons", "https://github.com/erikflowers/weather-icons?tab=readme-ov-file#licensing")]
public class PackIconWeatherIcons : PackIconControlBase
{
- public PackIconWeatherIcons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIconsImageExtension.cs b/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIconsImageExtension.cs
index 62b6284..a70cf96 100644
--- a/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.WeatherIcons/PackIconWeatherIconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconWeatherIconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Zondicons/Converter/PackIconZondiconsKindToImageConverter.cs b/src/IconPacks.Avalonia.Zondicons/Converter/PackIconZondiconsKindToImageConverter.cs
index caaee8f..d579345 100644
--- a/src/IconPacks.Avalonia.Zondicons/Converter/PackIconZondiconsKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia.Zondicons/Converter/PackIconZondiconsKindToImageConverter.cs
@@ -1,21 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Zondicons.Converter
{
public class PackIconZondiconsKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconZondiconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia.Zondicons/PackIconZondicons.cs b/src/IconPacks.Avalonia.Zondicons/PackIconZondicons.cs
index a5dc55b..06fd00d 100644
--- a/src/IconPacks.Avalonia.Zondicons/PackIconZondicons.cs
+++ b/src/IconPacks.Avalonia.Zondicons/PackIconZondicons.cs
@@ -1,5 +1,4 @@
using Avalonia;
-using Avalonia.Media;
using IconPacks.Avalonia.Core;
using IconPacks.Avalonia.Core.Attributes;
@@ -12,11 +11,6 @@ namespace IconPacks.Avalonia.Zondicons
[MetaData("Zondicons", "https://www.zondicons.com/", "https://creativecommons.org/licenses/by/4.0/")]
public class PackIconZondicons : PackIconControlBase
{
- public PackIconZondicons()
- {
- UpdateIconPseudoClasses(true, false, false);
- }
-
public static readonly StyledProperty KindProperty
= AvaloniaProperty.Register(nameof(Kind));
@@ -50,9 +44,7 @@ protected override void UpdateData()
{
if (Kind != default)
{
- string data = null;
- PackIconDataFactory.DataIndex.Value?.TryGetValue(Kind, out data);
- this.Data = data != null ? StreamGeometry.Parse(data) : null;
+ this.Data = PackIconGeometryCache.GetOrAdd(Kind);
}
else
{
diff --git a/src/IconPacks.Avalonia.Zondicons/PackIconZondiconsImageExtension.cs b/src/IconPacks.Avalonia.Zondicons/PackIconZondiconsImageExtension.cs
index a2f715b..5eb4329 100644
--- a/src/IconPacks.Avalonia.Zondicons/PackIconZondiconsImageExtension.cs
+++ b/src/IconPacks.Avalonia.Zondicons/PackIconZondiconsImageExtension.cs
@@ -22,17 +22,5 @@ public override object ProvideValue(IServiceProvider serviceProvider)
{
return CreateImageSource(this.Kind, this.Brush ?? Brushes.Black);
}
-
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- if (iconKind is PackIconZondiconsKind kind)
- {
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- }
-
- return data;
- }
}
}
\ No newline at end of file
diff --git a/src/IconPacks.Avalonia/Converter/PackIconKindToImageConverter.cs b/src/IconPacks.Avalonia/Converter/PackIconKindToImageConverter.cs
index 73bbd5b..38f4ddc 100644
--- a/src/IconPacks.Avalonia/Converter/PackIconKindToImageConverter.cs
+++ b/src/IconPacks.Avalonia/Converter/PackIconKindToImageConverter.cs
@@ -1,188 +1,8 @@
-using Avalonia.Media;
-using IconPacks.Avalonia.Core;
-using IconPacks.Avalonia.Core.Converter;
-using IconPacks.Avalonia.BootstrapIcons;
-using IconPacks.Avalonia.BoxIcons2;
-using IconPacks.Avalonia.BoxIcons;
-using IconPacks.Avalonia.CircumIcons;
-using IconPacks.Avalonia.Codicons;
-using IconPacks.Avalonia.Coolicons;
-using IconPacks.Avalonia.Entypo;
-using IconPacks.Avalonia.EvaIcons;
-using IconPacks.Avalonia.FeatherIcons;
-using IconPacks.Avalonia.FileIcons;
-using IconPacks.Avalonia.Fontaudio;
-using IconPacks.Avalonia.FontAwesome5;
-using IconPacks.Avalonia.FontAwesome6;
-using IconPacks.Avalonia.FontAwesome;
-using IconPacks.Avalonia.Fontisto;
-using IconPacks.Avalonia.ForkAwesome;
-using IconPacks.Avalonia.GameIcons;
-using IconPacks.Avalonia.Ionicons;
-using IconPacks.Avalonia.JamIcons;
-using IconPacks.Avalonia.KeyruneIcons;
-using IconPacks.Avalonia.Lucide;
-using IconPacks.Avalonia.Material;
-using IconPacks.Avalonia.MaterialLight;
-using IconPacks.Avalonia.MaterialDesign;
-using IconPacks.Avalonia.MemoryIcons;
-using IconPacks.Avalonia.Microns;
-using IconPacks.Avalonia.MingCuteIcons;
-using IconPacks.Avalonia.Modern;
-using IconPacks.Avalonia.MynaUIIcons;
-using IconPacks.Avalonia.Octicons;
-using IconPacks.Avalonia.PhosphorIcons;
-using IconPacks.Avalonia.PicolIcons;
-using IconPacks.Avalonia.PixelartIcons;
-using IconPacks.Avalonia.RadixIcons;
-using IconPacks.Avalonia.RemixIcon;
-using IconPacks.Avalonia.RPGAwesome;
-using IconPacks.Avalonia.SimpleIcons;
-using IconPacks.Avalonia.Typicons;
-using IconPacks.Avalonia.Unicons;
-using IconPacks.Avalonia.VaadinIcons;
-using IconPacks.Avalonia.WeatherIcons;
-using IconPacks.Avalonia.Zondicons;
+using IconPacks.Avalonia.Core.Converter;
namespace IconPacks.Avalonia.Converter
{
public class PackIconKindToImageConverter : PackIconKindToImageConverterBase
{
- ///
- protected override string GetPathData(object iconKind)
- {
- string data = null;
- switch (iconKind)
- {
- case PackIconBootstrapIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconBoxIcons2Kind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconBoxIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconCircumIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconCodiconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconCooliconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconEntypoKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconEvaIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFeatherIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFileIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFontaudioKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFontAwesome5Kind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFontAwesome6Kind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFontAwesomeKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconFontistoKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconForkAwesomeKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconGameIconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconIoniconsKind kind:
- PackIconDataFactory.DataIndex.Value?.TryGetValue(kind, out data);
- return data;
- case PackIconJamIconsKind kind:
- PackIconDataFactory