Index: src/core/SkDraw.cpp |
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp |
index 636eaa6f61950ec35b5132798c6043c18d8774d4..878dca50671b4680f97da8a50fc59f473cf9417b 100644 |
--- a/src/core/SkDraw.cpp |
+++ b/src/core/SkDraw.cpp |
@@ -381,15 +381,13 @@ static void bw_pt_hair_proc(const PtProcRec& rec, const SkPoint devPts[], |
static void bw_line_hair_proc(const PtProcRec& rec, const SkPoint devPts[], |
int count, SkBlitter* blitter) { |
for (int i = 0; i < count; i += 2) { |
- SkScan::HairLine(devPts[i], devPts[i+1], *rec.fRC, blitter); |
+ SkScan::HairLine(&devPts[i], 2, *rec.fRC, blitter); |
} |
} |
static void bw_poly_hair_proc(const PtProcRec& rec, const SkPoint devPts[], |
int count, SkBlitter* blitter) { |
- for (int i = 0; i < count - 1; i++) { |
- SkScan::HairLine(devPts[i], devPts[i+1], *rec.fRC, blitter); |
- } |
+ SkScan::HairLine(devPts, count, *rec.fRC, blitter); |
} |
// aa versions |
@@ -397,15 +395,13 @@ static void bw_poly_hair_proc(const PtProcRec& rec, const SkPoint devPts[], |
static void aa_line_hair_proc(const PtProcRec& rec, const SkPoint devPts[], |
int count, SkBlitter* blitter) { |
for (int i = 0; i < count; i += 2) { |
- SkScan::AntiHairLine(devPts[i], devPts[i+1], *rec.fRC, blitter); |
+ SkScan::AntiHairLine(&devPts[i], 2, *rec.fRC, blitter); |
} |
} |
static void aa_poly_hair_proc(const PtProcRec& rec, const SkPoint devPts[], |
int count, SkBlitter* blitter) { |
- for (int i = 0; i < count - 1; i++) { |
- SkScan::AntiHairLine(devPts[i], devPts[i+1], *rec.fRC, blitter); |
- } |
+ SkScan::AntiHairLine(devPts, count, *rec.fRC, blitter); |
} |
// square procs (strokeWidth > 0 but matrix is square-scale (sx == sy) |
@@ -1876,9 +1872,7 @@ void SkDraw::drawPosText(const char text[], size_t byteLength, |
/////////////////////////////////////////////////////////////////////////////// |
-typedef void (*HairProc)(SkPoint, SkPoint, const SkRasterClip&, SkBlitter*); |
- |
-static HairProc ChooseHairProc(bool doAntiAlias) { |
+static SkScan::HairRCProc ChooseHairProc(bool doAntiAlias) { |
return doAntiAlias ? SkScan::AntiHairLine : SkScan::HairLine; |
} |
@@ -2144,12 +2138,13 @@ void SkDraw::drawVertices(SkCanvas::VertexMode vmode, int count, |
} |
} else { |
// no colors[] and no texture, stroke hairlines with paint's color. |
- HairProc hairProc = ChooseHairProc(paint.isAntiAlias()); |
+ SkScan::HairRCProc hairProc = ChooseHairProc(paint.isAntiAlias()); |
const SkRasterClip& clip = *fRC; |
while (vertProc(&state)) { |
- hairProc(devVerts[state.f0], devVerts[state.f1], clip, blitter.get()); |
- hairProc(devVerts[state.f1], devVerts[state.f2], clip, blitter.get()); |
- hairProc(devVerts[state.f2], devVerts[state.f0], clip, blitter.get()); |
+ SkPoint array[] = { |
+ devVerts[state.f0], devVerts[state.f1], devVerts[state.f2], devVerts[state.f0] |
+ }; |
+ hairProc(array, 4, clip, blitter.get()); |
} |
} |
} |