using OpenCvSharp;

namespace OpenCVStudio_v0
{
    /// <summary>
    /// Хранит контуры и их иерархию,
    /// полученные методом Cv2.FindContours.
    /// </summary>
    public sealed class ContourData
    {
        /// <summary>
        /// Найденные контуры.
        /// Каждый контур представляет собой массив точек.
        /// </summary>
        public OpenCvSharp.Point[][] Contours { get; }

        /// <summary>
        /// Иерархия найденных контуров.
        /// Индексы элементов соответствуют индексам в Contours.
        /// </summary>
        public HierarchyIndex[] Hierarchy { get; }

        /// <summary>
        /// Количество найденных контуров.
        /// </summary>
        public int Count => Contours.Length;

        /// <summary>
        /// Возвращает true, если контуры отсутствуют.
        /// </summary>
        public bool IsEmpty => Contours.Length == 0;

        public ContourData(OpenCvSharp. Point[][]? contours, HierarchyIndex[]? hierarchy)
        {
            Contours = contours ?? Array.Empty<OpenCvSharp.Point[]>();
            Hierarchy = hierarchy ?? Array.Empty<HierarchyIndex>();
        }
    }
}