Index: include/core/SkPath.h |
diff --git a/include/core/SkPath.h b/include/core/SkPath.h |
index 3ff0af15a21d37d9b12383f1ed9d4640f551d0b7..3c68ff7d845bc7511234653d96994d7114998ad2 100644 |
--- a/include/core/SkPath.h |
+++ b/include/core/SkPath.h |
@@ -154,6 +154,17 @@ public: |
*/ |
bool isOval(SkRect* rect) const { return fPathRef->isOval(rect); } |
+ /** Returns true if the path is a round rect. |
+ * |
+ * @param rrect Returns the bounding rect and radii of this round rect. |
+ * |
+ * @return true if this path is a round rect. |
+ * Tracking whether a path is a round rect is considered an |
+ * optimization for performance and so some paths that are in |
+ * fact round rects can report false. |
+ */ |
+ bool isRRect(SkRRect* rrect) const { return fPathRef->isRRect(rrect); } |
+ |
/** Clear any lines and curves from the path, making it empty. This frees up |
internal storage associated with those segments. |
On Android, does not change fSourcePath. |
@@ -918,10 +929,14 @@ public: |
*/ |
class SK_API RawIter { |
public: |
- RawIter(); |
- RawIter(const SkPath&); |
+ RawIter() {} |
+ RawIter(const SkPath& path) { |
+ setPath(path); |
+ } |
- void setPath(const SkPath&); |
+ void setPath(const SkPath& path) { |
+ fRawIter.setPathRef(*path.fPathRef.get()); |
+ } |
/** Return the next verb in this iteration of the path. When all |
segments have been visited, return kDone_Verb. |
@@ -930,15 +945,17 @@ public: |
This must not be NULL. |
@return The verb for the current segment |
*/ |
- Verb next(SkPoint pts[4]); |
+ Verb next(SkPoint pts[4]) { |
+ return (Verb) fRawIter.next(pts); |
+ } |
- SkScalar conicWeight() const { return *fConicWeights; } |
+ SkScalar conicWeight() const { |
+ return fRawIter.conicWeight(); |
+ } |
private: |
- const SkPoint* fPts; |
- const uint8_t* fVerbs; |
- const uint8_t* fVerbStop; |
- const SkScalar* fConicWeights; |
+ SkPathRef::Iter fRawIter; |
+ friend class SkPath; |
}; |
/** |
@@ -1066,6 +1083,7 @@ private: |
friend class SkAutoDisableDirectionCheck; |
friend class SkBench_AddPathTest; // perf test reversePathTo |
friend class PathTest_Private; // unit test reversePathTo |
+ friend class ForceIsRRect_Private; // unit test isRRect |
}; |
#endif |