• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 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 "gm.h"
9 #include "SkBlurMaskFilter.h"
10 
11 namespace skiagm {
12 
13 class BlursGM : public GM {
14 public:
BlursGM()15     BlursGM() {
16         this->setBGColor(0xFFDDDDDD);
17     }
18 
19 protected:
onShortName()20     virtual SkString onShortName() {
21         return SkString("blurs");
22     }
23 
onISize()24     virtual SkISize onISize() {
25         return make_isize(700, 500);
26     }
27 
onDraw(SkCanvas * canvas)28     virtual void onDraw(SkCanvas* canvas) {
29         SkBlurMaskFilter::BlurStyle NONE = SkBlurMaskFilter::BlurStyle(-999);
30         static const struct {
31             SkBlurMaskFilter::BlurStyle fStyle;
32             int                         fCx, fCy;
33         } gRecs[] = {
34             { NONE,                                 0,  0 },
35             { SkBlurMaskFilter::kInner_BlurStyle,  -1,  0 },
36             { SkBlurMaskFilter::kNormal_BlurStyle,  0,  1 },
37             { SkBlurMaskFilter::kSolid_BlurStyle,   0, -1 },
38             { SkBlurMaskFilter::kOuter_BlurStyle,   1,  0 },
39         };
40 
41         SkPaint paint;
42         paint.setAntiAlias(true);
43         paint.setTextSize(SkIntToScalar(25));
44         canvas->translate(SkIntToScalar(-40), SkIntToScalar(0));
45 
46         SkBlurMaskFilter::BlurFlags flags = SkBlurMaskFilter::kNone_BlurFlag;
47         for (int j = 0; j < 2; j++) {
48             canvas->save();
49             paint.setColor(SK_ColorBLUE);
50             for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) {
51                 if (gRecs[i].fStyle != NONE) {
52                     SkMaskFilter* mf = SkBlurMaskFilter::Create(
53                             SkIntToScalar(20), gRecs[i].fStyle, flags
54                     );
55                     paint.setMaskFilter(mf)->unref();
56                 } else {
57                     paint.setMaskFilter(NULL);
58                 }
59                 canvas->drawCircle(SkIntToScalar(200 + gRecs[i].fCx*100)
60                                    , SkIntToScalar(200 + gRecs[i].fCy*100)
61                                    , SkIntToScalar(50)
62                                    , paint);
63             }
64             // draw text
65             {
66                 SkMaskFilter* mf = SkBlurMaskFilter::Create(
67                         SkIntToScalar(4)
68                         , SkBlurMaskFilter::kNormal_BlurStyle
69                         , flags
70                 );
71                 paint.setMaskFilter(mf)->unref();
72                 SkScalar x = SkIntToScalar(70);
73                 SkScalar y = SkIntToScalar(400);
74                 paint.setColor(SK_ColorBLACK);
75                 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
76                 canvas->drawText("Hamburgefons Style", 18
77                                  , x, y + SkIntToScalar(50), paint);
78                 paint.setMaskFilter(NULL);
79                 paint.setColor(SK_ColorWHITE);
80                 x -= SkIntToScalar(2);
81                 y -= SkIntToScalar(2);
82                 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
83             }
84             canvas->restore();
85             flags = SkBlurMaskFilter::kHighQuality_BlurFlag;
86             canvas->translate(SkIntToScalar(350), SkIntToScalar(0));
87         }
88     }
89 
90 private:
91     typedef GM INHERITED;
92 };
93 
94 //////////////////////////////////////////////////////////////////////////////
95 
MyFactory(void *)96 static GM* MyFactory(void*) { return new BlursGM; }
97 static GMRegistry reg(MyFactory);
98 
99 }
100 
101