Перейти к содержанию

RichText

Неизменяемая модель форматированного текста, объединяющая стилизованные текстовые фрагменты, шрифты, градиенты и inline-элементы.

Обзор

RichText представляет стилизованный текст, составленный из множества текстовых фрагментов (TextRun) и опционального inline-содержимого (иконки, текстуры, произвольная графика). Предоставляет две проекции: spans() для полного потока атомов разметки и runs() для совместимости со старыми чисто текстовыми потребителями.

Span'ы и проекции данных

Текст хранится как неизменяемый список RichTextSpan. Текстовые фрагменты (TextRun) содержат последовательности символов с индивидуальными шрифтами, размерами в пикселях, цветами, кернингом (tracking) и трансформациями регистра. Элементы inline-контента (InlineContentSpan) описывают атомарные блоки компоновки с резервным текстом (fallback text), отрисовываемые через процедурные колбэки.

Inline-контент и иконки

Встроенные inline-элементы бесшовно участвуют в текстовом потоке: переносятся по строкам, учитываются при измерении и выравнивании, но не создают отдельных виджетов в иерархии UI. Иконки и кастомные рендереры автоматически наследуют родительские clip-области и трансформации.

Кисти (Brushes) и градиенты

RichText поддерживает процедурные кисти TextBrush. Методы withBrush() и withLinearGradient() позволяют залить все текстовые фрагменты сплошным цветом или плавным линейным градиентом, сохраняя при этом базовый цветовой тинт.

Трансформация и срезы текста

Метод slice(start, end) извлекает подстроку по символьным индексам plain-текста. Полностью входящие в диапазон inline-span'ы сохраняются как графические элементы, а частично пересекающиеся безопасно деградируют до plain-текста. Метод withTextStyle() позволяет пакетно менять размер, межбуквенный интервал и регистр символов.

Builder API

Сборка смешанного текста с иконками выполняется через fluent-строитель RichText.builder(). Параметры стиля (font, size, color, brush, tracking, transform) применяются ко всем последующим вызовам append(), а графика добавляется методами icon() и inline().

Сборка текста с встроенными иконками

RichText text = RichText.builder()
    .append("Статус: ")
    .icon("icon:ok", checkTexture, 12.0f)
    .color(ColorView.rgb(80, 220, 100))
    .append(" Все системы в норме")
    .build();

Применение линейного градиента к тексту

RichText gradientTitle = RichText.gradient(
    "UniGUI Engine",
    Fonts.TITLE,
    18.0f,
    ColorView.rgb(255, 100, 100),
    ColorView.rgb(100, 150, 255),
    45.0f
);

API

RichText::plain(String)

plain(String)

Создаёт простой rich-text из одного фрагмента без явного шрифта и стилей.

Параметр Тип Описание
text String Исходная текстовая строка.

Возвращает RichText: Экземпляр RichText из одного run'а..

RichText::resolve(String)

resolve(String)

Разбирает строку через активный InlineContentResolver, преобразуя текстовые маркеры в inline-контент.

Параметр Тип Описание
text String Исходный текст, возможно содержащий маркеры.

Возвращает RichText: Экземпляр RichText с разрешёнными inline-элементами..

RichText::of(String, FontFace, float)

of(String, FontFace, float)

Создаёт rich-text с указанным шрифтом и размером в пикселях.

Параметр Тип Описание
text String Исходный текст.
font FontFace Гарнитура шрифта или null для стандартного.
pixelSize float Размер шрифта в UI-пикселях.

Возвращает RichText: Экземпляр RichText из одного run'а..

RichText::of(String, FontFace, float, ColorView)

of(String, FontFace, float, ColorView)

Создаёт rich-text с указанным шрифтом, размером и цветом вершин.

Параметр Тип Описание
text String Исходный текст.
font FontFace Гарнитура шрифта или null для дефолтного.
pixelSize float Размер шрифта в UI-пикселях.
color ColorView Цвет текста или null для использования цвета виджета.

Возвращает RichText: Экземпляр RichText из одного run'а..

