using System; using System.Drawing; namespace Dashboard.Drawing { public class BrushExtension : DrawExtension { private BrushExtension() : base("DB_Brush") { } public static readonly BrushExtension Instance = new BrushExtension(); } public interface IBrush : IDrawResource { } public readonly struct SolidBrush(Color color) : IBrush { public IDrawExtension Kind { get; } = SolidBrushExtension.Instance; public Color Color { get; } = color; public override int GetHashCode() { return HashCode.Combine(Kind, Color); } } public readonly struct GradientBrush(Gradient gradient) : IBrush { public IDrawExtension Kind { get; } = GradientBrushExtension.Instance; public Gradient Gradient { get; } = gradient; public override int GetHashCode() { return HashCode.Combine(Kind, Gradient); } } public class SolidBrushExtension : DrawExtension { private SolidBrushExtension() : base("DB_Brush_solid", new[] { BrushExtension.Instance }) { } public static readonly SolidBrushExtension Instance = new SolidBrushExtension(); } public class GradientBrushExtension : DrawExtension { private GradientBrushExtension() : base("DB_Brush_gradient", new[] { BrushExtension.Instance }) { } public static readonly GradientBrushExtension Instance = new GradientBrushExtension(); } }