From 70e6d6074a482fb791b9a147f471670be54a0d95 Mon Sep 17 00:00:00 2001 From: caryclark Date: Sat, 30 Jan 2016 10:11:21 -0800 Subject: add new tests These tests are for upcoming changes to optimize the path edge list. TBR=reed@google.com BUG=573166 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1651573002 Review URL: https://codereview.chromium.org/1651573002 --- samplecode/SampleMegaStroke.cpp | 99 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 samplecode/SampleMegaStroke.cpp (limited to 'samplecode/SampleMegaStroke.cpp') diff --git a/samplecode/SampleMegaStroke.cpp b/samplecode/SampleMegaStroke.cpp new file mode 100644 index 0000000000..d85915600a --- /dev/null +++ b/samplecode/SampleMegaStroke.cpp @@ -0,0 +1,99 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SampleCode.h" +#include "SkCanvas.h" +#include "SkPath.h" +#include "SkRandom.h" + +class MegaStrokeView : public SampleView { +public: + MegaStrokeView() { + fClip.set(0, 0, 950, 600); + fAngle = 0; + fPlusMinus = 0; + SkRandom rand; + fMegaPath.reset(); + for (int index = 0; index < 921; ++index) { + for (int segs = 0; segs < 40; ++segs) { + fMegaPath.lineTo(SkIntToScalar(index), SkIntToScalar(rand.nextRangeU(500, 600))); + } + } + } + +protected: + // overrides from SkEventSink + bool onQuery(SkEvent* evt) override { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "MegaStroke"); + return true; + } + + SkUnichar uni; + if (SampleCode::CharQ(*evt, &uni)) { + fClip.set(0, 0, 950, 600); + } + SkString str; + evt->getType(&str); + if (str == SkString("SampleCode_Key_Event")) { + fClip.set(0, 0, 950, 600); + } + return this->INHERITED::onQuery(evt); + } + + void onDrawBackground(SkCanvas* canvas) override { + } + + void onDrawContent(SkCanvas* canvas) override { + SkPaint paint; + paint.setAntiAlias(true); + paint.setARGB(255,255,153,0); + paint.setStyle(SkPaint::kStroke_Style); + paint.setStrokeWidth(1); + + canvas->save(); + canvas->clipRect(fClip); + canvas->clear(SK_ColorWHITE); + canvas->drawPath(fMegaPath, paint); + canvas->restore(); + + SkPaint divSimPaint; + divSimPaint.setColor(SK_ColorBLUE); + SkScalar x = SkScalarSin(fAngle * SK_ScalarPI / 180) * 200 + 250; + SkScalar y = SkScalarCos(fAngle * SK_ScalarPI / 180) * 200 + 250; + + if ((fPlusMinus ^= 1)) { + fAngle += 5; + } else { + fAngle -= 5; + } + SkRect divSim = SkRect::MakeXYWH(x, y, 100, 100); + divSim.outset(30, 30); + canvas->drawRect(divSim, divSimPaint); + fClip = divSim; + } + + void onSizeChange() override { + fClip.set(0, 0, 950, 600); + } + + bool onAnimate(const SkAnimTimer& ) override { + return true; + } + +private: + SkPath fMegaPath; + SkRect fClip; + int fAngle; + int fPlusMinus; + typedef SampleView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new MegaStrokeView; } +static SkViewRegister reg(MyFactory); -- cgit v1.2.3