namespace QWERTYkez.WordProcessor.Builders; public interface ITable { /// Базовый шрифт, используемый по умолчанию для содержимого таблицы. FontProps BaseFont { get; } /// Добавляет строку в таблицу, настраиваемую с помощью . /// Делегат для конфигурации строки через . /// Тот же экземпляр для цепочки вызовов. ITable AddRow(Action configure); /// Добавляет строку с указанной высотой, настраиваемую с помощью . /// Высота строки в сантиметрах. /// Делегат для конфигурации строки через . /// Тот же экземпляр для цепочки вызовов. ITable AddRow(double height, Action configure); /// Добавляет строку с ячейками, содержащими заданные тексты, используя указанный шрифт. /// Шрифт для всех ячеек строки. /// Массив текстов для ячеек. /// Тот же экземпляр для цепочки вызовов. ITable AddRowWithCells(FontProps font, params string[] cellTexts); /// Добавляет строку с ячейками, содержащими заданные тексты, используя базовый шрифт таблицы. /// Массив текстов для ячеек. /// Тот же экземпляр для цепочки вызовов. ITable AddRowWithCells(params string[] cellTexts); /// Задаёт свойства таблицы: ширину и стиль границ, выравнивание. /// Ширина границ в пунктах (1/8 pt). По умолчанию 8. /// Стиль границ. По умолчанию . /// Выравнивание таблицы на странице. По умолчанию . /// Тот же экземпляр для цепочки вызовов. ITable Properties(uint borderWidth = 8, BorderValues? borderValues = null, TableRowAlignmentValues? tableAlignment = null); /// Создаёт объект на основе выполненных настроек. /// Готовый объект для вставки в документ. internal Table Build(); } public interface IRow { /// Базовый шрифт, используемый по умолчанию для содержимого строки. FontProps BaseFont { get; } /// Добавляет ячейку, настраиваемую с помощью . /// Делегат для конфигурации ячейки через . /// Тот же экземпляр для цепочки вызовов. IRow AddCell(Action configure); /// Добавляет ячейку с заданными свойствами (без текста). /// Свойства ячейки (ширина, объединение, вертикальное выравнивание). /// Тот же экземпляр для цепочки вызовов. IRow AddCell(CellProps cellProps); /// Добавляет ячейку с заданными свойствами и текстом (используется базовый шрифт). /// Свойства ячейки. /// Текст ячейки. /// Тот же экземпляр для цепочки вызовов. IRow AddCell(CellProps cellProps, string text); /// Добавляет ячейку с заданными свойствами, текстом и указанным шрифтом. /// Свойства ячейки. /// Текст ячейки. /// Шрифт для текста. Если , используется базовый шрифт. /// Тот же экземпляр для цепочки вызовов. IRow AddCell(CellProps cellProps, string text, FontProps font); /// Добавляет ячейку с простым текстом (используется базовый шрифт). /// Текст ячейки. /// Тот же экземпляр для цепочки вызовов. IRow AddCell(string text); /// Добавляет ячейку с простым текстом и указанным шрифтом. /// Текст ячейки. /// Шрифт для текста. Если , используется базовый шрифт. /// Тот же экземпляр для цепочки вызовов. IRow AddCell(string text, FontProps font); /// Добавляет ячейку, содержащую один абзац, построенный с помощью . /// Делегат для конфигурации абзаца через . /// Тот же экземпляр для цепочки вызовов. IRow AddCellWithPara(Action configure); /// Добавляет ячейку с указанными свойствами, содержащую один абзац, построенный с помощью . /// Свойства ячейки. /// Делегат для конфигурации абзаца через . /// Тот же экземпляр для цепочки вызовов. IRow AddCellWithPara(CellProps cellProps, Action configure); /// Устанавливает точную высоту строки (свойство Exact). /// Высота в сантиметрах. /// Тот же экземпляр для цепочки вызовов. IRow SetExactHeight(double heightInCm); /// Устанавливает минимальную высоту строки (свойство AtLeast). /// Высота в сантиметрах. /// Тот же экземпляр для цепочки вызовов. IRow SetHeight(double heightInCm); /// Позволяет напрямую настроить свойства строки . /// Делегат для настройки свойств. /// Тот же экземпляр для цепочки вызовов. IRow SetProperties(Action configure); /// Создаёт объект на основе выполненных настроек. /// Готовый объект для вставки в таблицу. internal TableRow Build(); } public interface ICell { /// Базовый шрифт, используемый по умолчанию для содержимого ячейки. FontProps BaseFont { get; } /// Добавляет в ячейку абзац, содержащий математическую формулу. /// Делегат для конфигурации формулы через . /// Тот же экземпляр для цепочки вызовов. ICell AddFormula(Action configure); /// Добавляет в ячейку абзац, построенный с помощью . /// Делегат для конфигурации абзаца через . /// Тот же экземпляр для цепочки вызовов. ICell AddParagraph(Action configure); /// Добавляет в ячейку абзац, состоящий из нескольких строк текста (разделённых переносами). /// Массив строк, каждая строка будет размещена на новой строке абзаца. /// Тот же экземпляр для цепочки вызовов. ICell AddParagraph(params string[] lines); /// Добавляет в ячейку абзац с указанным текстом и опциональным шрифтом. /// Текст абзаца. /// Шрифт для текста. Если , используется базовый шрифт. /// Тот же экземпляр для цепочки вызовов. ICell AddParagraph(string text, FontProps? font = null); /// Устанавливает свойства ячейки (ширина, объединение, вертикальное выравнивание). /// Свойства ячейки. /// Тот же экземпляр для цепочки вызовов. ICell SetCellProps(CellProps props); /// Создаёт объект на основе выполненных настроек. /// Готовый объект для вставки в строку. internal TableCell Build(); } public interface IText { /// Базовый шрифт, используемый по умолчанию для содержимого текстового блока. FontProps BaseFont { get; } /// Добавляет в документ абзац, содержащий математическую формулу. /// Делегат для конфигурации формулы через . /// Тот же экземпляр для цепочки вызовов. IText AddFormula(Action configure); /// Добавляет абзац, построенный с помощью . /// Делегат для конфигурации абзаца через . /// Тот же экземпляр для цепочки вызовов. IText AddParagraph(Action configure); /// Добавляет абзац, состоящий из нескольких строк текста (разделённых переносами). /// Массив строк, каждая строка будет размещена на новой строке абзаца. /// Тот же экземпляр для цепочки вызовов. IText AddParagraph(params string[] lines); /// Добавляет абзац с указанным текстом и опциональным шрифтом. /// Текст абзаца. /// Шрифт для текста. Если , используется базовый шрифт. /// Тот же экземпляр для цепочки вызовов. IText AddParagraph(string text, FontProps? font = null); /// Создаёт список абзацев на основе выполненных настроек. /// Список готовых абзацев для вставки в документ. internal List Build(); } public interface IParagraph { /// Базовый шрифт, используемый по умолчанию для содержимого абзаца. FontProps BaseFont { get; } /// Добавляет в абзац математическую формулу (внутри отдельного ). /// Делегат для конфигурации формулы через . /// Тот же экземпляр для цепочки вызовов. IParagraph AddFormula(Action configure); /// Добавляет в абзац математическую формулу (внутри отдельного ) и разрыв строки () в текущий абзац. /// Делегат для конфигурации формулы через . /// Тот же экземпляр для цепочки вызовов. IParagraph AddFormulaBreak(Action configure); /// Добавляет разрыв строки () в текущий абзац. /// Тот же экземпляр для цепочки вызовов. IParagraph Break(); /// Добавляет разрыв строки () в текущий абзац. /// Тот же экземпляр для цепочки вызовов. IParagraph BreakPage(); /// Добавляет текстовый фрагмент () с указанным текстом и опциональным шрифтом. /// Текст фрагмента. /// Шрифт для текста. Если , используется базовый шрифт. /// Тот же экземпляр для цепочки вызовов. IParagraph AddRun(string text, FontProps? font = null); /// Добавляет текстовый фрагмент () с указанным текстом и опциональным шрифтом и разрыв строки () в текущий абзац. /// Текст фрагмента. /// Шрифт для текста. Если , используется базовый шрифт. /// Тот же экземпляр для цепочки вызовов. IParagraph AddRunBreak(string text, FontProps? font = null); /// Добавляет текстовый фрагмент с полным контролем над свойствами . /// Текст фрагмента. /// Делегат для настройки свойств фрагмента. /// Тот же экземпляр для цепочки вызовов. IParagraph AddRunWithCustomProps(string text, Action configure); /// Добавляет текстовый фрагмент, отформатированный как нижний индекс (). /// Текст фрагмента. /// Базовый шрифт (свойства будут переопределены). /// Тот же экземпляр для цепочки вызовов. IParagraph AddSubRun(string text, FontProps? font = null); /// Добавляет текстовый фрагмент, отформатированный как верхний индекс (). /// Текст фрагмента. /// Базовый шрифт (свойства будут переопределены). /// Тот же экземпляр для цепочки вызовов. IParagraph AddSupRun(string text, FontProps? font = null); /// Устанавливает выравнивание абзаца. /// Тип выравнивания (лево, право, центр, по ширине). /// Тот же экземпляр для цепочки вызовов. IParagraph SetAlignment(JustificationValues alignment); /// Создаёт объект на основе выполненных настроек. /// Готовый объект . internal Paragraph Build(); } public interface IFormula { FontProps BaseFont { get; } IFormula Text(string text); IFormula Division(string numerator, string denominator); IFormula Division(string numerator, Action denominator); IFormula Division(Action numerator, string denominator); IFormula Division(Action numerator, Action denominator); IFormula Sup(string baseText, string supText); IFormula Sup(string baseText, Action supText); IFormula Sup(Action baseText, string supText); IFormula Sup(Action baseText, Action supText); IFormula Sub(string baseText, string subText); IFormula Sub(string baseText, Action subText); IFormula Sub(Action baseText, string subText); IFormula Sub(Action baseText, Action subText); IFormula SubSup(string baseText, string subText, string supText); IFormula SubSup(string baseText, string subText, Action supText); IFormula SubSup(string baseText, Action subText, string supText); IFormula SubSup(string baseText, Action subText, Action supText); IFormula SubSup(Action baseText, string subText, string supText); IFormula SubSup(Action baseText, string subText, Action supText); IFormula SubSup(Action baseText, Action subText, string supText); IFormula SubSup(Action baseText, Action subText, Action supText); IFormula Root(string radicand); IFormula Root(Action radicand); IFormula Root(string radicand, string degree); IFormula Root(string radicand, Action degree); IFormula Root(Action radicand, string degree); IFormula Root(Action radicand, Action degree); IFormula Integral(string function, string differential, string? lowerLimit = null, string? upperLimit = null); IFormula Integral(string function, string differential, string? lowerLimit = null, Action? upperLimit = null); IFormula Integral(string function, string differential, Action? lowerLimit = null, string? upperLimit = null); IFormula Integral(string function, string differential, Action? lowerLimit = null, Action? upperLimit = null); IFormula Integral(string function, Action differential, string? lowerLimit = null, string? upperLimit = null); IFormula Integral(string function, Action differential, string? lowerLimit = null, Action? upperLimit = null); IFormula Integral(string function, Action differential, Action? lowerLimit = null, string? upperLimit = null); IFormula Integral(string function, Action differential, Action? lowerLimit = null, Action? upperLimit = null); IFormula Integral(Action function, string differential, string? lowerLimit = null, string? upperLimit = null); IFormula Integral(Action function, string differential, string? lowerLimit = null, Action? upperLimit = null); IFormula Integral(Action function, string differential, Action? lowerLimit = null, string? upperLimit = null); IFormula Integral(Action function, string differential, Action? lowerLimit = null, Action? upperLimit = null); IFormula Integral(Action function, Action differential, string? lowerLimit = null, string? upperLimit = null); IFormula Integral(Action function, Action differential, string? lowerLimit = null, Action? upperLimit = null); IFormula Integral(Action function, Action differential, Action? lowerLimit = null, string? upperLimit = null); IFormula Integral(Action function, Action differential, Action? lowerLimit = null, Action? upperLimit = null); IFormula Sum(string expression, string? lowerLimit = null, string? upperLimit = null); IFormula Sum(string expression, string? lowerLimit = null, Action? upperLimit = null); IFormula Sum(string expression, Action? lowerLimit = null, string? upperLimit = null); IFormula Sum(string expression, Action? lowerLimit = null, Action? upperLimit = null); IFormula Sum(Action expression, string? lowerLimit = null, string? upperLimit = null); IFormula Sum(Action expression, string? lowerLimit = null, Action? upperLimit = null); IFormula Sum(Action expression, Action? lowerLimit = null, string? upperLimit = null); IFormula Sum(Action expression, Action? lowerLimit = null, Action? upperLimit = null); internal void PushContext(OpenXmlElement element); internal void PopContext(); }