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 : IBrush
    {
        public IDrawExtension Kind { get; } = SolidBrushExtension.Instance;
        public Color Color { get; }

        public SolidBrush(Color color)
        {
            Color = color;
        }

        public override int GetHashCode()
        {
            return HashCode.Combine(Kind, Color);
        }
    }

    public class SolidBrushExtension : DrawExtension
    {
        private SolidBrushExtension() : base("DB_Brush_solid", new[] { BrushExtension.Instance }) { }

        public static readonly SolidBrushExtension Instance = new SolidBrushExtension();
    }
}