Chromium Code Reviews| Index: src/core/SkDraw.cpp |
| diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp |
| index 636eaa6f61950ec35b5132798c6043c18d8774d4..6de2e5553062d8a14275cb6c97f35de7397ee02a 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,10 +1872,8 @@ void SkDraw::drawPosText(const char text[], size_t byteLength, |
| /////////////////////////////////////////////////////////////////////////////// |
| -typedef void (*HairProc)(SkPoint, SkPoint, const SkRasterClip&, SkBlitter*); |
| - |
| -static HairProc ChooseHairProc(bool doAntiAlias) { |
| - return doAntiAlias ? SkScan::AntiHairLine : SkScan::HairLine; |
| +static SkScan::HairRCProc ChooseHairProc(bool doAntiAlias) { |
| + return doAntiAlias ? &SkScan::AntiHairLine : SkScan::HairLine; |
|
caryclark
2015/04/14 17:12:35
why the ampersand?
reed1
2015/04/14 17:34:25
No idea. fixed.
|
| } |
| static bool texture_to_matrix(const VertState& state, const SkPoint verts[], |
| @@ -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()); |
| } |
| } |
| } |