Index: include/core/SkPath.h |
diff --git a/include/core/SkPath.h b/include/core/SkPath.h |
index 695271981550a0038b788003cd88befc81516297..7c6fd35d5af8798c74e499644b606c435081d40f 100644 |
--- a/include/core/SkPath.h |
+++ b/include/core/SkPath.h |
@@ -499,10 +499,12 @@ public: |
this->arcTo(p1.fX, p1.fY, p2.fX, p2.fY, radius); |
} |
- /** Close the current contour. If the current point is not equal to the |
- first point of the contour, a line segment is automatically added. |
- */ |
- void close(); |
+ enum ArcSize { |
+ /** the smaller of the two possible SVG arcs. */ |
+ kSmall_ArcSize, |
+ /** the larger of the two possible SVG arcs. */ |
+ kLarge_ArcSize, |
+ }; |
enum Direction { |
/** clockwise direction for adding closed contours */ |
@@ -512,6 +514,48 @@ public: |
}; |
/** |
+ * Append an elliptical arc from the current point in the format used by SVG. |
+ * The center of the ellipse is computed to satisfy the constraints below. |
+ * |
+ * @param rx,ry The radii in the x and y directions respectively. |
+ * @param xAxisRotate The angle in degrees relative to the x-axis. |
+ * @param largeArc Determines whether the smallest or largest arc possible |
+ * is drawn. |
+ * @param sweep Determines if the arc should be swept in an anti-clockwise or |
+ * clockwise direction. Note that this enum value is opposite the SVG |
+ * arc sweep value. |
+ * @param x,y The destination coordinates. |
+ */ |
+ void arcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, |
+ Direction sweep, SkScalar x, SkScalar y); |
+ |
+ void arcTo(const SkPoint r, SkScalar xAxisRotate, ArcSize largeArc, Direction sweep, |
+ const SkPoint xy) { |
+ this->arcTo(r.fX, r.fY, xAxisRotate, largeArc, sweep, xy.fX, xy.fY); |
+ } |
+ |
+ /** Same as arcTo format used by SVG, but the destination coordinate is relative to the |
+ * last point on this contour. If there is no previous point, then a |
+ * moveTo(0,0) is inserted automatically. |
+ * |
+ * @param rx,ry The radii in the x and y directions respectively. |
+ * @param xAxisRotate The angle in degrees relative to the x-axis. |
+ * @param largeArc Determines whether the smallest or largest arc possible |
+ * is drawn. |
+ * @param sweep Determines if the arc should be swept in an anti-clockwise or |
+ * clockwise direction. Note that this enum value is opposite the SVG |
+ * arc sweep value. |
+ * @param dx,dy The destination coordinates relative to the last point. |
+ */ |
+ void rArcTo(SkScalar rx, SkScalar ry, SkScalar xAxisRotate, ArcSize largeArc, |
+ Direction sweep, SkScalar dx, SkScalar dy); |
+ |
+ /** Close the current contour. If the current point is not equal to the |
+ first point of the contour, a line segment is automatically added. |
+ */ |
+ void close(); |
+ |
+ /** |
* Returns whether or not a fill type is inverted |
* |
* kWinding_FillType -> false |