Add drawPoints dash bench
https://codereview.appspot.com/6866053/
git-svn-id: http://skia.googlecode.com/svn/trunk@6678 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index 03330f0..e2d3648 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -281,11 +281,13 @@
tangent.scale(SkScalarInvert(length));
- SkScalar ptCount = SkScalarDiv(length, SkIntToScalar(2));
- results->fPoints.setReserve(SkScalarCeilToInt(ptCount));
+ SkScalar ptCount = SkScalarDiv(length-1, SkIntToScalar(2));
+ results->fNumPoints = SkScalarCeilToInt(ptCount);
+ results->fPoints = new SkPoint[results->fNumPoints];
// +1 b.c. fInitialDashLength is zero so the initial segment will be skipped
int index = fInitialDashIndex+1;
+ int iCurPt = 0;
for (SkScalar distance = SK_ScalarHalf; distance < length; distance += SK_Scalar1) {
SkASSERT(index <= fCount);
@@ -293,11 +295,15 @@
if (0 == index) {
SkScalar x0 = pts[0].fX + SkScalarMul(tangent.fX, distance);
SkScalar y0 = pts[0].fY + SkScalarMul(tangent.fY, distance);
- results->fPoints.append()->set(x0, y0);
+ SkASSERT(iCurPt < results->fNumPoints);
+ results->fPoints[iCurPt].set(x0, y0);
+ ++iCurPt;
}
index ^= 1; // 0 -> 1 -> 0 ...
}
+
+ SkASSERT(iCurPt == results->fNumPoints);
}
return true;