Модули

API Ink имеет модульную структуру, поэтому вы можете использовать только то, что вам необходимо.

Инсульты

Модуль «Штрихи» служит основой API Ink. Ключевые типы данных в этом модуле:

  • StrokeInputBatch : Представляет собой последовательность входных данных указателя, включая его положение, метку времени, а также, при необходимости, давление, наклон и ориентацию.
  • InProgressStroke : Представляет собой контур, который активно рисуется. InProgressStroke используется для рендеринга частичных контуров с низкой задержкой и для построения окончательного Stroke после завершения ввода, после чего объект можно использовать повторно.` InProgressStroke используется компонентом InProgressStrokesView .
  • Stroke : Неизменяемое представление окончательного варианта штриха с фиксированной геометрией. Каждый Stroke имеет ImmutableStrokeInputBatch (входные точки), Brush (стиль) и PartitionedMesh (геометрическая форма). Вы можете хранить, изменять и отображать штрихи в своем приложении.

Геометрия

Модуль Geometry поддерживает геометрические операции над примитивными фигурами (с использованием специальных классов, таких как Box и Vec ), а также над произвольными фигурами (с использованием PartitionedMesh ), включая обнаружение пересечений и преобразование. PartitionedMesh также может содержать дополнительные данные для поддержки рендеринга.

Щетка

Модуль brush определяет стиль мазков. Он состоит из двух основных частей:

  • Brush : Задает стиль штриха, включая базовый цвет, базовый размер и BrushFamily . BrushFamily аналогичен семейству шрифтов, он определяет стиль штриха. Например, BrushFamily может представлять определенный стиль маркера или текстовыделителя, позволяя штрихам разных размеров и цветов использовать один и тот же стиль.
  • StockBrushes : Предоставляет фабричные функции для создания готовых к использованию экземпляров BrushFamily .

Создание контента

Модуль Authoring позволяет захватывать ввод пользователя с помощью указателя мыши и отображать его в виде штрихов на экране в реальном времени с низкой задержкой. Он предоставляет компонент InProgressStrokesView , который обрабатывает события движения и отображает штрихи по мере их отрисовки.

После завершения штриха представление уведомляет клиентское приложение посредством зарегистрированного обратного вызова ( InProgressStrokesFinishedListener ). Обратный вызов позволяет приложению получить завершенный штрих для рендеринга или сохранения.

Визуализация

Модуль Rendering помогает рисовать штрихи чернилами на Android Canvas . Он предоставляет CanvasStrokeRenderer для Compose и ViewStrokeRenderer для макетов на основе представлений. Эти рендереры разработаны для высокопроизводительного рендеринга и помогают обеспечить высококачественное изображение, включая сглаживание.

Для отрисовки штрихов вызовите метод create() , чтобы получить экземпляр CanvasStrokeRenderer . Затем вызовите метод draw() , чтобы отобразить на Canvas либо завершенные ( Stroke ), либо незавершенные ( InProgressStroke ) штрихи.

При рисовании обводки можно изменять холст. Например, можно перемещать, масштабировать и вращать изображение. Для корректного отображения обводки необходимо также передать преобразование canvas в метод CanvasStrokeRenderer.draw .

Чтобы избежать отдельного отслеживания преобразования canvas , используйте вместо этого ViewStrokeRenderer .

Хранилище

Модуль хранения предоставляет утилиты для эффективной сериализации и десериализации данных об инсульте, в первую очередь, с упором на StrokeInputBatch .

Модуль использует протоколы буферизации и оптимизированные методы дельта-сжатия, что приводит к значительной экономии места по сравнению с простыми методами.

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