Chromium Code Reviews| Index: gm/addarc.cpp |
| diff --git a/gm/addarc.cpp b/gm/addarc.cpp |
| index 67d752aeb1f32224122b9fe05774b56b5205a8b9..fea15bacb727bae6b1a15402b47b2353c428c22a 100644 |
| --- a/gm/addarc.cpp |
| +++ b/gm/addarc.cpp |
| @@ -162,3 +162,71 @@ private: |
| typedef skiagm::GM INHERITED; |
| }; |
| DEF_GM( return new StrokeCircleGM; ) |
| + |
| +////////////////////// |
| + |
| +static void arc(SkPath* path, SkScalar x, SkScalar y, SkScalar r, SkScalar start, SkScalar end, |
| + bool ccw) { |
| + SkRect bounds = { x - r, y - r, x + r, y + r }; |
| + SkScalar sweep = ccw ? end - start : start - end; |
| + path->arcTo(bounds, start, sweep, false); |
| +} |
| + |
|
robertphillips
2015/02/17 17:33:45
Which one?
reed2
2015/02/17 18:35:36
Done.
|
| +// Lifted from layouttest |
| +class ManyArcsGM : public skiagm::GM { |
| +public: |
| + ManyArcsGM() {} |
| + |
| +protected: |
| + SkString onShortName() SK_OVERRIDE { return SkString("manyarcs"); } |
| + |
| + SkISize onISize() SK_OVERRIDE { return SkISize::Make(620, 330); } |
| + |
| + void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| + SkPaint paint; |
| + paint.setAntiAlias(true); |
| + paint.setStyle(SkPaint::kStroke_Style); |
| + |
| + canvas->translate(10, 10); |
| + |
| + // 20 angles. |
| + SkScalar sweepAngles[] = { |
| + -123.7, -2.3, -2, -1, -0.3, -0.000001, 0, 0.000001, 0.3, 0.7, |
| + 1, 1.3, 1.5, 1.7, 1.99999, 2, 2.00001, 2.3, 4.3, 3934723942837.3 |
| + }; |
| + for (size_t i = 0; i < SK_ARRAY_COUNT(sweepAngles); ++i) { |
| + sweepAngles[i] *= 180; |
| + } |
| + |
| + SkScalar startAngles[] = { -1, -0.5, 0, 0.5 }; |
| + for (size_t i = 0; i < SK_ARRAY_COUNT(startAngles); ++i) { |
| + startAngles[i] *= 180; |
| + } |
| + |
| + bool anticlockwise = false; |
| + SkScalar sign = 1; |
| + for (size_t i = 0; i < SK_ARRAY_COUNT(startAngles) * 2; ++i) { |
| + if (i == SK_ARRAY_COUNT(startAngles)) { |
| + anticlockwise = true; |
| + sign = -1; |
| + } |
| + SkScalar startAngle = startAngles[i % SK_ARRAY_COUNT(startAngles)] * sign; |
| + canvas->save(); |
| + for (size_t j = 0; j < SK_ARRAY_COUNT(sweepAngles); ++j) { |
| + SkPath path; |
| + path.moveTo(0, 2); |
|
robertphillips
2015/02/17 17:33:45
overlength ?
reed2
2015/02/17 18:35:36
Not sure what you mean.
reed2
2015/02/17 18:55:20
Done.
|
| + arc(&path, 18, 15, 10, startAngle, startAngle + (sweepAngles[j] * sign), anticlockwise); |
| + path.lineTo(0, 28); |
| + canvas->drawPath(path, paint); |
| + canvas->translate(30, 0); |
| + } |
| + canvas->restore(); |
| + canvas->translate(0, 40); |
| + } |
| + } |
| + |
| +private: |
| + typedef skiagm::GM INHERITED; |
| +}; |
| +DEF_GM( return new ManyArcsGM; ) |
| + |