API リファレンス: PathBuilder
PathBuilder は、Skija で Path オブジェクトを構築するためのモダンで推奨される方法です。フルーエントな API を提供し、パスの構築プロセスを不変の Path 結果から分離するために特別に設計されています。
基本コマンド
移動と直線:
moveTo(x, y): 新しい輪郭を開始します。lineTo(x, y): 直線セグメントを追加します。polylineTo(points): 複数の直線セグメントを追加します。closePath(): 現在の輪郭を閉じます。
相対コマンド (現在の点からのオフセット):
rMoveTo(dx, dy)rLineTo(dx, dy)
曲線
二次ベジェ曲線 (制御点1つ):
quadTo(x1, y1, x2, y2): 絶対座標。rQuadTo(dx1, dy1, dx2, dy2): 相対座標。
三次ベジェ曲線 (制御点2つ):
cubicTo(x1, y1, x2, y2, x3, y3): 絶対座標。rCubicTo(dx1, dy1, dx2, dy2, dx3, dy3): 相対座標。
コニック (重み付き二次曲線):
conicTo(x1, y1, x2, y2, w): 正確な円/楕円に便利です。rConicTo(...): 相対バージョン。
円弧
arcTo(oval, startAngle, sweepAngle, forceMoveTo): 指定された楕円に制限された円弧を追加します。tangentArcTo(p1, p2, radius): 直線 (現在点 -> p1) と (p1 -> p2) に接する円弧を追加します。ellipticalArcTo(...): SVG スタイルの円弧を追加します。
形状の追加
PathBuilder は、新しい輪郭として完全な形状を追加できます。
addRect(rect, direction, startIndex)addOval(rect, direction, startIndex)addCircle(x, y, radius, direction)addRRect(rrect, direction, startIndex): 角丸長方形。addPolygon(points, close): 点のシーケンスを輪郭として追加します。addPath(path, mode): 別のパスの輪郭をこのパスに追加します。
変換 (ビルダー状態)
これらのメソッドは、ビルダー内の現在の点に影響を与えます。
offset(dx, dy): ビルダー内のすべての既存の点を平行移動します。transform(matrix): すべての既存の点に行列を適用します。
ビルダー管理
reset(): ビルダーを空の状態にクリアします (メモリは保持)。incReserve(points, verbs): 構築中のサイズ変更を避けるためにメモリを事前に割り当てます。setFillMode(mode): 塗りつぶしルール (WINDING,EVEN_ODDなど) を設定します。setVolatile(boolean): 結果のパスをキャッシュすべきでないことを示唆します (一度限りのアニメーションパスに便利)。
出力メソッド
snapshot():Pathを返し、ビルダーの状態をそのまま保持します。detach():Pathを返し、ビルダーをリセットします (最も効率的)。build():Pathを返し、ビルダーを閉じます (その後は使用できません)。
例: 基本的な構築
java
Path path = new PathBuilder()
.moveTo(10, 10)
.lineTo(100, 10)
.lineTo(100, 100)
.quadTo(50, 150, 10, 100)
.closePath()
.snapshot(); // Path を返す例: 変換
java
PathBuilder builder = new PathBuilder();
builder.addRect(Rect.makeXYWH(0, 0, 100, 100))
.offset(10, 10)
.transform(Matrix33.makeRotate(45));
Path p = builder.detach(); // パスを返し、ビルダーをリセットビジュアル例
様々なパスの組み合わせと塗りつぶしルールについては、examples/scenes/src/PathsScene.java を参照してください。