aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleMegaStroke.cpp
diff options
context:
space:
mode:
authorGravatar caryclark <caryclark@google.com>2016-01-30 10:11:21 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-30 10:11:21 -0800
commit70e6d6074a482fb791b9a147f471670be54a0d95 (patch)
treef954d38b38be0805cd6e7deb864af2258b141880 /samplecode/SampleMegaStroke.cpp
parent653c12d773def4d25cbdb78072b84404a5d80957 (diff)
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
Diffstat (limited to 'samplecode/SampleMegaStroke.cpp')
-rw-r--r--samplecode/SampleMegaStroke.cpp99
1 files changed, 99 insertions, 0 deletions
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);