namespace OpenCVStudio_v0
{
    /// <summary>
    /// Выполняет блок, который может работать
    /// с несколькими типами данных pipeline:
    /// изображением, контурами и вычисленными результатами.
    /// </summary>
    internal interface IPipelineBlockExecutor
    {
        /// <summary>
        /// Уникальный программный тип блока.
        /// Должен совпадать с ProjectBlock.BlockType.
        /// </summary>
        string BlockType { get; }

        /// <summary>
        /// Выполняет обработку текущего состояния pipeline.
        /// </summary>
        /// <param name="context">
        /// Контекст текущего выполнения.
        /// Содержит изображение, контуры и текстовый результат.
        /// </param>
        /// <param name="block">
        /// Настройки выполняемого блока проекта.
        /// </param>
        /// <param name="projectManager">
        /// Менеджер текущего проекта.
        /// </param>
        void Execute(
            PipelineContext context,
            ProjectBlock block,
            ProjectManager projectManager);
    }
}