Make SkPath::RawIter require a non-NULL pts pointer.

Review URL: http://codereview.appspot.com/6301060/



git-svn-id: http://skia.googlecode.com/svn/trunk@4206 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
bsalomon@google.com 2012-06-07 17:47:33 +00:00
parent 5867c0f032
commit f6d3c5aa5f
2 changed files with 10 additions and 18 deletions

View File

@ -753,6 +753,7 @@ public:
segments have been visited, return kDone_Verb.
@param pts The points representing the current verb and/or segment
This must not be NULL.
@return The verb for the current segment
*/
Verb next(SkPoint pts[4]);

View File

@ -1632,6 +1632,7 @@ void SkPath::RawIter::setPath(const SkPath& path) {
}
SkPath::Verb SkPath::RawIter::next(SkPoint pts[4]) {
SkASSERT(NULL != pts);
if (fVerbs == fVerbStop) {
return kDone_Verb;
}
@ -1641,42 +1642,32 @@ SkPath::Verb SkPath::RawIter::next(SkPoint pts[4]) {
switch (verb) {
case kMove_Verb:
if (pts) {
pts[0] = *srcPts;
}
pts[0] = *srcPts;
fMoveTo = srcPts[0];
fLastPt = fMoveTo;
srcPts += 1;
break;
case kLine_Verb:
if (pts) {
pts[0] = fLastPt;
pts[1] = srcPts[0];
}
pts[0] = fLastPt;
pts[1] = srcPts[0];
fLastPt = srcPts[0];
srcPts += 1;
break;
case kQuad_Verb:
if (pts) {
pts[0] = fLastPt;
memcpy(&pts[1], srcPts, 2 * sizeof(SkPoint));
}
pts[0] = fLastPt;
memcpy(&pts[1], srcPts, 2 * sizeof(SkPoint));
fLastPt = srcPts[1];
srcPts += 2;
break;
case kCubic_Verb:
if (pts) {
pts[0] = fLastPt;
memcpy(&pts[1], srcPts, 3 * sizeof(SkPoint));
}
pts[0] = fLastPt;
memcpy(&pts[1], srcPts, 3 * sizeof(SkPoint));
fLastPt = srcPts[2];
srcPts += 3;
break;
case kClose_Verb:
fLastPt = fMoveTo;
if (pts) {
pts[0] = fMoveTo;
}
pts[0] = fMoveTo;
break;
}
fPts = srcPts;