2026-06-08 14:31:31 +07:00
namespace QWERTYkez.WordProcessor ;
2026-06-05 15:58:03 +07:00
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 ( ) ;
}