| Index: src/core/SkPath.cpp
|
| diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
|
| index a3f5e13d7fa924f29a639ecc9fd6d10fff64a21c..2d4976a82acef77e3b08823e359f087d3f21ddb2 100644
|
| --- a/src/core/SkPath.cpp
|
| +++ b/src/core/SkPath.cpp
|
| @@ -1072,6 +1072,7 @@ void SkPath::addRRect(const SkRRect &rrect, Direction dir, unsigned startIndex)
|
| return;
|
| }
|
|
|
| + bool isRRect = hasOnlyMoveTos();
|
| const SkRect& bounds = rrect.getBounds();
|
|
|
| if (rrect.isRect()) {
|
| @@ -1119,6 +1120,9 @@ void SkPath::addRRect(const SkRRect &rrect, Direction dir, unsigned startIndex)
|
| }
|
| this->close();
|
|
|
| + SkPathRef::Editor ed(&fPathRef);
|
| + ed.setIsRRect(isRRect);
|
| +
|
| SkASSERT(this->countVerbs() == initialVerbCount + kVerbs);
|
| }
|
|
|
| @@ -1861,75 +1865,6 @@ SkPath::Verb SkPath::Iter::doNext(SkPoint ptsParam[4]) {
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -SkPath::RawIter::RawIter() {
|
| -#ifdef SK_DEBUG
|
| - fPts = nullptr;
|
| - fConicWeights = nullptr;
|
| -#endif
|
| - // need to init enough to make next() harmlessly return kDone_Verb
|
| - fVerbs = nullptr;
|
| - fVerbStop = nullptr;
|
| -}
|
| -
|
| -SkPath::RawIter::RawIter(const SkPath& path) {
|
| - this->setPath(path);
|
| -}
|
| -
|
| -void SkPath::RawIter::setPath(const SkPath& path) {
|
| - fPts = path.fPathRef->points();
|
| - fVerbs = path.fPathRef->verbs();
|
| - fVerbStop = path.fPathRef->verbsMemBegin();
|
| - fConicWeights = path.fPathRef->conicWeights() - 1; // begin one behind
|
| -}
|
| -
|
| -SkPath::Verb SkPath::RawIter::next(SkPoint pts[4]) {
|
| - SkASSERT(pts);
|
| - if (fVerbs == fVerbStop) {
|
| - return kDone_Verb;
|
| - }
|
| -
|
| - // fVerbs points one beyond next verb so decrement first.
|
| - unsigned verb = *(--fVerbs);
|
| - const SkPoint* srcPts = fPts;
|
| -
|
| - switch (verb) {
|
| - case kMove_Verb:
|
| - pts[0] = srcPts[0];
|
| - srcPts += 1;
|
| - break;
|
| - case kLine_Verb:
|
| - pts[0] = srcPts[-1];
|
| - pts[1] = srcPts[0];
|
| - srcPts += 1;
|
| - break;
|
| - case kConic_Verb:
|
| - fConicWeights += 1;
|
| - // fall-through
|
| - case kQuad_Verb:
|
| - pts[0] = srcPts[-1];
|
| - pts[1] = srcPts[0];
|
| - pts[2] = srcPts[1];
|
| - srcPts += 2;
|
| - break;
|
| - case kCubic_Verb:
|
| - pts[0] = srcPts[-1];
|
| - pts[1] = srcPts[0];
|
| - pts[2] = srcPts[1];
|
| - pts[3] = srcPts[2];
|
| - srcPts += 3;
|
| - break;
|
| - case kClose_Verb:
|
| - break;
|
| - case kDone_Verb:
|
| - SkASSERT(fVerbs == fVerbStop);
|
| - break;
|
| - }
|
| - fPts = srcPts;
|
| - return (Verb)verb;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -
|
| /*
|
| Format in compressed buffer: [ptCount, verbCount, pts[], verbs[]]
|
| */
|
|
|