From 9a0f645e019092e8de1fe3697e35d63f30c0248d Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Thu, 21 Aug 2025 07:56:29 +0200 Subject: [PATCH] symbol proxy --- .../Symbols/IRadSymbolFactory.cs | 2 + .../Symbols/IRadSymbolProxy.cs | 15 +++++++ .../Symbols/RadSymbolFactory.cs | 10 +++++ .../Symbols/RadSymbolProxy.cs | 42 +++++++++++++++++++ Pilz.UI.WinForms/Symbols/ISymbolFactory.cs | 5 ++- Pilz.UI.WinForms/Symbols/ISymbolProxy.cs | 9 ++++ Pilz.UI.WinForms/Symbols/SymbolFactory.cs | 13 ++++-- Pilz.UI.WinForms/Symbols/SymbolProxy.cs | 16 +++++++ Pilz.UI/Symbols/IBaseSymbolFactory.cs | 1 + 9 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolProxy.cs create mode 100644 Pilz.UI.WinForms.Telerik/Symbols/RadSymbolProxy.cs create mode 100644 Pilz.UI.WinForms/Symbols/ISymbolProxy.cs create mode 100644 Pilz.UI.WinForms/Symbols/SymbolProxy.cs diff --git a/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolFactory.cs b/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolFactory.cs index 77ddd21..8b12ee9 100644 --- a/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolFactory.cs +++ b/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolFactory.cs @@ -13,4 +13,6 @@ public interface IRadSymbolFactory : ISymbolFactory RadSvgImage GetSvgImage(TSymbols svgImage, SymbolSize size); RadSvgImage GetSvgImageColored(TSymbols svgImage, Size size, Color color); RadSvgImage GetSvgImageColored(TSymbols svgImage, SymbolSize size, Color color); + IRadSymbolProxy GetSvgImage(TSymbols svgImage); + IRadSymbolProxy GetSvgImage(TSymbols svgImage, Color color); } \ No newline at end of file diff --git a/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolProxy.cs b/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolProxy.cs new file mode 100644 index 0000000..15eec77 --- /dev/null +++ b/Pilz.UI.WinForms.Telerik/Symbols/IRadSymbolProxy.cs @@ -0,0 +1,15 @@ +using Pilz.UI.Symbols; +using Pilz.UI.WinForms.Symbols; +using Telerik.WinControls; + +namespace Pilz.UI.WinForms.Telerik.Symbols; + +public interface IRadSymbolProxy : ISymbolProxy +{ + Image GetImageColored(Size size, Color color); + Image GetImageColored(SymbolSize size, Color color); + RadSvgImage GetSvgImage(Size size); + RadSvgImage GetSvgImage(SymbolSize size); + RadSvgImage GetSvgImageColored(Size size, Color color); + RadSvgImage GetSvgImageColored(SymbolSize size, Color color); +} diff --git a/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolFactory.cs b/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolFactory.cs index 4e0b884..42b080d 100644 --- a/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolFactory.cs +++ b/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolFactory.cs @@ -59,4 +59,14 @@ public abstract class RadSymbolFactory : SymbolFactory, IRad { return svg.ToImage(); } + + public IRadSymbolProxy GetSvgImage(TSymbols svgImage) + { + return new RadSymbolProxy(this, svgImage); + } + + public IRadSymbolProxy GetSvgImageColored(TSymbols svgImage, Color color) + { + return new RadSymbolProxy(this, svgImage, color: color); + } } \ No newline at end of file diff --git a/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolProxy.cs b/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolProxy.cs new file mode 100644 index 0000000..ad80508 --- /dev/null +++ b/Pilz.UI.WinForms.Telerik/Symbols/RadSymbolProxy.cs @@ -0,0 +1,42 @@ +using Pilz.UI.Symbols; +using Pilz.UI.WinForms.Symbols; +using Telerik.WinControls; + +namespace Pilz.UI.WinForms.Telerik.Symbols; + +public class RadSymbolProxy(RadSymbolFactory factory, TSymbols svgImage, Color? color = null) : SymbolProxy(factory, svgImage), IRadSymbolProxy +{ + public Image GetImageColored(Size size, Color color) + { + return factory.GetImageColored(svgImage, size, color); + } + + public Image GetImageColored(SymbolSize size, Color color) + { + return factory.GetImageColored(svgImage, size, color); + } + + public RadSvgImage GetSvgImage(Size size) + { + if (color != null) + return factory.GetSvgImageColored(svgImage, size, color.Value); + return factory.GetSvgImage(svgImage, size); + } + + public RadSvgImage GetSvgImage(SymbolSize size) + { + if (color != null) + return factory.GetSvgImageColored(svgImage, size, color.Value); + return factory.GetSvgImage(svgImage, size); + } + + public RadSvgImage GetSvgImageColored(Size size, Color color) + { + return factory.GetSvgImageColored(svgImage, size, color); + } + + public RadSvgImage GetSvgImageColored(SymbolSize size, Color color) + { + return factory.GetSvgImageColored(svgImage, size, color); + } +} diff --git a/Pilz.UI.WinForms/Symbols/ISymbolFactory.cs b/Pilz.UI.WinForms/Symbols/ISymbolFactory.cs index e897680..0ac6e03 100644 --- a/Pilz.UI.WinForms/Symbols/ISymbolFactory.cs +++ b/Pilz.UI.WinForms/Symbols/ISymbolFactory.cs @@ -4,6 +4,7 @@ namespace Pilz.UI.WinForms.Symbols; public interface ISymbolFactory : IBaseSymbolFactory { - Image? GetImage(TSymbols svgImage, Size size); - Image? GetImage(TSymbols svgImage, SymbolSize size); + Image? GetImage(TSymbols image, Size size); + Image? GetImage(TSymbols image, SymbolSize size); + ISymbolProxy GetImage(TSymbols image); } \ No newline at end of file diff --git a/Pilz.UI.WinForms/Symbols/ISymbolProxy.cs b/Pilz.UI.WinForms/Symbols/ISymbolProxy.cs new file mode 100644 index 0000000..1356bf0 --- /dev/null +++ b/Pilz.UI.WinForms/Symbols/ISymbolProxy.cs @@ -0,0 +1,9 @@ +using Pilz.UI.Symbols; + +namespace Pilz.UI.WinForms.Symbols; + +public interface ISymbolProxy +{ + Image? GetImage(Size size); + Image? GetImage(SymbolSize size); +} diff --git a/Pilz.UI.WinForms/Symbols/SymbolFactory.cs b/Pilz.UI.WinForms/Symbols/SymbolFactory.cs index a3998ce..db412ec 100644 --- a/Pilz.UI.WinForms/Symbols/SymbolFactory.cs +++ b/Pilz.UI.WinForms/Symbols/SymbolFactory.cs @@ -4,14 +4,14 @@ namespace Pilz.UI.WinForms.Symbols; public abstract class SymbolFactory : BaseSymbolFactory, ISymbolFactory { - public virtual Image? GetImage(TSymbols svgImage, SymbolSize size) + public virtual Image? GetImage(TSymbols image, SymbolSize size) { - return GetImage(svgImage, ResolveCommonSize(size)); + return GetImage(image, ResolveCommonSize(size)); } - public virtual Image? GetImage(TSymbols svgImage, Size size) + public virtual Image? GetImage(TSymbols image, Size size) { - using var stream = GetImageRessourceStream(svgImage); + using var stream = GetImageRessourceStream(image); if (stream is null) return null; @@ -29,4 +29,9 @@ public abstract class SymbolFactory : BaseSymbolFactory, ISy return img; } + + public ISymbolProxy GetImage(TSymbols image) + { + return new SymbolProxy(this, image); + } } diff --git a/Pilz.UI.WinForms/Symbols/SymbolProxy.cs b/Pilz.UI.WinForms/Symbols/SymbolProxy.cs new file mode 100644 index 0000000..a0dd6c8 --- /dev/null +++ b/Pilz.UI.WinForms/Symbols/SymbolProxy.cs @@ -0,0 +1,16 @@ +using Pilz.UI.Symbols; + +namespace Pilz.UI.WinForms.Symbols; + +public class SymbolProxy(SymbolFactory factory, TSymbols image) : ISymbolProxy +{ + public Image? GetImage(Size size) + { + return factory.GetImage(image, size); + } + + public Image? GetImage(SymbolSize size) + { + return factory.GetImage(image, size); + } +} diff --git a/Pilz.UI/Symbols/IBaseSymbolFactory.cs b/Pilz.UI/Symbols/IBaseSymbolFactory.cs index 2442631..79f0812 100644 --- a/Pilz.UI/Symbols/IBaseSymbolFactory.cs +++ b/Pilz.UI/Symbols/IBaseSymbolFactory.cs @@ -1,6 +1,7 @@ using System.Reflection; namespace Pilz.UI.Symbols; + public interface IBaseSymbolFactory { Assembly GetImageResourceAssembly();