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;