diff options
author | reed <reed@google.com> | 2015-02-09 13:01:05 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-09 13:01:05 -0800 |
commit | 61adb1b6491db3d3552d09a1c69ba5a37beb38d5 (patch) | |
tree | 87a13f146b3b130f94890c3f32c160ddab96e842 /gm/addarc.cpp | |
parent | 57f27bdcbd328491a121918b4ab9301fbcdec642 (diff) |
more gms for conics
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/869843006
Diffstat (limited to 'gm/addarc.cpp')
-rw-r--r-- | gm/addarc.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gm/addarc.cpp b/gm/addarc.cpp index e6fad25772..aef7916da5 100644 --- a/gm/addarc.cpp +++ b/gm/addarc.cpp @@ -8,6 +8,7 @@ #include "gm.h" #include "SkAnimTimer.h" #include "SkCanvas.h" +#include "SkPathMeasure.h" #include "SkRandom.h" class AddArcGM : public skiagm::GM { @@ -60,3 +61,53 @@ private: typedef skiagm::GM INHERITED; }; DEF_GM( return new AddArcGM; ) + +/////////////////////////////////////////////////// + +#define R 400 + +class AddArcMeasGM : public skiagm::GM { +public: + AddArcMeasGM() {} + +protected: + SkString onShortName() SK_OVERRIDE { return SkString("addarc_meas"); } + + SkISize onISize() SK_OVERRIDE { return SkISize::Make(2*R + 40, 2*R + 40); } + + void onDraw(SkCanvas* canvas) SK_OVERRIDE { + canvas->translate(R + 20, R + 20); + + SkPaint paint; + paint.setAntiAlias(true); + paint.setStyle(SkPaint::kStroke_Style); + + SkPaint measPaint; + measPaint.setAntiAlias(true); + measPaint.setColor(SK_ColorRED); + + const SkRect oval = SkRect::MakeLTRB(-R, -R, R, R); + canvas->drawOval(oval, paint); + + for (SkScalar deg = 0; deg < 360; deg += 10) { + const SkScalar rad = SkDegreesToRadians(deg); + SkScalar rx = SkScalarCos(rad) * R; + SkScalar ry = SkScalarSin(rad) * R; + + canvas->drawLine(0, 0, rx, ry, paint); + + SkPath path; + path.addArc(oval, 0, deg); + SkPathMeasure meas(path, false); + SkScalar arcLen = rad * R; + SkPoint pos; + if (meas.getPosTan(arcLen, &pos, NULL)) { + canvas->drawLine(0, 0, pos.x(), pos.y(), measPaint); + } + } + } + +private: + typedef skiagm::GM INHERITED; +}; +DEF_GM( return new AddArcMeasGM; ) |