blob: 5d6638ad8773d213826377d3cb8a6f0a0decc77e [file] [log] [blame]
bsalomon@google.com85003222012-03-28 14:44:37 +00001
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8#include "SampleCode.h"
9#include "SkBlurMaskFilter.h"
10#include "SkColorPriv.h"
11#include "SkCanvas.h"
12#include "SkRandom.h"
13
14class AnimBlurView : public SampleView {
15public:
16 AnimBlurView() {
17 }
18
19protected:
20 // overrides from SkEventSink
21 virtual bool onQuery(SkEvent* evt) {
22 if (SampleCode::TitleQ(*evt)) {
23 SampleCode::TitleR(evt, "AnimBlur");
24 return true;
25 }
26 return this->INHERITED::onQuery(evt);
27 }
28
29 virtual void onDrawContent(SkCanvas* canvas) {
30
robertphillips@google.comb7061172013-09-06 14:16:12 +000031 SkScalar blurSigma = SampleCode::GetAnimSinScalar(100 * SK_Scalar1,
32 4 * SK_Scalar1,
33 5 * SK_Scalar1);
bsalomon@google.com85003222012-03-28 14:44:37 +000034
35 SkScalar circleRadius = 3 * SK_Scalar1 +
36 SampleCode::GetAnimSinScalar(150 * SK_Scalar1,
37 25 * SK_Scalar1,
38 3 * SK_Scalar1);
39
40 static const SkBlurMaskFilter::BlurStyle gStyles[] = {
41 SkBlurMaskFilter::kNormal_BlurStyle,
42 SkBlurMaskFilter::kInner_BlurStyle,
43 SkBlurMaskFilter::kSolid_BlurStyle,
44 SkBlurMaskFilter::kOuter_BlurStyle,
45 };
commit-bot@chromium.orge0e7cfe2013-09-09 20:09:12 +000046 SkRandom random;
bsalomon@google.com85003222012-03-28 14:44:37 +000047
robertphillips@google.com7460b372012-04-25 16:54:51 +000048 for (size_t i = 0; i < SK_ARRAY_COUNT(gStyles); ++i) {
robertphillips@google.comb7061172013-09-06 14:16:12 +000049 SkMaskFilter* mf = SkBlurMaskFilter::Create(
bsalomon@google.com85003222012-03-28 14:44:37 +000050 gStyles[i],
robertphillips@google.comb7061172013-09-06 14:16:12 +000051 blurSigma,
bsalomon@google.com85003222012-03-28 14:44:37 +000052 SkBlurMaskFilter::kHighQuality_BlurFlag);
53 SkPaint paint;
reed@google.com59ed2c22012-04-09 17:12:30 +000054 SkSafeUnref(paint.setMaskFilter(mf));
bsalomon@google.com85003222012-03-28 14:44:37 +000055 paint.setColor(random.nextU() | 0xff000000);
56 canvas->drawCircle(200 * SK_Scalar1 + 400 * (i % 2) * SK_Scalar1,
57 200 * SK_Scalar1 + i / 2 * 400 * SK_Scalar1,
58 circleRadius, paint);
59 }
60 this->inval(NULL);
61 }
62
63private:
64 typedef SkView INHERITED;
65};
66
67//////////////////////////////////////////////////////////////////////////////
68
69static SkView* MyFactory() { return new AnimBlurView; }
70static SkViewRegister reg(MyFactory);