⟨/⟩ 50_Domain/Processing/ProcessingEnums.cs

59 строк · в начало

using Ban.Sdaid.Notation.Documents;

namespace Ban.Sdaid.Icd.Domain.Processing
{

    /// <summary>
    /// Область на кадре-источнике, из которой получено значение. Координаты — в процентах
    /// от размера кадра, чтобы не зависеть от разрешения снимка.
    /// </summary>
    [DomainEntity(DomainEntityKind.ValueObject)]
    public class SourceArea
    {
        /// <summary>Отступ слева, % ширины кадра.</summary>
        public double X { get; init; }

        /// <summary>Отступ сверху, % высоты кадра.</summary>
        public double Y { get; init; }

        /// <summary>Ширина области, % ширины кадра.</summary>
        public double Width { get; init; }

        /// <summary>Высота области, % высоты кадра.</summary>
        public double Height { get; init; }
    }

    /// <summary>Описание доменной сущности <see cref="SourceArea"/>.</summary>
    public class SourceAreaSpec : IDomainEntityDocument
    {
        public System.Type Entity => typeof(SourceArea);

        public string Name => "Область-источник";

        public string Description =>
            @"Прямоугольник на кадре изображения, из которого получено значение поля. Задаётся в процентах от размера кадра.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public static string S1_Purpose = """
            ## Назначение

            Позволяет показать пользователю, откуда взято значение: при проверке карты рядом
            со значением предъявляется вырезанный по этой области фрагмент изображения. Без области
            проверка вырождается в слепое редактирование — сверить значение с бумагой можно только
            разыскивая его глазами по всему кадру.
            """;

        public static string S2_Invariants = """
            ## Инварианты

            - Координаты и размеры задаются в **процентах** от размера кадра, а не в пикселях:
              снимок может быть переснят в другом разрешении, доля кадра при этом сохраняется.
            - Область не выходит за пределы кадра: сумма отступа и размера по каждой оси не превышает 100.
            - Область принадлежит конкретному кадру и теряет смысл в отрыве от него.
            """;
    }
}