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();