From bfd5f171e6a3eccd7c4bede652a85fd76bcbce2a Mon Sep 17 00:00:00 2001 From: reed Date: Thu, 7 Jan 2016 11:28:08 -0800 Subject: Revert[2] of "add backdrop option to SaveLayerRec" Reverted because of picture/serialization failure BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1567063002 TBR=mtklein Review URL: https://codereview.chromium.org/1567063002 --- samplecode/SampleLayers.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 2 deletions(-) (limited to 'samplecode/SampleLayers.cpp') diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp index 52bf5b357b..f8ebd7c94f 100644 --- a/samplecode/SampleLayers.cpp +++ b/samplecode/SampleLayers.cpp @@ -232,8 +232,80 @@ protected: private: typedef SkView INHERITED; }; +DEF_SAMPLE( return new LayersView; ) ////////////////////////////////////////////////////////////////////////////// -static SkView* MyFactory() { return new LayersView; } -static SkViewRegister reg(MyFactory); +#include "SkBlurImageFilter.h" +#include "SkMatrixConvolutionImageFilter.h" +#include "SkMorphologyImageFilter.h" + +#include "Resources.h" +#include "SkAnimTimer.h" + +class BackdropView : public SampleView { + SkPoint fCenter; + SkScalar fAngle; + SkAutoTUnref fImage; + SkAutoTUnref fFilter; +public: + BackdropView() { + fCenter.set(200, 150); + fAngle = 0; + fImage.reset(GetResourceAsImage("mandrill_512.png")); + fFilter.reset(SkDilateImageFilter::Create(8, 8)); + } + +protected: + // overrides from SkEventSink + bool onQuery(SkEvent* evt) override { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "Backdrop"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + void onDrawContent(SkCanvas* canvas) override { + canvas->drawImage(fImage, 0, 0, nullptr); + + const SkScalar w = 250; + const SkScalar h = 150; + SkPath path; + path.addOval(SkRect::MakeXYWH(-w/2, -h/2, w, h)); + SkMatrix m; + m.setRotate(fAngle); + m.postTranslate(fCenter.x(), fCenter.y()); + path.transform(m); + + canvas->clipPath(path, SkRegion::kIntersect_Op, true); + const SkRect bounds = path.getBounds(); + + SkPaint paint; + paint.setAlpha(0xCC); + canvas->saveLayer({ &bounds, &paint, fFilter, 0 }); + + canvas->restore(); + } + + bool onAnimate(const SkAnimTimer& timer) override { + fAngle = SkDoubleToScalar(fmod(timer.secs() * 360 / 5, 360)); + return true; + } + + SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override { + this->inval(nullptr); + return new Click(this); + } + + bool onClick(Click* click) override { + this->inval(nullptr); + fCenter = click->fCurr; + return this->INHERITED::onClick(click); + } + +private: + typedef SampleView INHERITED; +}; +DEF_SAMPLE( return new BackdropView; ) + -- cgit v1.2.3