using ReportGeneration.Interface;

namespace ReportGeneration.Abstract.Model;

public struct Bounds : IBounds
{
  /// <inheritdoc />
  public string Unit => "px";

  /// <inheritdoc />
  public int? MinWidth { get; set; } = null;

  /// <inheritdoc />
  public int? MinHeight { get; set; } = null;

  /// <inheritdoc />
  public int? MaxWidth { get; set; } = null;

  /// <inheritdoc />
  public int? MaxHeight { get; set; } = null;

  /// <inheritdoc />
  public int? Width { get; set; } = null;

  /// <inheritdoc />
  public int? Height { get; set; } = null;

  public Bounds() { }

  public Bounds(int? size)
  {
    Width = size;
    Height = size;
  }

  public Bounds(int? min, int? max, int? size = null) : this(size)
  {
    MinWidth = min;
    MinHeight = min;

    MaxWidth = max;
    MaxHeight = max;
  }
}