Files
QWERTYkez.OpenXmlProcessors/QWERTYkez.WordProcessor/Builders/Interfaces.cs
melekhin f5eb667973 0.9.1
2026-06-08 14:31:31 +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 AddRow(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 AddRow(double height, Action<IRow> configure);
/// <summary>Добавляет строку с ячейками, содержащими заданные тексты, используя указанный шрифт.</summary>
/// <param name="font">Шрифт для всех ячеек строки.</param>
/// <param name="cellTexts">Массив текстов для ячеек.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable AddRowWithCells(FontProps font, params string[] cellTexts);
/// <summary>Добавляет строку с ячейками, содержащими заданные тексты, используя базовый шрифт таблицы.</summary>
/// <param name="cellTexts">Массив текстов для ячеек.</param>
/// <returns>Тот же экземпляр <see cref="ITable"/> для цепочки вызовов.</returns>
ITable AddRowWithCells(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 AddCell(Action<ICell> configure);
/// <summary>Добавляет ячейку с заданными свойствами (без текста).</summary>
/// <param name="cellProps">Свойства ячейки (ширина, объединение, вертикальное выравнивание).</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow AddCell(CellProps cellProps);
/// <summary>Добавляет ячейку с заданными свойствами и текстом (используется базовый шрифт).</summary>
/// <param name="cellProps">Свойства ячейки.</param>
/// <param name="text">Текст ячейки.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow AddCell(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 AddCell(CellProps cellProps, string text, FontProps font);
/// <summary>Добавляет ячейку с простым текстом (используется базовый шрифт).</summary>
/// <param name="text">Текст ячейки.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow AddCell(string text);
/// <summary>Добавляет ячейку с простым текстом и указанным шрифтом.</summary>
/// <param name="text">Текст ячейки.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow AddCell(string text, FontProps font);
/// <summary>Добавляет ячейку, содержащую один абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="IRow"/> для цепочки вызовов.</returns>
IRow AddCellWithPara(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 AddCellWithPara(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 AddFormula(Action<IFormula> configure);
/// <summary>Добавляет в ячейку абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell AddParagraph(Action<IParagraph> configure);
/// <summary>Добавляет в ячейку абзац, состоящий из нескольких строк текста (разделённых переносами).</summary>
/// <param name="lines">Массив строк, каждая строка будет размещена на новой строке абзаца.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell AddParagraph(params string[] lines);
/// <summary>Добавляет в ячейку абзац с указанным текстом и опциональным шрифтом.</summary>
/// <param name="text">Текст абзаца.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="ICell"/> для цепочки вызовов.</returns>
ICell AddParagraph(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 AddFormula(Action<IFormula> configure);
/// <summary>Добавляет абзац, построенный с помощью <paramref name="configure"/>.</summary>
/// <param name="configure">Делегат для конфигурации абзаца через <see cref="IParagraph"/>.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText AddParagraph(Action<IParagraph> configure);
/// <summary>Добавляет абзац, состоящий из нескольких строк текста (разделённых переносами).</summary>
/// <param name="lines">Массив строк, каждая строка будет размещена на новой строке абзаца.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText AddParagraph(params string[] lines);
/// <summary>Добавляет абзац с указанным текстом и опциональным шрифтом.</summary>
/// <param name="text">Текст абзаца.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IText"/> для цепочки вызовов.</returns>
IText AddParagraph(string text, FontProps? font = null);
/// <summary>Создаёт список абзацев <see cref="Paragraph"/> на основе выполненных настроек.</summary>
/// <returns>Список готовых абзацев для вставки в документ.</returns>
internal List<Paragraph> Build();
}
public interface IParagraph
{
/// <summary>Базовый шрифт, используемый по умолчанию для содержимого абзаца.</summary>
FontProps BaseFont { get; }
/// <summary>Добавляет в абзац математическую формулу (внутри отдельного <see cref="Run"/>).</summary>
/// <param name="configure">Делегат для конфигурации формулы через <see cref="IFormula"/>.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph AddFormula(Action<IFormula> configure);
/// <summary>Добавляет в абзац математическую формулу (внутри отдельного <see cref="Run"/>) и разрыв строки (<see cref="DocumentFormat.OpenXml.Wordprocessing.Break"/>) в текущий абзац.</summary>
/// <param name="configure">Делегат для конфигурации формулы через <see cref="IFormula"/>.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph AddFormulaBreak(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="Run"/>) с указанным текстом и опциональным шрифтом.</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="font">Шрифт для текста. Если <see langword="null"/>, используется базовый шрифт.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph AddRun(string text, FontProps? font = null);
/// <summary>Добавляет текстовый фрагмент (<see cref="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 AddRunBreak(string text, FontProps? font = null);
/// <summary>Добавляет текстовый фрагмент с полным контролем над свойствами <see cref="RunProperties"/>.</summary>
/// <param name="text">Текст фрагмента.</param>
/// <param name="configure">Делегат для настройки свойств фрагмента.</param>
/// <returns>Тот же экземпляр <see cref="IParagraph"/> для цепочки вызовов.</returns>
IParagraph AddRunWithCustomProps(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 AddSubRun(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 AddSupRun(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();
}