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 GetSvgImage(TSymbols svgImage, SymbolSize size);
RadSvgImage GetSvgImageColored(TSymbols svgImage, Size size, Color color); RadSvgImage GetSvgImageColored(TSymbols svgImage, Size size, Color color);
RadSvgImage GetSvgImageColored(TSymbols svgImage, SymbolSize 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(); 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> public interface ISymbolFactory<TSymbols> : IBaseSymbolFactory<TSymbols>
{ {
Image? GetImage(TSymbols svgImage, Size size); Image? GetImage(TSymbols image, Size size);
Image? GetImage(TSymbols svgImage, SymbolSize 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 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) if (stream is null)
return null; return null;
@@ -29,4 +29,9 @@ public abstract class SymbolFactory<TSymbols> : BaseSymbolFactory<TSymbols>, ISy
return img; 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; using System.Reflection;
namespace Pilz.UI.Symbols; namespace Pilz.UI.Symbols;
public interface IBaseSymbolFactory<TSymbols> public interface IBaseSymbolFactory<TSymbols>
{ {
Assembly GetImageResourceAssembly(); Assembly GetImageResourceAssembly();