モジュール

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

ストローク

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

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

ジオメトリ

Geometry モジュールは、プリミティブ シェイプ(BoxVec などの専用クラスを使用)と任意のシェイプ(PartitionedMesh を使用)に対する幾何学的演算をサポートしています。これには、交差検出と変換が含まれます。PartitionedMesh は、レンダリングをサポートするための追加データを保持することもできます。

ブラシ

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

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

オーサリング

The Compose Authoring module lets you capture user touch input and render it as low-latency strokes on the screen in real time. This is achieved through the InProgressStrokes composable, which processes motion events and displays the strokes as they are drawn.

Once a stroke is completed, the composable notifies the client application using an InProgressStrokesFinishedListener callback. This allows the application to retrieve the finished strokes for rendering or storage.

In Compose, InProgressStrokes takes this callback in the onStrokesFinished parameter. Pass the finished strokes to another composable to commit them to the screen using the rendering module.

レンダリング

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

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

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

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

ストレージ

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

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

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