blob: ac9432ae5b9940780aeaa5ac00ceb9d1e95c20e5 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
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 */
reed@google.comc96e5c22011-02-16 21:50:04 +00008#include "gm.h"
9#include "SkBlurMaskFilter.h"
10
11namespace skiagm {
12
13class BlursGM : public GM {
14public:
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000015 BlursGM() {}
reed@google.comc96e5c22011-02-16 21:50:04 +000016
17protected:
18 virtual SkString onShortName() {
19 return SkString("blurs");
20 }
21
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000022 virtual SkISize onISize() {
reed@google.comc96e5c22011-02-16 21:50:04 +000023 return make_isize(700, 500);
24 }
25
26 void drawBG(SkCanvas* canvas) {
27 canvas->drawColor(0xFFDDDDDD);
28 }
29
30 virtual void onDraw(SkCanvas* canvas) {
31 drawBG(canvas);
32
33 SkBlurMaskFilter::BlurStyle NONE = SkBlurMaskFilter::BlurStyle(-999);
34 static const struct {
35 SkBlurMaskFilter::BlurStyle fStyle;
36 int fCx, fCy;
37 } gRecs[] = {
38 { NONE, 0, 0 },
39 { SkBlurMaskFilter::kInner_BlurStyle, -1, 0 },
40 { SkBlurMaskFilter::kNormal_BlurStyle, 0, 1 },
41 { SkBlurMaskFilter::kSolid_BlurStyle, 0, -1 },
42 { SkBlurMaskFilter::kOuter_BlurStyle, 1, 0 },
43 };
44
45 SkPaint paint;
46 paint.setAntiAlias(true);
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000047 paint.setTextSize(SkIntToScalar(25));
48 canvas->translate(SkIntToScalar(-40), SkIntToScalar(0));
reed@google.comc96e5c22011-02-16 21:50:04 +000049
50 SkBlurMaskFilter::BlurFlags flags = SkBlurMaskFilter::kNone_BlurFlag;
51 for (int j = 0; j < 2; j++) {
52 canvas->save();
53 paint.setColor(SK_ColorBLUE);
54 for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) {
55 if (gRecs[i].fStyle != NONE) {
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000056 SkMaskFilter* mf = SkBlurMaskFilter::Create(
57 SkIntToScalar(20), gRecs[i].fStyle, flags
58 );
reed@google.comc96e5c22011-02-16 21:50:04 +000059 paint.setMaskFilter(mf)->unref();
60 } else {
61 paint.setMaskFilter(NULL);
62 }
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000063 canvas->drawCircle(SkIntToScalar(200 + gRecs[i].fCx*100)
64 , SkIntToScalar(200 + gRecs[i].fCy*100)
65 , SkIntToScalar(50)
66 , paint);
reed@google.comc96e5c22011-02-16 21:50:04 +000067 }
68 // draw text
69 {
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000070 SkMaskFilter* mf = SkBlurMaskFilter::Create(
71 SkIntToScalar(4)
72 , SkBlurMaskFilter::kNormal_BlurStyle
73 , flags
74 );
reed@google.comc96e5c22011-02-16 21:50:04 +000075 paint.setMaskFilter(mf)->unref();
76 SkScalar x = SkIntToScalar(70);
77 SkScalar y = SkIntToScalar(400);
78 paint.setColor(SK_ColorBLACK);
79 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000080 canvas->drawText("Hamburgefons Style", 18
81 , x, y + SkIntToScalar(50), paint);
reed@google.comc96e5c22011-02-16 21:50:04 +000082 paint.setMaskFilter(NULL);
83 paint.setColor(SK_ColorWHITE);
84 x -= SkIntToScalar(2);
85 y -= SkIntToScalar(2);
86 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
87 }
88 canvas->restore();
reed@google.com11a5ff32011-02-18 20:20:51 +000089 flags = SkBlurMaskFilter::kHighQuality_BlurFlag;
bungeman@google.com3c14d0f2011-05-20 14:05:03 +000090 canvas->translate(SkIntToScalar(350), SkIntToScalar(0));
reed@google.comc96e5c22011-02-16 21:50:04 +000091 }
92 }
93
94private:
95 typedef GM INHERITED;
96};
97
98//////////////////////////////////////////////////////////////////////////////
99
100static GM* MyFactory(void*) { return new BlursGM; }
101static GMRegistry reg(MyFactory);
102
103}
104