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