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

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