#ifdef SK_DEBUG
fPts = NULL;
fConicWeights = NULL;
- fMoveTo.fX = fMoveTo.fY = 0;
#endif
// need to init enough to make next() harmlessly return kDone_Verb
fVerbs = NULL;
fVerbs = path.fPathRef->verbs();
fVerbStop = path.fPathRef->verbsMemBegin();
fConicWeights = path.fPathRef->conicWeights() - 1; // begin one behind
- fMoveTo.fX = fMoveTo.fY = 0;
}
SkPath::Verb SkPath::RawIter::next(SkPoint pts[4]) {
switch (verb) {
case kMove_Verb:
- fMoveTo = pts[0] = srcPts[0];
+ pts[0] = srcPts[0];
srcPts += 1;
break;
case kLine_Verb:
srcPts += 3;
break;
case kClose_Verb:
- pts[0] = fMoveTo;
+ break;
+ case kDone_Verb:
+ SkASSERT(fVerbs == fVerbStop);
break;
}
fPts = srcPts;
REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1);
REPORTER_ASSERT(reporter, pts[0].fY == 0);
REPORTER_ASSERT(reporter, iter.next(pts) == SkPath::kClose_Verb);
- REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1);
- REPORTER_ASSERT(reporter, pts[0].fY == 0);
REPORTER_ASSERT(reporter, iter.next(pts) == SkPath::kMove_Verb);
REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1*2);
REPORTER_ASSERT(reporter, pts[0].fY == SK_Scalar1);
REPORTER_ASSERT(reporter, iter.next(pts) == SkPath::kClose_Verb);
- REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1*2);
- REPORTER_ASSERT(reporter, pts[0].fY == SK_Scalar1);
REPORTER_ASSERT(reporter, iter.next(pts) == SkPath::kMove_Verb);
REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1*3);
REPORTER_ASSERT(reporter, pts[0].fY == SK_Scalar1*2);
REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1*4);
REPORTER_ASSERT(reporter, pts[0].fY == SK_Scalar1*3);
REPORTER_ASSERT(reporter, iter.next(pts) == SkPath::kClose_Verb);
- REPORTER_ASSERT(reporter, pts[0].fX == SK_Scalar1*4);
- REPORTER_ASSERT(reporter, pts[0].fY == SK_Scalar1*3);
REPORTER_ASSERT(reporter, iter.next(pts) == SkPath::kDone_Verb);
// Generate random paths and verify
numIterPts += 3;
break;
case SkPath::kClose_Verb:
- REPORTER_ASSERT(reporter, pts[0] == lastMoveTo);
lastPt = lastMoveTo;
break;
default: