Added dashing fast path

https://codereview.appspot.com/6844067/



git-svn-id: http://skia.googlecode.com/svn/trunk@6585 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index 3c1b72d..f4487af 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -635,6 +635,39 @@
                 break;
             }
             case SkCanvas::kLines_PointMode:
+#ifndef SK_DISABLE_DASHING_OPTIMIZATION
+                if (2 == count && NULL != paint.getPathEffect()) {
+                    // most likely a dashed line - see if it is one of the ones
+                    // we can accelerate
+                    SkStrokeRec rec(paint);
+                    SkPathEffect::PointData dst;
+
+                    SkPath path;
+                    path.moveTo(pts[0]);
+                    path.lineTo(pts[1]);
+
+                    if (paint.getPathEffect()->asPoints(&dst, path, rec, *fMatrix) &&
+                        SK_Scalar1 == dst.fSize.fX && SK_Scalar1 == dst.fSize.fY &&
+                        !(SkPathEffect::PointData::kUsePath_PointFlag & dst.fFlags)) {
+                        SkPaint newP(paint);
+                        newP.setPathEffect(NULL);
+
+                        if (SkPathEffect::PointData::kCircles_PointFlag & dst.fFlags) {
+                            newP.setStrokeCap(SkPaint::kRound_Cap);
+                        } else {
+                            newP.setStrokeCap(SkPaint::kButt_Cap);
+                        }
+
+                        this->drawPoints(SkCanvas::kPoints_PointMode,
+                                         dst.fPoints.count(),
+                                         dst.fPoints.begin(),
+                                         newP,
+                                         forceUseDevice);
+                        break;
+                    }
+                }
+#endif // DISABLE_DASHING_OPTIMIZATION
+                // couldn't take fast path so fall through!
             case SkCanvas::kPolygon_PointMode: {
                 count -= 1;
                 SkPath path;