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