using System;
using System.ComponentModel;

namespace OpenCVStudio_v0
{
    /// <summary>
    /// Свойства блока аппроксимации
    /// контуров эллипсами.
    /// </summary>
    public sealed class FitEllipseBlockProperties
    {
        private readonly ProjectBlock projectBlock;

        public FitEllipseBlockProperties(ProjectManager projectManager, ProjectBlock projectBlock)
        {
            ArgumentNullException.ThrowIfNull(projectManager);
            this.projectBlock = projectBlock ?? throw new ArgumentNullException(nameof(projectBlock));
        }

        [Category("Расчёт")]
        [DisplayName("Метод")]
        [Description("Аппроксимирует каждый контур эллипсом. Контур должен содержать не менее пяти точек.")]
        [ReadOnly(true)]
        public string Method => "Cv2.FitEllipse";

        [Category("Расчёт")]
        [DisplayName("Минимум точек")]
        [Description("Минимальное количество точек контура, необходимое для расчёта эллипса.")]
        [ReadOnly(true)]
        public int MinimumPointCount => 5;

        [Category("Блок")]
        [DisplayName("Название")]
        [ReadOnly(true)]
        public string BlockName => projectBlock.Name;

        [Category("Блок")]
        [DisplayName("Тип")]
        [ReadOnly(true)]
        public string BlockType => projectBlock.BlockType;

        [Category("Блок")]
        [DisplayName("Позиция")]
        [ReadOnly(true)]
        public int Position => projectBlock.Order + 1;
    }
}