1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2016 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SampleCode.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCanvas.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPath.h" 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkRandom.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass MegaStrokeView : public SampleView { 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot MegaStrokeView() { 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fClip.set(0, 0, 950, 600); 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fAngle = 0; 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fPlusMinus = 0; 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRandom rand; 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fMegaPath.reset(); 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int index = 0; index < 921; ++index) { 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for (int segs = 0; segs < 40; ++segs) { 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fMegaPath.lineTo(SkIntToScalar(index), SkIntToScalar(rand.nextRangeU(500, 600))); 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprotected: 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // overrides from SkEventSink 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool onQuery(SkEvent* evt) override { 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (SampleCode::TitleQ(*evt)) { 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SampleCode::TitleR(evt, "MegaStroke"); 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return true; 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkUnichar uni; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (SampleCode::CharQ(*evt, &uni)) { 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fClip.set(0, 0, 950, 600); 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (evt->isType("SampleCode_Key_Event")) { 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fClip.set(0, 0, 950, 600); 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return this->INHERITED::onQuery(evt); 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBackground(SkCanvas* canvas) override { 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawContent(SkCanvas* canvas) override { 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint paint; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setAntiAlias(true); 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setARGB(255,255,153,0); 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setStyle(SkPaint::kStroke_Style); 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot paint.setStrokeWidth(1); 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->save(); 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clipRect(fClip); 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->clear(SK_ColorWHITE); 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawPath(fMegaPath, paint); 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->restore(); 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint divSimPaint; 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot divSimPaint.setColor(SK_ColorBLUE); 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar x = SkScalarSin(fAngle * SK_ScalarPI / 180) * 200 + 250; 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar y = SkScalarCos(fAngle * SK_ScalarPI / 180) * 200 + 250; 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if ((fPlusMinus ^= 1)) { 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fAngle += 5; 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } else { 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fAngle -= 5; 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRect divSim = SkRect::MakeXYWH(x, y, 100, 100); 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot divSim.outset(30, 30); 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot canvas->drawRect(divSim, divSimPaint); 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fClip = divSim; 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onSizeChange() override { 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fClip.set(0, 0, 950, 600); 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool onAnimate(const SkAnimTimer& ) override { 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return true; 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPath fMegaPath; 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRect fClip; 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int fAngle; 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int fPlusMinus; 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef SampleView INHERITED; 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot////////////////////////////////////////////////////////////////////////////// 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 96fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic SkView* MyFactory() { return new MegaStrokeView; } 97fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic SkViewRegister reg(MyFactory); 98