• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
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 
14 class AnimBlurView : public SampleView {
15 public:
AnimBlurView()16     AnimBlurView() {
17     }
18 
19 protected:
20     // overrides from SkEventSink
onQuery(SkEvent * evt)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 
onDrawContent(SkCanvas * canvas)29     virtual void onDrawContent(SkCanvas* canvas) {
30 
31         SkScalar blurSigma = SampleCode::GetAnimSinScalar(100 * SK_Scalar1,
32                                                           4 * SK_Scalar1,
33                                                           5 * SK_Scalar1);
34 
35         SkScalar circleRadius = 3 * SK_Scalar1 +
36                                 SampleCode::GetAnimSinScalar(150 * SK_Scalar1,
37                                                              25 * SK_Scalar1,
38                                                              3 * SK_Scalar1);
39 
40         static const SkBlurStyle gStyles[] = {
41             kNormal_SkBlurStyle,
42             kInner_SkBlurStyle,
43             kSolid_SkBlurStyle,
44             kOuter_SkBlurStyle,
45         };
46         SkRandom random;
47 
48         for (size_t i = 0; i < SK_ARRAY_COUNT(gStyles); ++i) {
49             SkMaskFilter* mf = SkBlurMaskFilter::Create(
50                                        gStyles[i],
51                                        blurSigma,
52                                        SkBlurMaskFilter::kHighQuality_BlurFlag);
53             SkPaint paint;
54             SkSafeUnref(paint.setMaskFilter(mf));
55             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 
63 private:
64     typedef SkView INHERITED;
65 };
66 
67 //////////////////////////////////////////////////////////////////////////////
68 
MyFactory()69 static SkView* MyFactory() { return new AnimBlurView; }
70 static SkViewRegister reg(MyFactory);
71