| Index: gm/convex_all_line_paths.cpp
|
| diff --git a/gm/convex_all_line_paths.cpp b/gm/convex_all_line_paths.cpp
|
| index eb4bdcfd054005fdfae8bebf25d6e97878c284d5..a54c0e4a018f7674297584fca28023da51945cfd 100644
|
| --- a/gm/convex_all_line_paths.cpp
|
| +++ b/gm/convex_all_line_paths.cpp
|
| @@ -28,12 +28,17 @@ namespace skiagm {
|
| // paths
|
| class ConvexLineOnlyPathsGM : public GM {
|
| public:
|
| - ConvexLineOnlyPathsGM() {
|
| + ConvexLineOnlyPathsGM(bool doStrokeAndFill) : fDoStrokeAndFill(doStrokeAndFill) {
|
| this->setBGColor(0xFFFFFFFF);
|
| }
|
|
|
| protected:
|
| - SkString onShortName() override { return SkString("convex-lineonly-paths"); }
|
| + SkString onShortName() override {
|
| + if (fDoStrokeAndFill) {
|
| + return SkString("convex-lineonly-paths-stroke-and-fill");
|
| + }
|
| + return SkString("convex-lineonly-paths");
|
| + }
|
| SkISize onISize() override { return SkISize::Make(kGMWidth, kGMHeight); }
|
| bool runAsBench() const override { return true; }
|
|
|
| @@ -258,20 +263,35 @@ protected:
|
| if (offset->fX+path.getBounds().width() > kGMWidth) {
|
| offset->fX = 0;
|
| offset->fY += kMaxPathHeight;
|
| + if (fDoStrokeAndFill) {
|
| + offset->fX += kStrokeWidth / 2.0f;
|
| + offset->fY += kStrokeWidth / 2.0f;
|
| + }
|
| }
|
| center = { offset->fX + SkScalarHalf(path.getBounds().width()), offset->fY};
|
| offset->fX += path.getBounds().width();
|
| + if (fDoStrokeAndFill) {
|
| + offset->fX += kStrokeWidth;
|
| + }
|
| }
|
|
|
| const SkColor colors[2] = { SK_ColorBLACK, SK_ColorWHITE };
|
| const SkPath::Direction dirs[2] = { SkPath::kCW_Direction, SkPath::kCCW_Direction };
|
| const float scales[] = { 1.0f, 0.75f, 0.5f, 0.25f, 0.1f, 0.01f, 0.001f };
|
| + const SkPaint::Join joins[3] = { SkPaint::kRound_Join,
|
| + SkPaint::kBevel_Join,
|
| + SkPaint::kMiter_Join };
|
|
|
| SkPaint paint;
|
| paint.setAntiAlias(true);
|
|
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(scales); ++i) {
|
| SkPath path = GetPath(index, (int) i, dirs[i%2]);
|
| + if (fDoStrokeAndFill) {
|
| + paint.setStyle(SkPaint::kStrokeAndFill_Style);
|
| + paint.setStrokeJoin(joins[i%3]);
|
| + paint.setStrokeWidth(SkIntToScalar(kStrokeWidth));
|
| + }
|
|
|
| canvas->save();
|
| canvas->translate(center.fX, center.fY);
|
| @@ -285,6 +305,10 @@ protected:
|
| void onDraw(SkCanvas* canvas) override {
|
| // the right edge of the last drawn path
|
| SkPoint offset = { 0, SkScalarHalf(kMaxPathHeight) };
|
| + if (fDoStrokeAndFill) {
|
| + offset.fX += kStrokeWidth / 2.0f;
|
| + offset.fY += kStrokeWidth / 2.0f;
|
| + }
|
|
|
| for (int i = 0; i < kNumPaths; ++i) {
|
| this->drawPath(canvas, i, &offset);
|
| @@ -296,6 +320,11 @@ protected:
|
|
|
| SkPaint p;
|
| p.setAntiAlias(true);
|
| + if (fDoStrokeAndFill) {
|
| + p.setStyle(SkPaint::kStrokeAndFill_Style);
|
| + p.setStrokeJoin(SkPaint::kMiter_Join);
|
| + p.setStrokeWidth(SkIntToScalar(kStrokeWidth));
|
| + }
|
|
|
| SkPath p1;
|
| p1.moveTo(60.8522949f, 364.671021f);
|
| @@ -307,15 +336,19 @@ protected:
|
| }
|
|
|
| private:
|
| + static const int kStrokeWidth = 10;
|
| static const int kNumPaths = 20;
|
| static const int kMaxPathHeight = 100;
|
| static const int kGMWidth = 512;
|
| static const int kGMHeight = 512;
|
|
|
| + bool fDoStrokeAndFill;
|
| +
|
| typedef GM INHERITED;
|
| };
|
|
|
| //////////////////////////////////////////////////////////////////////////////
|
|
|
| -DEF_GM(return new ConvexLineOnlyPathsGM;)
|
| +DEF_GM(return new ConvexLineOnlyPathsGM(false);)
|
| +DEF_GM(return new ConvexLineOnlyPathsGM(true);)
|
| }
|
|
|