symbol proxy

This commit is contained in:
Pilzinsel64
2025-08-21 07:56:29 +02:00
parent dc25063ca1
commit 9a0f645e01
9 changed files with 107 additions and 6 deletions

View File

@@ -13,4 +13,6 @@ public interface IRadSymbolFactory<TSymbols> : ISymbolFactory<TSymbols>
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);
}

View File

@@ -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);
}

View File

@@ -59,4 +59,14 @@ public abstract class RadSymbolFactory<TSymbols> : SymbolFactory<TSymbols>, IRad
{
return svg.ToImage();
}
public IRadSymbolProxy GetSvgImage(TSymbols svgImage)
{
return new RadSymbolProxy<TSymbols>(this, svgImage);
}
public IRadSymbolProxy GetSvgImageColored(TSymbols svgImage, Color color)
{
return new RadSymbolProxy<TSymbols>(this, svgImage, color: color);
}
}

View File

@@ -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<TSymbols>(RadSymbolFactory<TSymbols> factory, TSymbols svgImage, Color? color = null) : SymbolProxy<TSymbols>(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);
}
}

View File

@@ -4,6 +4,7 @@ namespace Pilz.UI.WinForms.Symbols;
public interface ISymbolFactory<TSymbols> : IBaseSymbolFactory<TSymbols>
{
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);
}

View File

@@ -0,0 +1,9 @@
using Pilz.UI.Symbols;
namespace Pilz.UI.WinForms.Symbols;
public interface ISymbolProxy
{
Image? GetImage(Size size);
Image? GetImage(SymbolSize size);
}

View File

@@ -4,14 +4,14 @@ namespace Pilz.UI.WinForms.Symbols;
public abstract class SymbolFactory<TSymbols> : BaseSymbolFactory<TSymbols>, ISymbolFactory<TSymbols>
{
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<TSymbols> : BaseSymbolFactory<TSymbols>, ISy
return img;
}
public ISymbolProxy GetImage(TSymbols image)
{
return new SymbolProxy<TSymbols>(this, image);
}
}

View File

@@ -0,0 +1,16 @@
using Pilz.UI.Symbols;
namespace Pilz.UI.WinForms.Symbols;
public class SymbolProxy<TSymbols>(SymbolFactory<TSymbols> factory, TSymbols image) : ISymbolProxy
{
public Image? GetImage(Size size)
{
return factory.GetImage(image, size);
}
public Image? GetImage(SymbolSize size)
{
return factory.GetImage(image, size);
}
}

View File

@@ -1,6 +1,7 @@
using System.Reflection;
namespace Pilz.UI.Symbols;
public interface IBaseSymbolFactory<TSymbols>
{
Assembly GetImageResourceAssembly();