Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Unified Diff: gm/dashing.cpp

Issue 699623003: Crop the fast path dashed lines to the cull rect (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/effects/SkDashPathEffect.cpp » ('j') | src/effects/SkDashPathEffect.cpp » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/dashing.cpp
diff --git a/gm/dashing.cpp b/gm/dashing.cpp
index 55addc8a66f3cba4086924ff90289e90c29ad938..0a3249c86584c706660c97fae02eab616cfae178 100644
--- a/gm/dashing.cpp
+++ b/gm/dashing.cpp
@@ -12,7 +12,8 @@
static void drawline(SkCanvas* canvas, int on, int off, const SkPaint& paint,
SkScalar finalX = SkIntToScalar(600), SkScalar finalY = SkIntToScalar(0),
- SkScalar phase = SkIntToScalar(0)) {
+ SkScalar phase = SkIntToScalar(0),
+ SkScalar startX = SkIntToScalar(0), SkScalar startY = SkIntToScalar(0)) {
SkPaint p(paint);
const SkScalar intervals[] = {
@@ -21,7 +22,7 @@ static void drawline(SkCanvas* canvas, int on, int off, const SkPaint& paint,
};
p.setPathEffect(SkDashPathEffect::Create(intervals, 2, phase))->unref();
- canvas->drawLine(0, 0, finalX, finalY, p);
+ canvas->drawLine(startX, startY, finalX, finalY, p);
}
// earlier bug stopped us from drawing very long single-segment dashes, because
@@ -396,12 +397,53 @@ protected:
//////////////////////////////////////////////////////////////////////////////
-static skiagm::GM* F0(void*) { return new DashingGM; }
-static skiagm::GM* F1(void*) { return new Dashing2GM; }
-static skiagm::GM* F2(void*) { return new Dashing3GM; }
-static skiagm::GM* F3(void*) { return new Dashing4GM; }
+class Dashing5GM : public skiagm::GM {
+public:
+ Dashing5GM(bool doAA) : fDoAA(doAA) {}
+
+protected:
+ virtual uint32_t onGetFlags() const SK_OVERRIDE { return kAsBench_Flag | kSkipTiled_Flag; }
+
+ virtual SkString onShortName() SK_OVERRIDE {
+ if (fDoAA) {
+ return SkString("dashing5_aa");
+ } else {
+ return SkString("dashing5_bw");
+ }
+ }
+
+ virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 300); }
+
+ virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+ static const int kStrokeWidth = 8;
+
+ SkPaint paint;
+ paint.setStyle(SkPaint::kStroke_Style);
+
+ paint.setAntiAlias(fDoAA);
+ paint.setStrokeWidth(SkIntToScalar(kStrokeWidth));
+
+ for (int x = 0; x < 640; x += 10) {
+ drawline(canvas, 1, 1, paint, SkIntToScalar(x), -SkIntToScalar(10 * 1000), 0,
+ SkIntToScalar(x), SkIntToScalar(10 * 1000));
+ }
+
+ for (int y = 0; y < 300; y += 10) {
+ drawline(canvas, 1, 1, paint, -SkIntToScalar(10 * 1000), SkIntToScalar(y), 0,
+ SkIntToScalar(10 * 1000), SkIntToScalar(y));
+ }
+ }
+
+private:
+ bool fDoAA;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+DEF_GM(return SkNEW(DashingGM);)
+DEF_GM(return SkNEW(Dashing2GM);)
+DEF_GM(return SkNEW(Dashing3GM);)
+DEF_GM(return SkNEW(Dashing4GM);)
+DEF_GM(return SkNEW_ARGS(Dashing5GM, (true));)
+DEF_GM(return SkNEW_ARGS(Dashing5GM, (false));)
-static skiagm::GMRegistry gR0(F0);
-static skiagm::GMRegistry gR1(F1);
-static skiagm::GMRegistry gR2(F2);
-static skiagm::GMRegistry gR3(F3);
« no previous file with comments | « no previous file | src/effects/SkDashPathEffect.cpp » ('j') | src/effects/SkDashPathEffect.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698