using System.Drawing; using System.Reflection; namespace Pilz.UI.Symbols; public abstract class BaseSymbolFactory : IBaseSymbolFactory { public abstract string GetImageRessourcePath(TSymbols svgImage); public abstract Assembly GetImageResourceAssembly(); protected virtual Size ResolveCommonSize(SymbolSize size) { return size switch { SymbolSize.Default => Size.Empty, SymbolSize.Small => new Size(16, 16), SymbolSize.Medium => new Size(20, 20), SymbolSize.Large => new Size(32, 32), _ => new Size((int)size, (int)size), }; } public virtual Stream? GetImageRessourceStream(TSymbols svgImage) { var asm = GetImageResourceAssembly(); var path = GetImageRessourcePath(svgImage); return asm.GetManifestResourceStream(path); } }