| Index: gm/strokes.cpp
|
| diff --git a/gm/strokes.cpp b/gm/strokes.cpp
|
| index 73823907a37c1d613e55ca77221cf7cab2188b5d..cfc88f343d0a9102b0bdc4089ae587a4ae3fae8a 100644
|
| --- a/gm/strokes.cpp
|
| +++ b/gm/strokes.cpp
|
| @@ -266,6 +266,60 @@ private:
|
| typedef skiagm::GM INHERITED;
|
| };
|
|
|
| +// Test stroking for curves that produce degenerate tangents when t is 0 or 1 (see bug 4191)
|
| +class Strokes5GM : public skiagm::GM {
|
| +public:
|
| + Strokes5GM() {}
|
| +
|
| +protected:
|
| +
|
| + SkString onShortName() override {
|
| + return SkString("zero_control_stroke");
|
| + }
|
| +
|
| + SkISize onISize() override {
|
| + return SkISize::Make(W, H*2);
|
| + }
|
| +
|
| + void onDraw(SkCanvas* canvas) override {
|
| + SkPaint p;
|
| + p.setColor(SK_ColorRED);
|
| + p.setAntiAlias(true);
|
| + p.setStyle(SkPaint::kStroke_Style);
|
| + p.setStrokeWidth(40);
|
| + p.setStrokeCap(SkPaint::kButt_Cap);
|
| +
|
| + SkPath path;
|
| + path.moveTo(157.474f,111.753f);
|
| + path.cubicTo(128.5f,111.5f,35.5f,29.5f,35.5f,29.5f);
|
| + canvas->drawPath(path, p);
|
| + path.reset();
|
| + path.moveTo(250, 50);
|
| + path.quadTo(280, 80, 280, 80);
|
| + canvas->drawPath(path, p);
|
| + path.reset();
|
| + path.moveTo(150, 50);
|
| + path.conicTo(180, 80, 180, 80, 0.707f);
|
| + canvas->drawPath(path, p);
|
| +
|
| + path.reset();
|
| + path.moveTo(157.474f,311.753f);
|
| + path.cubicTo(157.474f,311.753f,85.5f,229.5f,35.5f,229.5f);
|
| + canvas->drawPath(path, p);
|
| + path.reset();
|
| + path.moveTo(280, 250);
|
| + path.quadTo(280, 250, 310, 280);
|
| + canvas->drawPath(path, p);
|
| + path.reset();
|
| + path.moveTo(180, 250);
|
| + path.conicTo(180, 250, 210, 280, 0.707f);
|
| + canvas->drawPath(path, p);
|
| + }
|
| +
|
| +private:
|
| + typedef skiagm::GM INHERITED;
|
| +};
|
| +
|
|
|
| //////////////////////////////////////////////////////////////////////////////
|
|
|
| @@ -273,8 +327,10 @@ static skiagm::GM* F0(void*) { return new StrokesGM; }
|
| static skiagm::GM* F1(void*) { return new Strokes2GM; }
|
| static skiagm::GM* F2(void*) { return new Strokes3GM; }
|
| static skiagm::GM* F3(void*) { return new Strokes4GM; }
|
| +static skiagm::GM* F4(void*) { return new Strokes5GM; }
|
|
|
| static skiagm::GMRegistry R0(F0);
|
| static skiagm::GMRegistry R1(F1);
|
| static skiagm::GMRegistry R2(F2);
|
| static skiagm::GMRegistry R3(F3);
|
| +static skiagm::GMRegistry R4(F4);
|
|
|