Files
QWERTYkez.OpenXmlProcessors/QWERTYkez.WordProcessor/Builders/Interfaces.cs
T
2026-09-02 16:42:34 +07:00

315 lines
24 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace QWERTYkez.WordProcessor;
public interface ITable
{
/// <summary>Базовый шрифт, используемый по умолчанию для содержимого таблицы.</summary>
FontProps BaseFont { get; }
/// <summary>Добавляет строку в таблицу, настраиваемую с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации строки через <see cref="IRow"/>.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable Row(Action<IRow> configure);
/// <summary>Добавляет строку с указанной высотой, настраиваемую с помощью <paramref name="configure"/>.</summary>
/// <param name="height">Высота строки в сантиметрах.</param>
/// <param name="configure">Делегат для конфигурации строки через <see cref="IRow"/>.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable Row(double height, Action<IRow> configure);
/// <summary>Добавляет строку с ячейками, содержащими заданные тексты, используя указанный шрифт.</summary>
/// <param name="font">Шрифт для всех ячеек строки.</param>
/// <param name="cellTexts">Массив текстов для ячеек.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable RowWithCells(FontProps font, params string[] cellTexts);
/// <summary>Добавляет строку с ячейками, содержащими заданные тексты, используя базовый шрифт таблицы.</summary>
/// <param name="cellTexts">Массив текстов для ячеек.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable RowWithCells(params string[] cellTexts);
/// <summary>Задаёт свойства таблицы: ширину и стиль границ, выравнивание.</summary>
/// <param name="borderWidth">Ширина границ в пунктах (1/8 pt). По умолчанию 8.</param>
/// <param name="borderValues">Стиль границ. По умолчанию <see cref="BorderValues.Single"/>.</param>
/// <param name="tableAlignment">Выравнивание таблицы на странице. По умолчанию <see cref="TableRowAlignmentValues.Center"/>.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable Properties(uint borderWidth = 8, BorderValues? borderValues = null, TableRowAlignmentValues? tableAlignment = null);
/// <summary>Создаёт объект <see cref="Table"/> на основе выполненных настроек.</summary>
/// <returns>Готовый объект <see cref="Table"/> для вставки в документ.</returns>
internal Table Build();
}
public interface IRow
{
/// <summary>Базовый шрифт, используемый по умолчанию для содержимого строки.</summary>
FontProps BaseFont { get; }
/// <summary>Добавляет ячейку, настраиваемую с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации ячейки через <see cref="ICell"/>.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow Cell(Action<ICell> configure);
/// <summary>Добавляет ячейку с заданными свойствами (без текста).</summary>
/// <param name="cellProps">Свойства ячейки (ширина, объединение, вертикальное выравнивание).</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow Cell(CellProps cellProps);
/// <summary>Добавляет ячейку с заданными свойствами и текстом (используется базовый шрифт).</summary>
/// <param name="cellProps">Свойства ячейки.</param>
/// <param name="text">Текст ячейки.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow Cell(CellProps cellProps, string text);
/// <summary>Добавляет ячейку с заданными свойствами, текстом и указанным шрифтом.</summary>
/// <param name="cellProps">Свойства ячейки.</param>
/// <param name="text">Текст ячейки.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow Cell(CellProps cellProps, string text, FontProps font);
/// <summary>Добавляет ячейку с простым текстом (используется базовый шрифт).</summary>
/// <param name="text">Текст ячейки.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow Cell(string text);
/// <summary>Добавляет ячейку с простым текстом и указанным шрифтом.</summary>
/// <param name="text">Текст ячейки.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow Cell(string text, FontProps font);
/// <summary>Добавляет ячейку, содержащую один абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow CellWithPara(Action<IParagraph> configure);
/// <summary>Добавляет ячейку с указанными свойствами, содержащую один абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="cellProps">Свойства ячейки.</param>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow CellWithPara(CellProps cellProps, Action<IParagraph> configure);
/// <summary>Устанавливает точную высоту строки (свойство Exact).</summary>
/// <param name="heightInCm">Высота в сантиметрах.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow SetExactHeight(double heightInCm);
/// <summary>Устанавливает минимальную высоту строки (свойство AtLeast).</summary>
/// <param name="heightInCm">Высота в сантиметрах.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow SetHeight(double heightInCm);
/// <summary>Позволяет напрямую настроить свойства строки <see cref="TableRowProperties"/>.</summary>
/// <param name="configure">Делегат для настройки свойств.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow SetProperties(Action<TableRowProperties> configure);
/// <summary>Создаёт объект <see cref="TableRow"/> на основе выполненных настроек.</summary>
/// <returns>Готовый объект <see cref="TableRow"/> для вставки в таблицу.</returns>
internal TableRow Build();
}
public interface ICell
{
/// <summary>Базовый шрифт, используемый по умолчанию для содержимого ячейки.</summary>
FontProps BaseFont { get; }
/// <summary>Добавляет в ячейку абзац, содержащий математическую формулу.</summary>
/// <param name="configure">Делегат для конфигурации формулы через <see cref="IFormula"/>.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell Formula(Action<IFormula> configure);
/// <summary>Добавляет в ячейку абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell Paragraph(Action<IParagraph> configure);
/// <summary>Добавляет в ячейку абзац, состоящий из нескольких строк текста (разделённых переносами).</summary>
/// <param name="lines">Массив строк, каждая строка будет размещена на новой строке абзаца.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell Paragraph(params string[] lines);
/// <summary>Добавляет в ячейку абзац с указанным текстом и опциональным шрифтом.</summary>
/// <param name="text">Текст абзаца.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell Paragraph(string text, FontProps? font = null);
/// <summary>Устанавливает свойства ячейки (ширина, объединение, вертикальное выравнивание).</summary>
/// <param name="props">Свойства ячейки.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell SetCellProps(CellProps props);
/// <summary>Создаёт объект <see cref="TableCell"/> на основе выполненных настроек.</summary>
/// <returns>Готовый объект <see cref="TableCell"/> для вставки в строку.</returns>
internal TableCell Build();
}
public interface IText
{
/// <summary>Базовый шрифт, используемый по умолчанию для содержимого текстового блока.</summary>
FontProps BaseFont { get; }
/// <summary>Добавляет в документ абзац, содержащий математическую формулу.</summary>
/// <param name="configure">Делегат для конфигурации формулы через <see cref="IFormula"/>.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText Formula(Action<IFormula> configure);
/// <summary>Добавляет абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText Paragraph(Action<IParagraph> configure);
/// <summary>Добавляет абзац, состоящий из нескольких строк текста (разделённых переносами).</summary>
/// <param name="lines">Массив строк, каждая строка будет размещена на новой строке абзаца.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText Paragraph(params string[] lines);
/// <summary>Добавляет абзац с указанным текстом и опциональным шрифтом.</summary>
/// <param name="text">Текст абзаца.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText Paragraph(string text, FontProps? font = null);
/// <summary>Создаёт список абзацев <see cref="DocumentFormat.OpenXml.Wordprocessing.Paragraph"/> на основе выполненных настроек.</summary>
/// <returns>Список готовых абзацев для вставки в документ.</returns>
internal List<Paragraph> Build();
}
public interface IParagraph
{
/// <summary>Базовый шрифт, используемый по умолчанию для содержимого абзаца.</summary>
FontProps BaseFont { get; }
/// <summary>Добавляет в абзац математическую формулу (внутри отдельного <see cref="DocumentFormat.OpenXml.Wordprocessing.Run"/>).</summary>
/// <param name="configure">Делегат для конфигурации формулы через <see cref="IFormula"/>.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph Formula(Action<IFormula> configure);
/// <summary>Добавляет в абзац математическую формулу (внутри отдельного <see cref="DocumentFormat.OpenXml.Wordprocessing.Run"/>) и разрыв строки (<see cref="DocumentFormat.OpenXml.Wordprocessing.Break"/>) в текущий абзац.</summary>
/// <param name="configure">Делегат для конфигурации формулы через <see cref="IFormula"/>.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph FormulaBreak(Action<IFormula> configure);
/// <summary>Добавляет разрыв строки (<see cref="DocumentFormat.OpenXml.Wordprocessing.Break"/>) в текущий абзац.</summary>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph Break();
/// <summary>Добавляет разрыв строки (<see cref="DocumentFormat.OpenXml.Wordprocessing.Break"/>) в текущий абзац.</summary>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph BreakPage();
/// <summary>Добавляет текстовый фрагмент (<see cref="DocumentFormat.OpenXml.Wordprocessing.Run"/>) с указанным текстом и опциональным шрифтом.</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph Run(string text, FontProps? font = null);
/// <summary>Добавляет текстовый фрагмент (<see cref="DocumentFormat.OpenXml.Wordprocessing.Run"/>) с указанным текстом и опциональным шрифтом и разрыв строки (<see cref="DocumentFormat.OpenXml.Wordprocessing.Break"/>) в текущий абзац.</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph RunBreak(string text, FontProps? font = null);
/// <summary>Добавляет текстовый фрагмент с полным контролем над свойствами <see cref="RunProperties"/>.</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="configure">Делегат для настройки свойств фрагмента.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph RunWithCustomProps(string text, Action<RunProperties> configure);
/// <summary>Добавляет текстовый фрагмент, отформатированный как нижний индекс (<see cref="VerticalPositionValues.Subscript"/>).</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="font">Базовый шрифт (свойства <see cref="SubSup"/> будут переопределены).</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph Sub(string text, FontProps? font = null);
/// <summary>Добавляет текстовый фрагмент, отформатированный как верхний индекс (<see cref="VerticalPositionValues.Superscript"/>).</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="font">Базовый шрифт (свойства <see cref="SubSup"/> будут переопределены).</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph Sup(string text, FontProps? font = null);
/// <summary>Устанавливает выравнивание абзаца.</summary>
/// <param name="alignment">Тип выравнивания (лево, право, центр, по ширине).</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph SetAlignment(JustificationValues alignment);
/// <summary>Создаёт объект <see cref="Paragraph"/> на основе выполненных настроек.</summary>
/// <returns>Готовый объект <see cref="Paragraph"/>.</returns>
internal Paragraph Build();
}
public interface IFormula
{
FontProps BaseFont { get; }
IFormula Text(string text);
IFormula Division(string numerator, string denominator);
IFormula Division(string numerator, Action<IFormula> denominator);
IFormula Division(Action<IFormula> numerator, string denominator);
IFormula Division(Action<IFormula> numerator, Action<IFormula> denominator);
IFormula Sup(string baseText, string supText);
IFormula Sup(string baseText, Action<IFormula> supText);
IFormula Sup(Action<IFormula> baseText, string supText);
IFormula Sup(Action<IFormula> baseText, Action<IFormula> supText);
IFormula Sub(string baseText, string subText);
IFormula Sub(string baseText, Action<IFormula> subText);
IFormula Sub(Action<IFormula> baseText, string subText);
IFormula Sub(Action<IFormula> baseText, Action<IFormula> subText);
IFormula SubSup(string baseText, string subText, string supText);
IFormula SubSup(string baseText, string subText, Action<IFormula> supText);
IFormula SubSup(string baseText, Action<IFormula> subText, string supText);
IFormula SubSup(string baseText, Action<IFormula> subText, Action<IFormula> supText);
IFormula SubSup(Action<IFormula> baseText, string subText, string supText);
IFormula SubSup(Action<IFormula> baseText, string subText, Action<IFormula> supText);
IFormula SubSup(Action<IFormula> baseText, Action<IFormula> subText, string supText);
IFormula SubSup(Action<IFormula> baseText, Action<IFormula> subText, Action<IFormula> supText);
IFormula Root(string radicand);
IFormula Root(Action<IFormula> radicand);
IFormula Root(string radicand, string degree);
IFormula Root(string radicand, Action<IFormula> degree);
IFormula Root(Action<IFormula> radicand, string degree);
IFormula Root(Action<IFormula> radicand, Action<IFormula> degree);
IFormula Integral(string function, string differential, string? lowerLimit = null, string? upperLimit = null);
IFormula Integral(string function, string differential, string? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(string function, string differential, Action<IFormula>? lowerLimit = null, string? upperLimit = null);
IFormula Integral(string function, string differential, Action<IFormula>? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(string function, Action<IFormula> differential, string? lowerLimit = null, string? upperLimit = null);
IFormula Integral(string function, Action<IFormula> differential, string? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(string function, Action<IFormula> differential, Action<IFormula>? lowerLimit = null, string? upperLimit = null);
IFormula Integral(string function, Action<IFormula> differential, Action<IFormula>? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(Action<IFormula> function, string differential, string? lowerLimit = null, string? upperLimit = null);
IFormula Integral(Action<IFormula> function, string differential, string? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(Action<IFormula> function, string differential, Action<IFormula>? lowerLimit = null, string? upperLimit = null);
IFormula Integral(Action<IFormula> function, string differential, Action<IFormula>? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(Action<IFormula> function, Action<IFormula> differential, string? lowerLimit = null, string? upperLimit = null);
IFormula Integral(Action<IFormula> function, Action<IFormula> differential, string? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Integral(Action<IFormula> function, Action<IFormula> differential, Action<IFormula>? lowerLimit = null, string? upperLimit = null);
IFormula Integral(Action<IFormula> function, Action<IFormula> differential, Action<IFormula>? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Sum(string expression, string? lowerLimit = null, string? upperLimit = null);
IFormula Sum(string expression, string? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Sum(string expression, Action<IFormula>? lowerLimit = null, string? upperLimit = null);
IFormula Sum(string expression, Action<IFormula>? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Sum(Action<IFormula> expression, string? lowerLimit = null, string? upperLimit = null);
IFormula Sum(Action<IFormula> expression, string? lowerLimit = null, Action<IFormula>? upperLimit = null);
IFormula Sum(Action<IFormula> expression, Action<IFormula>? lowerLimit = null, string? upperLimit = null);
IFormula Sum(Action<IFormula> expression, Action<IFormula>? lowerLimit = null, Action<IFormula>? upperLimit = null);
internal void PushContext(OpenXmlElement element);
internal void PopContext();
}