diff options
Diffstat (limited to 'src/core/SkPath.cpp')
-rw-r--r-- | src/core/SkPath.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp index f8aa8521da..27b7283263 100644 --- a/src/core/SkPath.cpp +++ b/src/core/SkPath.cpp @@ -534,18 +534,18 @@ SkPath::PathAsRect SkPath::asRect(Direction* direction) const { return (PathAsRect) (isRect(&isClosed, direction) + isClosed); } -bool SkPath::isRect(SkRect* rect) const { +bool SkPath::isRect(SkRect* rect, bool* isClosed, Direction* direction) const { SkDEBUGCODE(this->validate();) int currVerb = 0; const SkPoint* pts = fPathRef->points(); const SkPoint* first = pts; - bool isClosed; - if (!this->isRectContour(false, &currVerb, &pts, &isClosed, NULL)) { + if (!this->isRectContour(false, &currVerb, &pts, isClosed, direction)) { return false; } if (rect) { - if (isClosed) { - rect->set(first, SkToS32(pts - first)); + int32_t num = SkToS32(pts - first); + if (num) { + rect->set(first, num); } else { // 'pts' isn't updated for open rects *rect = this->getBounds(); @@ -554,13 +554,6 @@ bool SkPath::isRect(SkRect* rect) const { return true; } -bool SkPath::isRect(bool* isClosed, Direction* direction) const { - SkDEBUGCODE(this->validate();) - int currVerb = 0; - const SkPoint* pts = fPathRef->points(); - return isRectContour(false, &currVerb, &pts, isClosed, direction); -} - bool SkPath::isNestedRects(SkRect rects[2], Direction dirs[2]) const { SkDEBUGCODE(this->validate();) int currVerb = 0; |