| 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());
|
| }
|
| }
|
| }
|
|
|