diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-17 21:17:30 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-17 21:17:30 +0000 |
commit | f338d7c860bf0bca82cac793069522311a3dbb1a (patch) | |
tree | 483f71e80baab44121eca0cc84948b19e714bcf1 /include/core/SkRRect.h | |
parent | b1bcb21631275fd5d0f5313b1ea37d0b975c066a (diff) |
Add nine patch type to SkRRect.
BUG=skia:2181
Committed: http://code.google.com/p/skia/source/detail?r=13833
R=robertphillips@google.com, reed@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/196343015
git-svn-id: http://skia.googlecode.com/svn/trunk@13839 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include/core/SkRRect.h')
-rw-r--r-- | include/core/SkRRect.h | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/include/core/SkRRect.h b/include/core/SkRRect.h index c09d2d46fe..5223ae7072 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]); |