aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleLayers.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-01-07 11:28:08 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-07 11:28:08 -0800
commitbfd5f171e6a3eccd7c4bede652a85fd76bcbce2a (patch)
treeb46a17e4b9860d628d40480178e999fea4bc32c7 /samplecode/SampleLayers.cpp
parent133eaaacdd23fb45db47a32e854eab3ecd76f213 (diff)
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
Diffstat (limited to 'samplecode/SampleLayers.cpp')
-rw-r--r--samplecode/SampleLayers.cpp76
1 files changed, 74 insertions, 2 deletions
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<SkImage> fImage;
+ SkAutoTUnref<SkImageFilter> 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; )
+