using Minint.Core.Models;

namespace Minint.Core.Services;

public enum PatternType
{
    Checkerboard,
    HorizontalGradient,
    VerticalGradient,
    HorizontalStripes,
    VerticalStripes,
    ConcentricCircles,
    Tile
}

public interface IPatternGenerator
{
    /// <summary>
    /// Generates a new document with a single layer filled with the specified pattern.
    /// </summary>
    /// <param name="type">Pattern type.</param>
    /// <param name="width">Image width in pixels.</param>
    /// <param name="height">Image height in pixels.</param>
    /// <param name="colors">Colors to use (interpretation depends on pattern type).</param>
    /// <param name="param1">Primary parameter: cell/stripe size, ring width, etc.</param>
    /// <param name="param2">Secondary parameter (optional, pattern-dependent).</param>
    MinintDocument Generate(PatternType type, int width, int height, RgbaColor[] colors, int param1, int param2 = 0);
}
