drawPoints with maskfilter fix
Fix: just check for maskfilter, and reject fast-cases if we have one.
New GM: points_maskfilter
before: draw red squares with no blurs, but red circles had blurs
after: both sets have the blur (i.e. the maskfilter)
Bug: skia:12435
Change-Id: I460908818d2edf8c6065db2fe99a9df0e7ffc543
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/448266
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/gm/points.cpp b/gm/points.cpp
index 324cb0a..d81e8f1 100644
--- a/gm/points.cpp
+++ b/gm/points.cpp
@@ -74,9 +74,40 @@
private:
using INHERITED = GM;
};
-
-//////////////////////////////////////////////////////////////////////////////
-
DEF_GM( return new PointsGM; )
-
} // namespace skiagm
+
+#include "include/core/SkMaskFilter.h"
+
+DEF_SIMPLE_GM(points_maskfilter, canvas, 512, 256) {
+ constexpr int N = 30;
+ SkPoint pts[N];
+
+ SkRandom rand;
+ for (SkPoint& p : pts) {
+ p.fX = rand.nextF() * 220 + 18;
+ p.fY = rand.nextF() * 220 + 18;
+ }
+
+ auto mf = SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, 6);
+ const SkPaint::Cap caps[] = { SkPaint::kSquare_Cap, SkPaint::kRound_Cap };
+
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setStroke(true);
+ paint.setStrokeWidth(10);
+
+ for (auto cap : caps) {
+ paint.setStrokeCap(cap);
+
+ paint.setMaskFilter(mf);
+ paint.setColor(SK_ColorBLACK);
+ canvas->drawPoints(SkCanvas::kPoints_PointMode, N, pts, paint);
+
+ paint.setMaskFilter(nullptr);
+ paint.setColor(SK_ColorRED);
+ canvas->drawPoints(SkCanvas::kPoints_PointMode, N, pts, paint);
+
+ canvas->translate(256, 0);
+ }
+}