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

DrawScope

Безопасный draw-list фасад для рендереров виджетов: транслирует высокоуровневые вызовы отрисовки в backend-нейтральные команды, автоматически корректирует pivot трансформаций и предоставляет garbage-free примитивы.

Архитектура и запись команд

DrawScope — это основной фасад отрисовки, передаваемый в кастомные рендереры виджетов (WidgetRender#render(Widget, DrawScope)). Он соединяет процедурное рисование в immediate-стиле с буферизованной draw-list архитектурой UniGUI.

Вместо прямых вызовов OpenGL, Vulkan или Direct3D, DrawScope превращает каждый вызов метода в неизменяемую команду DrawCommand и добавляет её в DrawList текущего кадра. Это обеспечивает автоматический батчинг вызовов отрисовки, многопоточный рендеринг, retained-кэширование и полную переносимость между всеми бэкендами.

Подсистема Основные методы Возможности и архитектура
Базовые фигуры rect, roundedRect, circle, line, path Высокоуровневые 2D-фигуры, настраиваемые через переиспользуемые объекты Paint.
Garbage-Free примитивы rectFilled, rectStroke, circleFilled и др. Отрисовка без аллокаций памяти в куче, принимающая ColorView напрямую без временного Paint.
Текстуры и Nine-Slice texture, textureTinted, nineSlice Отрисовка атласов с UV-координатами, скруглённых текстур и масштабируемых 9-slice панелей.
Отрисовка текста text, addText Отрисовка строк и форматированного RichText с субпиксельным позиционированием.
Прямая геометрия и меши addTriangle, addQuad, addMesh, ribbon Произвольные многоугольники, текстурированные quad'ы, индексированные меши и процедурные ленты.
Векторные пути и каналы pathLineTo, pathArcTo, pathBezier*, channelsSplit Построение интерактивных векторных контуров и многослойная сортировка вывода.
Отсечение (Clipping) pushClip, pushTextClip, popClip Аппаратное scissor-отсечение с защитными полями (bleed) для глифов текста.

Immediate API, отложенное исполнение

Вызов методов DrawScope не приводит к мгновенной отрисовке пикселей на экране. Все команды сохраняются в RenderContext и затем воспроизводятся, объединяются в батчи и исполняются графическим бэкендом.

Трансформации и привязка Pivot

При отрисовке кастомной графики виджета все элементы должны подчиняться его глобальной трансформации (Transform: масштаб, поворот, смещение, скос и pivot). DrawScope согласует это автоматически.

Автоматическая корректировка Pivot (transformFor)

Если DrawScope создан с границами макета виджета (transformBounds), он динамически вычисляет смещение между началом координат виджета и локальными координатами каждой команды:

// Внутренняя логика корректировки pivot:
Transform adjusted = transform.copy();
adjusted.pivot().set(
        transform.pivot().x() + transformBoundsX - commandX,
        transform.pivot().y() + transformBoundsY - commandY);

Это гарантирует, что все нарисованные части (фон, иконки, текст) вращаются и масштабируются как единое целое вокруг общего pivot виджета, а не вокруг своих собственных верхних левых углов.

Дочерние Scope (withTransform)

Метод withTransform(Transform) создаёт легковесный дочерний scope, который пишет в тот же render context, но применяет локальную трансформацию (например, для вращающихся спиннеров или пульсирующих значков):

DrawScope iconScope = scope.withTransform(spinningTransform);
iconScope.texture(iconTexture, 0, 0, 16, 16, paint);

Garbage-Free примитивы отрисовки

В высоконагруженном рендеринге Minecraft (60–144+ FPS) создание временных объектов на каждый кадр вызывает просадки производительности из-за работы сборщика мусора (GC).

DrawScope предоставляет две параллельные группы методов:

  1. Стандартные перегрузки с Paint (rect, circle и др.): Удобны, когда параметры заливки, обводки, шейдера и фильтра инкапсулированы в кэшируемый объект Paint.
  2. Garbage-Free перегрузки (rectFilled, rectStroke, circleFilled и др.): Принимают примитивные float координаты и экземпляры ColorView напрямую. При вызове они производят ноль аллокаций в куче.
Фигура Метод с Paint Garbage-Free метод (ColorView) Влияние на GC
Сплошной прямоугольник scope.rect(x, y, w, h, paint) scope.rectFilled(x, y, w, h, color) Ноль аллокаций
Контур прямоугольника scope.rect(x, y, w, h, paint) scope.rectStroke(x, y, w, h, color, width) Ноль аллокаций
Скруглённый прямоугольник scope.roundedRect(..., paint) scope.roundedRectFilled(..., color) Ноль аллокаций
Круг / Эллипс scope.circle(x, y, w, h, paint) scope.circleFilled(x, y, w, h, color) Ноль аллокаций
Текстурированный Quad scope.texture(tex, placement, ...) scope.addTexturedQuad(tex, x1, y1, ...) Ноль аллокаций

[!TIP] В методах render виджетов всегда отдавайте предпочтение перегрузкам *Filled и *Stroke с константами ColorView для максимальной стабильности FPS.

Текстуры и система Nine-Slice

UniGUI включает гибкую систему работы с 2D-текстурами через DrawScope.

Масштабируемые панели Nine-Slice

Текстуры Nine-Slice (9-patch) позволяют отображать прямоугольные панели произвольного размера без искажения углов и кромок:

  • 4 фиксированных угла: Верхний левый, верхний правый, нижний левый и нижний правый углы рисуются в масштабе 1:1 без растяжения.
  • 4 растягиваемых края: Верхний и нижний края растягиваются по горизонтали, боковые — по вертикали.
  • Центральная область: Масштабируется по обеим осям либо остаётся полностью прозрачной при fillCenter = false.
NineSlice borderSlice = NineSlice.of(windowTexture, 8, 8, 8, 8);
// Отрисовка окна с фоном:
scope.nineSlice(borderSlice, 0, 0, width, height, Paint.NONE, true);
// Отрисовка полой рамки выделения:
scope.nineSlice(borderSlice, 0, 0, width, height, Paint.NONE, false);

Пропорциональная защита от переполнения

Если размеры виджета меньше суммы угловых рамок текстуры, DrawScope автоматически пропорционально ужимает углы (Math.min(srcLeft, width * 0.5f)). Это предотвращает наложение и искажение углов на маленьких кнопках.

Векторные пути, меши и ленты (Ribbons)

Для процедурной графики, графов связей, интерактивных карт и схем DrawScope предоставляет богатый набор векторных операций.

Процедурные ленты (Ribbons)

Метод ribbon(...) строит гладкую текстурированную ленту вдоль произвольной ломаной линии со стыками miter и прямыми торцами:

  • Связи в графах: Идеально для проводов, трубопроводов и соединительных линий в редакторах схем.
  • Повторение текстуры: При использовании текстуры с режимом REPEAT и параметром textureLength, равным длине тайла, текстура повторяется вдоль пути без искажений.

Прямая геометрия и меши

  • Многоугольники: addPolyline, addConvexPolyFilled и addConcavePolyFilled (с триангуляцией через ear-clipping).
  • Меши: addMesh(DrawMesh, TextureHandle) позволяет передавать готовые триангулированные буферы вершин одной командой.
  • Градиенты: addRectFilledMultiColor для 4-точечных плавных градиентов по углам.

Отсечение и иерархия Scissor

Отсечение (clipping) ограничивает рисование прямоугольной областью экрана, что критично для списков с прокруткой, выпадающих меню и текстовых полей.

Обычный Scissor против Text-Safe Clip

// Базовое прямоугольное отсечение:
scope.pushClip(x, y, width, height);
// Отрисовка контента...
scope.popClip();

При выводе шрифтов стандартное аппаратное scissor-отсечение может обрезать антиалиасинг или выступающие части курсивных глифов по границам строки.

Метод DrawScope#pushTextClip автоматически добавляет защитные поля (bleed: слева/справа 1px, сверху 1px, снизу 2px), сохраняя чистые края шрифта и чёткое сглаживание.

Обязательный баланс Push и Pop

Каждый вызов pushClip(...) или pushTextClip(...) обязан завершаться парным вызовом popClip(), как правило внутри блока try / finally:

scope.pushClip(bounds.x(), bounds.y(), bounds.width(), bounds.height());
try {
    renderContent(scope);
} finally {
    scope.popClip();
}

Отрисовка карточки с Nine-Slice шапкой и фоном

@Override
public void render(Widget widget, DrawScope scope) {
    RectView b = widget.layoutBounds();

    // 1. Рисуем тень и скруглённый фон
    scope.roundedRectFilled(b.x() + 2, b.y() + 2, b.width(), b.height(), 6.0f, ColorView.rgba(0, 0, 0, 80));
    scope.roundedRectFilled(b.x(), b.y(), b.width(), b.height(), 6.0f, ColorView.rgb(32, 34, 37));
    scope.roundedRectStroke(b.x(), b.y(), b.width(), b.height(), 6.0f, ColorView.rgb(55, 58, 64), 1.0f);

    // 2. Рисуем 9-slice плашку заголовка
    NineSlice headerSlice = NineSlice.of(cardHeaderTex, 4, 4, 4, 4);
    scope.nineSlice(headerSlice, b.x() + 1, b.y() + 1, b.width() - 2, 28.0f, Paint.NONE, true);

    // 3. Выводим текст с безопасным отсечением
    scope.pushTextClip(b.x() + 10, b.y() + 6, b.width() - 20, 18.0f);
    try {
        scope.addText("Карточка настроек", b.x() + 10, b.y() + 6, b.width() - 20, 18.0f, ColorView.WHITE);
    } finally {
        scope.popClip();
    }
}

Отрисовка процедурной текстурированной ленты между точками

List<DrawPoint> path = List.of(
        new DrawPoint(20.0f, 40.0f),
        new DrawPoint(80.0f, 40.0f),
        new DrawPoint(140.0f, 90.0f),
        new DrawPoint(200.0f, 90.0f)
);

// Рисуем непрерывный кабель или трубку со стыками
RibbonOptions options = RibbonOptions.defaults()
        .closed(false)
        .miterLimit(3.0f);

scope.ribbon(cableTexture, path, 6.0f, 32.0f, ColorView.rgb(0, 200, 255), options);

API

Scope и трансформации

Метод Описание
DrawScope(RenderContext, Transform) Создаёт scope отрисовки без привязки anchor bounds для transform pivot.
DrawScope(RenderContext, Transform, RectView) Создаёт scope отрисовки с границами макета виджета для удержания относительного transform pivot.
context() Возвращает базовый контекст рендеринга, в который записываются команды отрисовки.
transform() Возвращает текущую трансформацию, применяемую этим scope ко всем создаваемым командам.
withTransform(Transform) Создаёт дочерний scope для того же render context с новой трансформацией.

DrawScope(RenderContext, Transform)

Создать Scope

Создаёт scope отрисовки без привязки anchor bounds для transform pivot.

Параметр Тип Описание
context RenderContext RenderContext, куда записываются команды отрисовки.
transform Transform Transform виджета, применяемый к командам в этом scope.

DrawScope(RenderContext, Transform, RectView)

Создать Scope с привязкой Bounds

Создаёт scope отрисовки с границами макета виджета для удержания относительного transform pivot.

Параметр Тип Описание
context RenderContext RenderContext, куда записываются команды отрисовки.
transform Transform Transform виджета, применяемый к командам в этом scope.
transformBounds RectView Исходные границы макета виджета для привязки transform pivot.

DrawScope::context()

Получить RenderContext

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

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

DrawScope::transform()

Получить трансформацию Scope

Возвращает текущую трансформацию, применяемую этим scope ко всем создаваемым командам.

Возвращает Transform: Экземпляр активного Transform или null, если трансформация не задана..

DrawScope::withTransform(Transform)

Создать дочерний Scope с трансформацией

Создаёт дочерний scope для того же render context с новой трансформацией.

Параметр Тип Описание
transform Transform Transform виджета, применяемый к командам в этом scope.

Возвращает DrawScope: Новый экземпляр DrawScope с тем же контекстом и указанной трансформацией..

Базовые фигуры и примитивы

Метод Описание
rect(float, float, float, float, Paint) Рисует прямоугольник с параметрами заливки и обводки из Paint.
roundedRect(float, float, float, float, float, Paint) Рисует прямоугольник со скруглёнными углами заданного радиуса с использованием Paint.
circle(float, float, float, float, Paint) Рисует эллипс или окружность, вписанную в указанную прямоугольную область.
line(float, float, float, float, Paint) Рисует прямую линию между двумя точками с использованием Paint.
path(VectorPath, float, float, float, float, Paint) Рисует переиспользуемый векторный путь VectorPath, масштабированный в целевые границы.
rectFilled(float, float, float, float, ColorView) Заливает прямоугольник сплошным цветом без аллокаций памяти под Paint.
rectStroke(float, float, float, float, ColorView, float) Рисует контурную рамку прямоугольника без аллокаций памяти под Paint.
roundedRectFilled(float, float, float, float, float, ColorView) Заливает прямоугольник со скруглёнными углами без аллокаций памяти под Paint.
roundedRectStroke(float, float, float, float, float, ColorView, float) Рисует контур скруглённого прямоугольника без аллокаций памяти под Paint.
circleFilled(float, float, float, float, ColorView) Заливает круг или эллипс сплошным цветом без аллокаций памяти под Paint.
circleStroke(float, float, float, float, ColorView, float) Рисует контур окружности или эллипса без аллокаций памяти под Paint.

DrawScope::rect(float, float, float, float, Paint)

Нарисовать прямоугольник

Рисует прямоугольник с параметрами заливки и обводки из Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::roundedRect(float, float, float, float, float, Paint)

Нарисовать скруглённый прямоугольник

Рисует прямоугольник со скруглёнными углами заданного радиуса с использованием Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
radius float Радиус скругления углов в пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::circle(float, float, float, float, Paint)

Нарисовать круг / эллипс

Рисует эллипс или окружность, вписанную в указанную прямоугольную область.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::line(float, float, float, float, Paint)

Нарисовать линию

Рисует прямую линию между двумя точками с использованием Paint.

Параметр Тип Описание
x1 float X-координата первой точки.
y1 float Y-координата первой точки.
x2 float X-координата второй точки.
y2 float Y-координата второй точки.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::path(VectorPath, float, float, float, float, Paint)

Нарисовать векторный путь

Рисует переиспользуемый векторный путь VectorPath, масштабированный в целевые границы.

Параметр Тип Описание
path VectorPath Экземпляр векторного пути (VectorPath), содержащий контур фигуры.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::rectFilled(float, float, float, float, ColorView)

Залить прямоугольник (Garbage-Free)

Заливает прямоугольник сплошным цветом без аллокаций памяти под Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::rectStroke(float, float, float, float, ColorView, float)

Обвести прямоугольник (Garbage-Free)

Рисует контурную рамку прямоугольника без аллокаций памяти под Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
strokeWidth float Толщина контурной линии обводки в локальных пикселях.

DrawScope::roundedRectFilled(float, float, float, float, float, ColorView)

Залить скруглённый прямоугольник (Garbage-Free)

Заливает прямоугольник со скруглёнными углами без аллокаций памяти под Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::roundedRectStroke(float, float, float, float, float, ColorView, float)

Обвести скруглённый прямоугольник (Garbage-Free)

Рисует контур скруглённого прямоугольника без аллокаций памяти под Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
strokeWidth float Толщина контурной линии обводки в локальных пикселях.

DrawScope::circleFilled(float, float, float, float, ColorView)

Залить круг (Garbage-Free)

Заливает круг или эллипс сплошным цветом без аллокаций памяти под Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::circleStroke(float, float, float, float, ColorView, float)

Обвести круг (Garbage-Free)

Рисует контур окружности или эллипса без аллокаций памяти под Paint.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
strokeWidth float Толщина контурной линии обводки в локальных пикселях.

Текстуры, Nine-Slice и шейдеры

Метод Описание
texture(TextureHandle, float, float, float, float, Paint) Рисует текстуру, растянутую по указанным границам с тинтом из Paint.
texture(TextureHandle, TexturePlacement, float, Paint) Рисует текстуру с точными UV-координатами placement и радиусом скругления.
nineSlice(NineSlice, float, float, float, float, Paint) Рисует масштабируемую 9-slice панель с сохранением пропорций углов и растяжением краёв.
nineSlice(NineSlice, float, float, float, float, Paint, boolean) Рисует 9-slice панель с возможностью отключения отрисовки центра для получения полой рамки.
textureTinted(TextureHandle, float, float, float, float, ColorView) Рисует текстурированный прямоугольник с цветом тинта напрямую из ColorView.
textureTinted(TextureHandle, TexturePlacement, float, ColorView) Рисует текстуру с placement, скруглением углов и прямым тинтом ColorView.
shader(ShaderHandle, float, float, float, float, ShaderUniforms, ShaderDrawOptions) Выполняет проход кастомного шейдера в прямоугольной области с передачей uniforms.

DrawScope::texture(TextureHandle, float, float, float, float, Paint)

Нарисовать текстуру

Рисует текстуру, растянутую по указанным границам с тинтом из Paint.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::texture(TextureHandle, TexturePlacement, float, Paint)

Нарисовать текстуру с placement и скруглением

Рисует текстуру с точными UV-координатами placement и радиусом скругления.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
placement TexturePlacement Параметры TexturePlacement с целевым прямоугольником и исходными UV-границами.
radius float Радиус скругления углов в пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::nineSlice(NineSlice, float, float, float, float, Paint)

Нарисовать Nine-Slice панель

Рисует масштабируемую 9-slice панель с сохранением пропорций углов и растяжением краёв.

Параметр Тип Описание
slice NineSlice Параметры NineSlice с отступами и текстурой.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::nineSlice(NineSlice, float, float, float, float, Paint, boolean)

Нарисовать Nine-Slice с выбором заливки центра

Рисует 9-slice панель с возможностью отключения отрисовки центра для получения полой рамки.

Параметр Тип Описание
slice NineSlice Параметры NineSlice с отступами и текстурой.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.
fillCenter boolean Флаг отрисовки центральной области (false оставляет полую рамку).

DrawScope::textureTinted(TextureHandle, float, float, float, float, ColorView)

Нарисовать текстуру с тинтом (Garbage-Free)

Рисует текстурированный прямоугольник с цветом тинта напрямую из ColorView.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::textureTinted(TextureHandle, TexturePlacement, float, ColorView)

Нарисовать текстуру с placement и тинтом (Garbage-Free)

Рисует текстуру с placement, скруглением углов и прямым тинтом ColorView.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
placement TexturePlacement Параметры TexturePlacement с целевым прямоугольником и исходными UV-границами.
radius float Радиус скругления углов в пикселях.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::shader(ShaderHandle, float, float, float, float, ShaderUniforms, ShaderDrawOptions)

Отрисовать с кастомным шейдером

Выполняет проход кастомного шейдера в прямоугольной области с передачей uniforms.

Параметр Тип Описание
shader ShaderHandle Дескриптор скомпилированного кастомного шейдера.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
uniforms ShaderUniforms Параметры ShaderUniforms, передаваемые в программу шейдера.
options ShaderDrawOptions Опции исполнения шейдера или настройки построения ленты RibbonOptions.

Отрисовка текста

Метод Описание
text(String, float, float, float, float, Paint) Отрисовывает строку текста в заданных границах с использованием параметров Paint.
text(RichText, float, float, float, float, Paint) Отрисовывает форматированный RichText с включённым выравниванием по пикселям.
text(RichText, float, float, float, float, Paint, boolean) Отрисовывает RichText с настраиваемым выравниванием глифов по сетке пикселей.
addText(String, float, float, float, float, ColorView) Добавляет команду отрисовки текста с прямым цветом ColorView без аллокаций Paint.
addText(RichText, float, float, float, float, ColorView) Добавляет команду отрисовки RichText с прямым цветом ColorView без аллокаций Paint.

DrawScope::text(String, float, float, float, float, Paint)

Нарисовать текст

Отрисовывает строку текста в заданных границах с использованием параметров Paint.

Параметр Тип Описание
text String Текстовая строка или объект RichText для отрисовки.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::text(RichText, float, float, float, float, Paint)

Нарисовать форматированный текст

Отрисовывает форматированный RichText с включённым выравниванием по пикселям.

Параметр Тип Описание
text RichText Текстовая строка или объект RichText для отрисовки.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.

DrawScope::text(RichText, float, float, float, float, Paint, boolean)

Нарисовать RichText с настройкой snapping

Отрисовывает RichText с настраиваемым выравниванием глифов по сетке пикселей.

Параметр Тип Описание
text RichText Текстовая строка или объект RichText для отрисовки.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
paint Paint Параметры Paint, управляющие заливкой, обводкой, тинтом и шейдером.
textPixelSnap boolean Флаг привязки позиций глифов к целым пикселям экрана.

DrawScope::addText(String, float, float, float, float, ColorView)

Добавить команду текста (Garbage-Free)

Добавляет команду отрисовки текста с прямым цветом ColorView без аллокаций Paint.

Параметр Тип Описание
text String Текстовая строка или объект RichText для отрисовки.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addText(RichText, float, float, float, float, ColorView)

Добавить команду RichText (Garbage-Free)

Добавляет команду отрисовки RichText с прямым цветом ColorView без аллокаций Paint.

Параметр Тип Описание
text RichText Текстовая строка или объект RichText для отрисовки.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

Прямая геометрия и меши

Метод Описание
addDrawCmd(DrawCommand) Добавляет готовую команду DrawCommand с автоматической корректировкой pivot трансформации.
addCallback(CustomDraw) Вставляет callback кастомной отрисовки, выполняемый во время воспроизведения команд бэкендом.
addLine(float, float, float, float, ColorView, float) Добавляет команду отрисовки линии между двумя точками с указанной толщиной.
addRect(float, float, float, float, ColorView, float) Добавляет команду обводки прямоугольника с заданной толщиной линии.
addRect(float, float, float, float, float, ColorView, float) Добавляет команду обводки скруглённого прямоугольника с заданным радиусом и толщиной.
addRectFilled(float, float, float, float, ColorView) Добавляет команду сплошной заливки прямоугольника цветом ColorView.
addRectFilled(float, float, float, float, float, ColorView) Добавляет команду сплошной заливки скруглённого прямоугольника.
addRectFilledMultiColor(float, float, float, float, ColorView, ColorView, ColorView, ColorView) Отрисовывает прямоугольник с плавной интерполяцией цветов между четырьмя вершинами.
addQuad(DrawPoint, DrawPoint, DrawPoint, DrawPoint, ColorView, float) Добавляет контур произвольного четырехугольника по четырём вершинам.
addQuadFilled(DrawPoint, DrawPoint, DrawPoint, DrawPoint, ColorView) Добавляет залитый произвольный четырехугольник по четырём вершинам.
addTriangle(DrawPoint, DrawPoint, DrawPoint, ColorView, float) Добавляет контур треугольника по трём точкам.
addTriangleFilled(DrawPoint, DrawPoint, DrawPoint, ColorView) Добавляет залитый треугольник по трём точкам.
addCircle(float, float, float, ColorView, int, float) Добавляет контур окружности, аппроксимированный заданным числом сегментов.
addCircleFilled(float, float, float, ColorView, int) Добавляет залитый круг, аппроксимированный заданным числом сегментов.
addNgon(float, float, float, ColorView, int, float) Добавляет контур правильного многоугольника с N вершинами (пятиугольник, шестиугольник и т.д.).
addNgonFilled(float, float, float, ColorView, int) Добавляет залитый правильный многоугольник с N вершинами.
addEllipse(float, float, float, float, ColorView, int, float) Добавляет контур эллипса с раздельными радиусами по осям X и Y.
addEllipseFilled(float, float, float, float, ColorView, int) Добавляет залитый эллипс с раздельными радиусами по осям X и Y.
addPolyline(List, ColorView, boolean, float) Добавляет ломаную линию, соединяющую последовательность точек.
addConvexPolyFilled(List, ColorView) Добавляет команду сплошной заливки выпуклого многоугольника произвольной формы.
addConcavePolyFilled(List, ColorView) Добавляет команду заливки сложного невыпуклого многоугольника с триангуляцией.
addImage(TextureHandle, float, float, float, float, ColorView) Добавляет команду отрисовки текстуры на всю прямоугольную область с тинтом.
addImage(TextureHandle, float, float, float, float, DrawPoint, DrawPoint, ColorView) Добавляет команду отрисовки части текстуры/атласа по координатам uvMin и uvMax.
addImageQuad(TextureHandle, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, ColorView) Добавляет произвольный четырехугольник с индивидуальными UV-координатами для каждой вершины.
addTexturedQuad(TextureHandle, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, ColorView) Добавляет текстурированный четырехугольник через примитивные float координаты без создания объектов DrawPoint.
addImageRounded(TextureHandle, float, float, float, float, DrawPoint, DrawPoint, ColorView, float) Добавляет команду отрисовки текстуры со скруглением углов заданного радиуса.
addMesh(DrawMesh, TextureHandle) Отправляет низкоуровневый полигональный меш DrawMesh с текстурой.
ribbon(TextureHandle, List, float, float, ColorView, RibbonOptions) Отрисовывает текстурированную ленту вдоль полилинии с miter-стыками и опциями RibbonOptions.
ribbon(TextureHandle, List, float, float, ColorView) Отрисовывает процедурную ленту со стандартными настройками.
ribbon(TextureHandle, List, float, float, ColorView, boolean) Отрисовывает замкнутый контур процедурной ленты.
ribbon(TextureHandle, List, float, float, ColorView, boolean, boolean) Отрисовывает ленту с разворотом осей UV на 90 градусов для вертикальных текстур.
ribbon(TextureHandle, List, float, float, ColorView, boolean, boolean, boolean, boolean) Отрисовывает ленту с разворотом и отражением UV координат.

DrawScope::addDrawCmd(DrawCommand)

Добавить низкоуровневую команду отрисовки

Добавляет готовую команду DrawCommand с автоматической корректировкой pivot трансформации.

Параметр Тип Описание
command DrawCommand Готовая команда DrawCommand для прямого добавления.

DrawScope::addCallback(CustomDraw)

Добавить callback пользовательской отрисовки

Вставляет callback кастомной отрисовки, выполняемый во время воспроизведения команд бэкендом.

Параметр Тип Описание
callback CustomDraw Callback кастомной отрисовки, вызываемый бэкендом при воспроизведении.

DrawScope::addLine(float, float, float, float, ColorView, float)

Добавить линию с толщиной

Добавляет команду отрисовки линии между двумя точками с указанной толщиной.

Параметр Тип Описание
x1 float X-координата первой точки.
y1 float Y-координата первой точки.
x2 float X-координата второй точки.
y2 float Y-координата второй точки.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addRect(float, float, float, float, ColorView, float)

Добавить контур прямоугольника

Добавляет команду обводки прямоугольника с заданной толщиной линии.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addRect(float, float, float, float, float, ColorView, float)

Добавить контур скруглённого прямоугольника

Добавляет команду обводки скруглённого прямоугольника с заданным радиусом и толщиной.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addRectFilled(float, float, float, float, ColorView)

Добавить сплошную заливку прямоугольника

Добавляет команду сплошной заливки прямоугольника цветом ColorView.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addRectFilled(float, float, float, float, float, ColorView)

Добавить сплошную заливку скруглённого прямоугольника

Добавляет команду сплошной заливки скруглённого прямоугольника.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addRectFilledMultiColor(float, float, float, float, ColorView, ColorView, ColorView, ColorView)

Добавить 4-цветный градиентный прямоугольник

Отрисовывает прямоугольник с плавной интерполяцией цветов между четырьмя вершинами.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
topLeft ColorView Цвет верхней левой вершины.
topRight ColorView Цвет верхней правой вершины.
bottomRight ColorView Цвет нижней правой вершины.
bottomLeft ColorView Цвет нижней левой вершины.

DrawScope::addQuad(DrawPoint, DrawPoint, DrawPoint, DrawPoint, ColorView, float)

Добавить контур четырехугольника

Добавляет контур произвольного четырехугольника по четырём вершинам.

Параметр Тип Описание
p1 DrawPoint Первая точка четырехугольника или треугольника.
p2 DrawPoint Вторая точка четырехугольника или треугольника.
p3 DrawPoint Третья точка четырехугольника или треугольника.
p4 DrawPoint Четвёртая точка четырехугольника.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addQuadFilled(DrawPoint, DrawPoint, DrawPoint, DrawPoint, ColorView)

Добавить залитый четырехугольник

Добавляет залитый произвольный четырехугольник по четырём вершинам.

Параметр Тип Описание
p1 DrawPoint Первая точка четырехугольника или треугольника.
p2 DrawPoint Вторая точка четырехугольника или треугольника.
p3 DrawPoint Третья точка четырехугольника или треугольника.
p4 DrawPoint Четвёртая точка четырехугольника.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addTriangle(DrawPoint, DrawPoint, DrawPoint, ColorView, float)

Добавить контур треугольника

Добавляет контур треугольника по трём точкам.

Параметр Тип Описание
p1 DrawPoint Первая точка четырехугольника или треугольника.
p2 DrawPoint Вторая точка четырехугольника или треугольника.
p3 DrawPoint Третья точка четырехугольника или треугольника.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addTriangleFilled(DrawPoint, DrawPoint, DrawPoint, ColorView)

Добавить залитый треугольник

Добавляет залитый треугольник по трём точкам.

Параметр Тип Описание
p1 DrawPoint Первая точка четырехугольника или треугольника.
p2 DrawPoint Вторая точка четырехугольника или треугольника.
p3 DrawPoint Третья точка четырехугольника или треугольника.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addCircle(float, float, float, ColorView, int, float)

Добавить контур окружности с сегментами

Добавляет контур окружности, аппроксимированный заданным числом сегментов.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
segments int Количество сегментов для аппроксимации кривой/многоугольника.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addCircleFilled(float, float, float, ColorView, int)

Добавить залитый круг с сегментами

Добавляет залитый круг, аппроксимированный заданным числом сегментов.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
segments int Количество сегментов для аппроксимации кривой/многоугольника.

DrawScope::addNgon(float, float, float, ColorView, int, float)

Добавить контур правильного многоугольника

Добавляет контур правильного многоугольника с N вершинами (пятиугольник, шестиугольник и т.д.).

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
segments int Количество сегментов для аппроксимации кривой/многоугольника.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addNgonFilled(float, float, float, ColorView, int)

Добавить залитый правильный многоугольник

Добавляет залитый правильный многоугольник с N вершинами.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radius float Радиус скругления углов в пикселях.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
segments int Количество сегментов для аппроксимации кривой/многоугольника.

DrawScope::addEllipse(float, float, float, float, ColorView, int, float)

Добавить контур эллипса

Добавляет контур эллипса с раздельными радиусами по осям X и Y.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radiusX float Горизонтальный радиус по оси X.
radiusY float Вертикальный радиус по оси Y.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
segments int Количество сегментов для аппроксимации кривой/многоугольника.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addEllipseFilled(float, float, float, float, ColorView, int)

Добавить залитый эллипс

Добавляет залитый эллипс с раздельными радиусами по осям X и Y.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radiusX float Горизонтальный радиус по оси X.
radiusY float Вертикальный радиус по оси Y.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
segments int Количество сегментов для аппроксимации кривой/многоугольника.

DrawScope::addPolyline(List, ColorView, boolean, float)

Добавить полилинию

Добавляет ломаную линию, соединяющую последовательность точек.

Параметр Тип Описание
points List Список 2D-точек вершин многоугольника или полилинии.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
closed boolean Флаг замыкания контура ломаной или векторного пути.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::addConvexPolyFilled(List, ColorView)

Добавить залитый выпуклый многоугольник

Добавляет команду сплошной заливки выпуклого многоугольника произвольной формы.

Параметр Тип Описание
points List Список 2D-точек вершин многоугольника или полилинии.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addConcavePolyFilled(List, ColorView)

Добавить залитый невыпуклый многоугольник

Добавляет команду заливки сложного невыпуклого многоугольника с триангуляцией.

Параметр Тип Описание
points List Список 2D-точек вершин многоугольника или полилинии.
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::addImage(TextureHandle, float, float, float, float, ColorView)

Добавить команду изображения

Добавляет команду отрисовки текстуры на всю прямоугольную область с тинтом.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::addImage(TextureHandle, float, float, float, float, DrawPoint, DrawPoint, ColorView)

Добавить изображение с UV-диапазоном

Добавляет команду отрисовки части текстуры/атласа по координатам uvMin и uvMax.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
uvMin DrawPoint Верхняя левая UV-координата в пространстве текстуры.
uvMax DrawPoint Нижняя правая UV-координата в пространстве текстуры.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::addImageQuad(TextureHandle, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, DrawPoint, ColorView)

Добавить текстурированный четырехугольник

Добавляет произвольный четырехугольник с индивидуальными UV-координатами для каждой вершины.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
p1 DrawPoint Первая точка четырехугольника или треугольника.
p2 DrawPoint Вторая точка четырехугольника или треугольника.
p3 DrawPoint Третья точка четырехугольника или треугольника.
p4 DrawPoint Четвёртая точка четырехугольника.
uv1 DrawPoint Текстурная координата UV в вершине 1.
uv2 DrawPoint Текстурная координата UV в вершине 2.
uv3 DrawPoint Текстурная координата UV в вершине 3.
uv4 DrawPoint Текстурная координата UV в вершине 4.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::addTexturedQuad(TextureHandle, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, ColorView)

Добавить текстурированный quad (float примитивы)

Добавляет текстурированный четырехугольник через примитивные float координаты без создания объектов DrawPoint.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
x1 float X-координата первой точки.
y1 float Y-координата первой точки.
x2 float X-координата второй точки.
y2 float Y-координата второй точки.
x3 float X-координата третьей вершины.
y3 float Y-координата третьей вершины.
x4 float X-координата четвёртой вершины.
y4 float Y-координата четвёртой вершины.
u1 float Горизонтальная UV-координата U для вершины 1.
v1 float Вертикальная UV-координата V для вершины 1.
u2 float Горизонтальная UV-координата U для вершины 2.
v2 float Вертикальная UV-координата V для вершины 2.
u3 float Горизонтальная UV-координата U для вершины 3.
v3 float Вертикальная UV-координата V для вершины 3.
u4 float Горизонтальная UV-координата U для вершины 4.
v4 float Вертикальная UV-координата V для вершины 4.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::addImageRounded(TextureHandle, float, float, float, float, DrawPoint, DrawPoint, ColorView, float)

Добавить изображение со скруглёнными углами

Добавляет команду отрисовки текстуры со скруглением углов заданного радиуса.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
uvMin DrawPoint Верхняя левая UV-координата в пространстве текстуры.
uvMax DrawPoint Нижняя правая UV-координата в пространстве текстуры.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.
radius float Радиус скругления углов в пикселях.

DrawScope::addMesh(DrawMesh, TextureHandle)

Добавить кастомный меш геометрии

Отправляет низкоуровневый полигональный меш DrawMesh с текстурой.

Параметр Тип Описание
mesh DrawMesh Предрассчитанный буфер вершин и индексов DrawMesh.
texture TextureHandle Дескриптор GPU-ресурса текстуры.

DrawScope::ribbon(TextureHandle, List, float, float, ColorView, RibbonOptions)

Нарисовать процедурную ленту с опциями

Отрисовывает текстурированную ленту вдоль полилинии с miter-стыками и опциями RibbonOptions.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
points List Список 2D-точек вершин многоугольника или полилинии.
width float Ширина целевой области в локальных пикселях.
textureLength float Длина одного повторяющегося тайла текстуры вдоль пути в локальных единицах.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.
options RibbonOptions Опции исполнения шейдера или настройки построения ленты RibbonOptions.

DrawScope::ribbon(TextureHandle, List, float, float, ColorView)

Нарисовать процедурную ленту (Устарело)

Отрисовывает процедурную ленту со стандартными настройками.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
points List Список 2D-точек вершин многоугольника или полилинии.
width float Ширина целевой области в локальных пикселях.
textureLength float Длина одного повторяющегося тайла текстуры вдоль пути в локальных единицах.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.

DrawScope::ribbon(TextureHandle, List, float, float, ColorView, boolean)

Нарисовать замкнутую процедурную ленту (Устарело)

Отрисовывает замкнутый контур процедурной ленты.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
points List Список 2D-точек вершин многоугольника или полилинии.
width float Ширина целевой области в локальных пикселях.
textureLength float Длина одного повторяющегося тайла текстуры вдоль пути в локальных единицах.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.
closed boolean Флаг замыкания контура ломаной или векторного пути.

DrawScope::ribbon(TextureHandle, List, float, float, ColorView, boolean, boolean)

Нарисовать ленту с ориентацией UV (Устарело)

Отрисовывает ленту с разворотом осей UV на 90 градусов для вертикальных текстур.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
points List Список 2D-точек вершин многоугольника или полилинии.
width float Ширина целевой области в локальных пикселях.
textureLength float Длина одного повторяющегося тайла текстуры вдоль пути в локальных единицах.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.
closed boolean Флаг замыкания контура ломаной или векторного пути.
swapUv boolean Флаг смены осей U и V для вертикальных текстур-лент.

DrawScope::ribbon(TextureHandle, List, float, float, ColorView, boolean, boolean, boolean, boolean)

Нарисовать ленту с флагами трансформации (Устарело)

Отрисовывает ленту с разворотом и отражением UV координат.

Параметр Тип Описание
texture TextureHandle Дескриптор GPU-ресурса текстуры.
points List Список 2D-точек вершин многоугольника или полилинии.
width float Ширина целевой области в локальных пикселях.
textureLength float Длина одного повторяющегося тайла текстуры вдоль пути в локальных единицах.
tint ColorView Цвет тинта ColorView, умножаемый на пиксели текстуры.
closed boolean Флаг замыкания контура ломаной или векторного пути.
swapUv boolean Флаг смены осей U и V для вертикальных текстур-лент.
flipU boolean Флаг горизонтального отражения текстуры внутри тайла.
flipV boolean Флаг вертикального отражения текстуры внутри тайла.

Векторные пути и каналы

Метод Описание
channelsSplit(int) Разделяет поток команд отрисовки на несколько независимых слоёв/каналов.
channelsMerge() Объединяет ранее разделённые каналы обратно в последовательном порядке слоёв.
channelsSetCurrent(int) Переключает индекс активного канала, в который направляются последующие команды.
path() Возвращает встроенный объект построения векторных путей VectorPath.
pathClear() Очищает активный векторный путь, удаляя все накопленные вершины и сегменты.
pathLineTo(DrawPoint) Добавляет точку-вершину в активный векторный путь.
pathLineTo(float, float) Добавляет координаты (x, y) в активный векторный путь.
pathLineToMergeDuplicate(DrawPoint) Добавляет точку в путь, игнорируя её, если она совпадает с предыдущей.
pathLineToMergeDuplicate(float, float) Добавляет координаты (x, y) в путь, отсекая дубликаты предыдущей вершины.
pathFillConvex(ColorView) Заливает активный выпуклый векторный путь указанным цветом ColorView.
pathStroke(ColorView, boolean, float) Обводит активный векторный путь линией заданной толщины и цвета.
pathArcTo(float, float, float, float, float, int) Добавляет сегмент круговой дуги между начальным и конечным углами.
pathArcToFast(float, float, float, int, int) Добавляет дугу с использованием предрассчитанной 12-точечной тригонометрической таблицы.
pathBezierCubicCurveTo(float, float, float, float, float, float, int) Добавляет сегмент кубической кривой Безье с двумя контрольными точками и концом.
pathBezierQuadraticCurveTo(float, float, float, float, int) Добавляет сегмент квадратичной кривой Безье с одной контрольной точкой и концом.
pathRect(float, float, float, float) Добавляет вершины прямоугольника в активный векторный путь.
pathRect(float, float, float, float, float) Добавляет вершины скруглённого прямоугольника с радиусом углов в активный путь.

DrawScope::channelsSplit(int)

Разделить каналы отрисовки

Разделяет поток команд отрисовки на несколько независимых слоёв/каналов.

Параметр Тип Описание
count int Количество выделяемых независимых каналов отрисовки.

DrawScope::channelsMerge()

Объединить каналы отрисовки

Объединяет ранее разделённые каналы обратно в последовательном порядке слоёв.

DrawScope::channelsSetCurrent(int)

Установить активный канал

Переключает индекс активного канала, в который направляются последующие команды.

Параметр Тип Описание
channel int Целевой индекс канала для последующих команд отрисовки.

DrawScope::path()

Получить активный VectorPath

Возвращает встроенный объект построения векторных путей VectorPath.

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

DrawScope::pathClear()

Очистить точки пути

Очищает активный векторный путь, удаляя все накопленные вершины и сегменты.

DrawScope::pathLineTo(DrawPoint)

Добавить точку в путь

Добавляет точку-вершину в активный векторный путь.

Параметр Тип Описание
point DrawPoint Координаты точки вершины для добавления в путь.

DrawScope::pathLineTo(float, float)

Добавить координаты в путь

Добавляет координаты (x, y) в активный векторный путь.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.

DrawScope::pathLineToMergeDuplicate(DrawPoint)

Добавить точку с объединением дубликатов

Добавляет точку в путь, игнорируя её, если она совпадает с предыдущей.

Параметр Тип Описание
point DrawPoint Координаты точки вершины для добавления в путь.

DrawScope::pathLineToMergeDuplicate(float, float)

Добавить координаты с объединением дубликатов

Добавляет координаты (x, y) в путь, отсекая дубликаты предыдущей вершины.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.

DrawScope::pathFillConvex(ColorView)

Залить выпуклый путь

Заливает активный выпуклый векторный путь указанным цветом ColorView.

Параметр Тип Описание
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.

DrawScope::pathStroke(ColorView, boolean, float)

Обвести контур пути

Обводит активный векторный путь линией заданной толщины и цвета.

Параметр Тип Описание
color ColorView Цвет ColorView для сплошной заливки или обводки без аллокаций Paint.
closed boolean Флаг замыкания контура ломаной или векторного пути.
thickness float Толщина линии или контура в локальных пикселях.

DrawScope::pathArcTo(float, float, float, float, float, int)

Добавить дугу в путь

Добавляет сегмент круговой дуги между начальным и конечным углами.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radius float Радиус скругления углов в пикселях.
minAngle float Начальный угол дуги в радианах.
maxAngle float Конечный угол дуги в радианах.
segments int Количество сегментов для аппроксимации кривой/многоугольника.

DrawScope::pathArcToFast(float, float, float, int, int)

Добавить быструю табличную дугу в путь

Добавляет дугу с использованием предрассчитанной 12-точечной тригонометрической таблицы.

Параметр Тип Описание
centerX float X-координата центра круга или многоугольника.
centerY float Y-координата центра круга или многоугольника.
radius float Радиус скругления углов в пикселях.
minSampleOf12 int Начальный индекс в предрассчитанной 12-точечной таблице круга.
maxSampleOf12 int Конечный индекс в предрассчитанной 12-точечной таблице круга.

DrawScope::pathBezierCubicCurveTo(float, float, float, float, float, float, int)

Добавить кубическую кривую Безье в путь

Добавляет сегмент кубической кривой Безье с двумя контрольными точками и концом.

Параметр Тип Описание
controlX1 float X-координата первой контрольной точки кубической кривой Безье.
controlY1 float Y-координата первой контрольной точки кубической кривой Безье.
controlX2 float X-координата второй контрольной точки кубической кривой Безье.
controlY2 float Y-координата второй контрольной точки кубической кривой Безье.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
segments int Количество сегментов для аппроксимации кривой/многоугольника.

DrawScope::pathBezierQuadraticCurveTo(float, float, float, float, int)

Добавить квадратичную кривую Безье в путь

Добавляет сегмент квадратичной кривой Безье с одной контрольной точкой и концом.

Параметр Тип Описание
controlX float X-координата контрольной точки квадратичной кривой Безье.
controlY float Y-координата контрольной точки квадратичной кривой Безье.
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
segments int Количество сегментов для аппроксимации кривой/многоугольника.

DrawScope::pathRect(float, float, float, float)

Добавить прямоугольник в путь

Добавляет вершины прямоугольника в активный векторный путь.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.

DrawScope::pathRect(float, float, float, float, float)

Добавить скруглённый прямоугольник в путь

Добавляет вершины скруглённого прямоугольника с радиусом углов в активный путь.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.
radius float Радиус скругления углов в пикселях.

Отсечение и Scissor

Метод Описание
pushClip(float, float, float, float) Устанавливает прямоугольную область отсечения, ограничивающую все последующие вызовы отрисовки.
pushTextClip(float, float, float, float) Устанавливает область отсечения с защитными отступами (bleed) для предотвращения обрезки сглаживания текста.
popClip() Восстанавливает предыдущие границы отсечения, снимая верхний кадр со стека clip.

DrawScope::pushClip(float, float, float, float)

Установить область отсечения (Scissor Clip)

Устанавливает прямоугольную область отсечения, ограничивающую все последующие вызовы отрисовки.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.

DrawScope::pushTextClip(float, float, float, float)

Установить безопасную для текста область отсечения

Устанавливает область отсечения с защитными отступами (bleed) для предотвращения обрезки сглаживания текста.

Параметр Тип Описание
x float X-координата целевой прямоугольной области в локальном пространстве scope.
y float Y-координата целевой прямоугольной области в локальном пространстве scope.
width float Ширина целевой области в локальных пикселях.
height float Высота целевой области в локальных пикселях.

DrawScope::popClip()

Восстановить область отсечения

Восстанавливает предыдущие границы отсечения, снимая верхний кадр со стека clip.