モジュール

Ink API はモジュール化されているため、必要なものだけを使用できます。

ストローク

strokes モジュールは Ink API の基盤として機能します。このモジュールの主なデータ型は次のとおりです。

  • StrokeInputBatch: ポインタ入力の一連の動作を表します。位置、タイムスタンプ、必要に応じて圧力、傾き、向きを含みます。
  • InProgressStroke: 現在描画中のストロークを表します。InProgressStroke は、低レイテンシで部分的なストロークをレンダリングし、入力が完了したら最終的な Stroke を構築するために使用されます。その後、オブジェクトを再利用できます。 InProgressStroke は、InProgressStrokes コンポーザブルで使用されます。
  • Stroke: ジオメトリが固定された確定済みのストロークの不変表現。各 Stroke には、ImmutableStrokeInputBatch(入力ポイント)、Brush(スタイル)、PartitionedMesh(幾何学模様)があります。アプリケーション内でストロークを保存、操作、レンダリングできます。

ジオメトリ

几何图形模块支持对基本形状(使用 BoxVec 等专用类)以及任意形状(使用 PartitionedMesh)进行几何运算,包括相交检测和转换。 PartitionedMesh 还可以保存其他数据以支持渲染。

ブラシ

brush モジュールはストロークのスタイルを定義します。主に次の 2 つの部分で構成されています。

  • Brush: ベースカラー、ベースサイズ、BrushFamily など、ストロークのスタイルを指定します。BrushFamily はフォント ファミリーに似ており、ストロークのスタイルを定義します。たとえば、BrushFamily は特定のスタイルのマーカーやハイライトを表すことができ、サイズや色の異なるストロークがそのスタイルを共有できます。
  • StockBrushes: すぐに使用できる BrushFamily インスタンスを作成するためのファクトリ関数を提供します。

オーサリング

借助 Compose 创作模块,您可以捕获用户触摸输入,并将其实时呈现为屏幕上的低延迟笔画。这是通过 InProgressStrokes 可组合项实现的,该可组合项可处理运动事件并在绘制笔画时显示笔画。

笔画完成后,可组合项会使用 InProgressStrokesFinishedListener 回调通知客户端应用。这允许应用检索完成的笔画以进行渲染或存储。

在 Compose 中,InProgressStrokes 通过 onStrokesFinished 参数接收此回调。将完成的笔画传递给另一个可组合项,以使用渲染模块将其提交到屏幕。

レンダリング

レンダリング モジュールを使用すると、Android の Canvas にインク ストロークを簡単に描画できます。Compose 用の CanvasStrokeRenderer と、ビューベースのレイアウト用の ViewStrokeRenderer が用意されています。これらのレンダラは、レンダリング パフォーマンスを最適化し、アンチエイリアシングなどの高品質のビジュアルを提供します。

ストロークをレンダリングするには、create() メソッドを呼び出して CanvasStrokeRenderer インスタンスを取得し、draw() メソッドを呼び出して、完了した(Stroke)ストロークまたは進行中の(InProgressStroke)ストロークを Canvas にレンダリングします。

ストロークを描画するときに、キャンバスを変換できます。たとえば、パン、ズーム、回転などがあります。ストロークを正しくレンダリングするには、canvas 変換を CanvasStrokeRenderer.draw に渡す必要もあります。

canvas 変換を個別にトラッキングしないようにするには、代わりに ViewStrokeRenderer を使用します。

ストレージ

ストレージ モジュールは、ストローク データを効率的にシリアル化および逆シリアル化するためのユーティリティを提供します。主に StrokeInputBatch に重点を置いています。

このモジュールは、プロトコル バッファと最適化されたデルタ圧縮技術を使用しているため、単純な方法と比較してストレージを大幅に節約できます。

ストレージ モジュールを使用すると、ストロークの保存、読み込み、共有が簡単になります。