Index: include/core/SkRRect.h |
diff --git a/include/core/SkRRect.h b/include/core/SkRRect.h |
index c09d2d46fe85aed3ca925d2419fcb98838138225..5223ae7072d4fbbe788d028e8202d564fb9a89f0 100644 |
--- a/include/core/SkRRect.h |
+++ b/include/core/SkRRect.h |
@@ -71,6 +71,14 @@ public: |
//!< the curves) nor a rect (i.e., both radii are non-zero) |
kSimple_Type, |
+ //!< The RR is non-empty and the two left x radii are equal, the two top |
+ //!< y radii are equal, and the same for the right and bottom but it is |
+ //!< neither an rect, oval, nor a simple RR. It is called "nine patch" |
+ //!< because the centers of the corner ellipses form an axis aligned |
+ //!< rect with edges that divide the RR into an 9 rectangular patches: |
+ //!< an interior patch, four edge patches, and four corner patches. |
+ kNinePatch_Type, |
+ |
//!< A fully general (non-empty) RR. Some of the x and/or y radii are |
//!< different from the others and there must be one corner where |
//!< both radii are non-zero. |
@@ -99,21 +107,11 @@ public: |
inline bool isSimpleCircular() const { |
return this->isSimple() && fRadii[0].fX == fRadii[0].fY; |
} |
+ inline bool isNinePatch() const { return kNinePatch_Type == this->getType(); } |
inline bool isComplex() const { return kComplex_Type == this->getType(); } |
bool allCornersCircular() const; |
- /** |
- * Are both x-radii the same on the two left corners, and similar for the top, right, and |
- * bottom. When this is the case the four ellipse centers form a rectangle. |
- */ |
- bool isNinePatch() const { |
- return fRadii[kUpperLeft_Corner].fX == fRadii[kLowerLeft_Corner].fX && |
- fRadii[kUpperRight_Corner].fX == fRadii[kLowerRight_Corner].fX && |
- fRadii[kUpperLeft_Corner].fY == fRadii[kUpperRight_Corner].fY && |
- fRadii[kLowerLeft_Corner].fY == fRadii[kLowerRight_Corner].fY; |
- } |
- |
SkScalar width() const { return fRect.width(); } |
SkScalar height() const { return fRect.height(); } |
@@ -172,6 +170,12 @@ public: |
void setRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad); |
/** |
+ * Initialize the rr with one radius per-side. |
+ */ |
+ void setNinePatch(const SkRect& rect, SkScalar leftRad, SkScalar topRad, |
+ SkScalar rightRad, SkScalar bottomRad); |
+ |
+ /** |
* Initialize the RR with potentially different radii for all four corners. |
*/ |
void setRectRadii(const SkRect& rect, const SkVector radii[4]); |