Ink API はモジュール化されているため、必要なものだけを使用できます。
ストローク
strokes モジュールは Ink API の基盤として機能します。このモジュールの主なデータ型は次のとおりです。
StrokeInputBatch: ポインタ入力の一連の動作を表します。位置、タイムスタンプ、必要に応じて圧力、傾き、向きを含みます。InProgressStroke: 現在描画中のストロークを表します。InProgressStrokeは、低レイテンシで部分的なストロークをレンダリングし、入力が完了したら最終的なStrokeを構築するために使用されます。その後、オブジェクトを再利用できます。 `InProgressStrokeはInProgressStrokesViewによって使用されます。Stroke: ジオメトリが固定された確定済みのストロークの不変表現。各Strokeには、ImmutableStrokeInputBatch(入力ポイント)、Brush(スタイル)、PartitionedMesh(幾何学模様)があります。アプリケーション内でストロークを保存、操作、レンダリングできます。
ジオメトリ
Geometry モジュールは、プリミティブ シェイプ(Box や Vec などの専用クラスを使用)と任意のシェイプ(PartitionedMesh を使用)に対する幾何学的演算をサポートしています。これには、交差検出と変換が含まれます。PartitionedMesh は、レンダリングをサポートするための追加データを保持することもできます。
ブラシ
brush モジュールはストロークのスタイルを定義します。主に次の 2 つの部分で構成されています。
Brush: ベースカラー、ベースサイズ、BrushFamilyなど、ストロークのスタイルを指定します。BrushFamilyはフォント ファミリーに似ており、ストロークのスタイルを定義します。たとえば、BrushFamilyは特定のスタイルのマーカーやハイライトを表すことができ、サイズや色の異なるストロークがそのスタイルを共有できます。StockBrushes: すぐに使用できるBrushFamilyインスタンスを作成するためのファクトリ関数を提供します。
オーサリング
Authoring モジュールを使用すると、ユーザーのポインタ入力をキャプチャし、低レイテンシのストロークとしてリアルタイムで画面にレンダリングできます。InProgressStrokesView を提供し、モーション イベントを処理して、ストロークが描画されるときに表示します。
ストロークが完了すると、ビューは登録済みのコールバック(InProgressStrokesFinishedListener)を介してクライアント アプリケーションに通知します。コールバックにより、アプリケーションはレンダリングまたは保存のために完了したストロークを取得できます。
レンダリング
Rendering モジュールは、Android の Canvas にインク ストロークを描画するのに役立ちます。Compose 用の CanvasStrokeRenderer と、ビューベースのレイアウト用の ViewStrokeRenderer が用意されています。これらのレンダラは、高パフォーマンスのレンダリング用に設計されており、アンチエイリアシングなどの高品質なビジュアルの提供に役立ちます。
ストロークをレンダリングするには、create() メソッドを呼び出して CanvasStrokeRenderer インスタンスを取得します。次に、draw() メソッドを呼び出して、完了したストローク(Stroke)または進行中のストローク(InProgressStroke)を Canvas にレンダリングします。
ストロークを描画するときに、キャンバスを変換できます。たとえば、パン、ズーム、回転などがあります。ストロークを正しくレンダリングするには、canvas 変換を CanvasStrokeRenderer.draw に渡す必要もあります。
canvas 変換を個別にトラッキングしないようにするには、代わりに ViewStrokeRenderer を使用します。
ストレージ
ストレージ モジュールは、ストローク データを効率的にシリアル化および逆シリアル化するためのユーティリティを提供します。主に StrokeInputBatch に重点を置いています。
このモジュールは、プロトコル バッファと最適化されたデルタ圧縮技術を使用しているため、単純な方法と比較してストレージを大幅に節約できます。
ストレージ モジュールを使用すると、ストロークの保存、読み込み、共有が簡単になります。