RichText::brushed(String, FontFace, float, TextBrush)

brushed(String, FontFace, float, TextBrush)

Создаёт rich-text с указанным шрифтом, размером и процедурной кистью.

Параметр Тип Описание
text String Исходный текст.
font FontFace Гарнитура шрифта или null для дефолтного.
pixelSize float Размер шрифта в UI-пикселях.
brush TextBrush Кисть текста или null для сплошной заливки.

Возвращает RichText: Экземпляр RichText из одного run'а..

RichText::gradient(String, FontFace, float, ColorView, ColorView, float)

gradient(String, FontFace, float, ColorView, ColorView, float)

Создаёт rich-text с линейным градиентным заполнением символов.

Параметр Тип Описание
text String Исходный текст.
font FontFace Гарнитура шрифта или null для дефолтного.
pixelSize float Размер шрифта в UI-пикселях.
startColor ColorView Начальный цвет градиента.
endColor ColorView Конечный цвет градиента.
angleDegrees float Угол направления градиента в градусах.

Возвращает RichText: Экземпляр градиентного RichText..

RichText::ofSpans(List)

ofSpans(List)

Создаёт неизменяемый rich-text из полного списка layout-span'ов.

Параметр Тип Описание
spans List Список текстовых run'ов и inline-элементов.

Возвращает RichText: Нормализованный экземпляр RichText..

RichText::builder()

builder()

Создаёт новый fluent builder для пошаговой сборки текста со стилями и иконками.

Возвращает Builder: Новый экземпляр RichText.Builder..

RichText::runs()

runs()

Возвращает неизменяемый список только текстовых фрагментов без inline-элементов.

Возвращает List: Список TextRun..

RichText::spans()

spans()

Возвращает неизменяемый список всех layout-span'ов (текст + inline).

Возвращает List: Полный список RichTextSpan..

RichText::plainText()

plainText()

Возвращает плоское строковое представление всего rich-текста.

Возвращает String: Обычная строка..

RichText::hasInlineContent()

hasInlineContent()

Проверяет, содержит ли текст хотя бы один встроенный inline-элемент.

Возвращает boolean: true, если есть inline-содержимое..

RichText::isEmpty()

isEmpty()

Проверяет, пуст ли текст после нормализации span'ов.

Возвращает boolean: true, если текст пуст..

RichText::withBrush(TextBrush)

withBrush(TextBrush)

Возвращает копию текста, в которой ко всем текстовым фрагментам применена указанная кисть.

Параметр Тип Описание
brush TextBrush Новая кисть или null для сплошной заливки.

Возвращает RichText: Обновлённая копия RichText..

RichText::withTextStyle(Float, Float, TextTransform)

withTextStyle(Float, Float, TextTransform)

Возвращает копию текста с переопределёнными размером, трекингом и регистром символов.

Параметр Тип Описание
pixelSize Float Новый размер шрифта или null для сохранения текущего.
tracking Float Новый межбуквенный интервал или null для сохранения текущего.
transform TextTransform Новая трансформация текста или null для сохранения текущей.

Возвращает RichText: Обновлённая копия RichText..

RichText::withLinearGradient(ColorView, ColorView, float)

withLinearGradient(ColorView, ColorView, float)

Возвращает копию текста с линейным градиентом на всех фрагментах.

Параметр Тип Описание
startColor ColorView Начальный цвет.
endColor ColorView Конечный цвет.
angleDegrees float Угол в градусах.

Возвращает RichText: Обновлённая копия RichText..

RichText::append(RichText)

append(RichText)

Присоединяет другой rich-text в конец текущего.

Параметр Тип Описание
other RichText Добавляемый rich-text или null.

Возвращает RichText: Объединённый экземпляр RichText..

RichText::slice(int, int)

slice(int, int)

Возвращает срез текста по символьным смещениям plain-текста.

Параметр Тип Описание
startInclusive int Индекс начала включительно.
endExclusive int Индекс конца исключительно.

Возвращает RichText: Новый срез RichText..