From b4f404ac4195e5b1f49e49c591bd69f98b246f9b Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Fri, 10 Jul 2009 17:02:17 +0000 Subject: [PATCH] handle cap==round for drawPoints git-svn-id: http://skia.googlecode.com/svn/trunk@266 2bbb7eff-a529-9590-31e7-b0007b416f81 --- samplecode/SamplePoints.cpp | 3 ++- src/core/SkDraw.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/samplecode/SamplePoints.cpp b/samplecode/SamplePoints.cpp index 7dc98f3..57e45c9 100644 --- a/samplecode/SamplePoints.cpp +++ b/samplecode/SamplePoints.cpp @@ -85,13 +85,14 @@ protected: p3.setColor(SK_ColorWHITE); // fAA = !fAA; - + fAA = true; p0.setAntiAlias(fAA); p1.setAntiAlias(fAA); p2.setAntiAlias(fAA); p3.setAntiAlias(fAA); p0.setStrokeWidth(SkIntToScalar(4)); + p2.setStrokeCap(SkPaint::kRound_Cap); p2.setStrokeWidth(SkIntToScalar(6)); SkPoint* pts = new SkPoint[n]; diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp index 352e4ed..2b7c55f 100644 --- a/src/core/SkDraw.cpp +++ b/src/core/SkDraw.cpp @@ -443,6 +443,7 @@ static void aa_square_proc(const PtProcRec& rec, const SkPoint devPts[], } } +// If this guy returns true, then chooseProc() must return a valid proc bool PtProcRec::init(SkCanvas::PointMode mode, const SkPaint& paint, const SkMatrix* matrix, const SkRegion* clip) { if (paint.getPathEffect()) { @@ -456,7 +457,8 @@ bool PtProcRec::init(SkCanvas::PointMode mode, const SkPaint& paint, fRadius = SK_Fixed1 >> 1; return true; } - if (matrix->rectStaysRect() && SkCanvas::kPoints_PointMode == mode) { + if (paint.getStrokeCap() != SkPaint::kRound_Cap && + matrix->rectStaysRect() && SkCanvas::kPoints_PointMode == mode) { SkScalar sx = matrix->get(SkMatrix::kMScaleX); SkScalar sy = matrix->get(SkMatrix::kMScaleY); if (SkScalarNearlyZero(sx - sy)) { @@ -475,7 +477,7 @@ bool PtProcRec::init(SkCanvas::PointMode mode, const SkPaint& paint, } PtProcRec::Proc PtProcRec::chooseProc(SkBlitter* blitter) { - Proc proc; + Proc proc = NULL; // for our arrays SkASSERT(0 == SkCanvas::kPoints_PointMode); @@ -506,7 +508,7 @@ PtProcRec::Proc PtProcRec::chooseProc(SkBlitter* blitter) { proc = gBWProcs[fMode]; } } - } else { + } else if (fPaint->getStrokeCap() != SkPaint::kRound_Cap) { SkASSERT(SkCanvas::kPoints_PointMode == fMode); if (fPaint->isAntiAlias()) { proc = aa_square_proc; -- 2.7.4