1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "gm.h" 9 #include "sk_tool_utils.h" 10 #include "SkBlurImageFilter.h" 11 #include "SkRandom.h" 12 13 // TODO deprecate imageblur 14 15 #define WIDTH 500 16 #define HEIGHT 500 17 18 constexpr float kBlurSigmas[] = { 19 0.0, 0.3f, 0.5f, 2.0f, 32.0f, 80.0f }; 20 21 const char* kTestStrings[] = { 22 "The quick`~", 23 "brown fox[]", 24 "jumped over", 25 "the lazy@#$", 26 "dog.{}!%^&", 27 "*()+=-\\'\"/", 28 }; 29 30 namespace skiagm { 31 32 class BlurImageFilter : public GM { 33 public: 34 BlurImageFilter() { 35 this->setBGColor(0xFFFFFFFF); 36 fName.printf("imageblur2"); 37 } 38 39 protected: 40 41 SkString onShortName() override { 42 return fName; 43 } 44 45 SkISize onISize() override { 46 return SkISize::Make(WIDTH, HEIGHT); 47 } 48 49 void onDraw(SkCanvas* canvas) override { 50 const int sigmaCount = SK_ARRAY_COUNT(kBlurSigmas); 51 const int testStringCount = SK_ARRAY_COUNT(kTestStrings); 52 SkScalar dx = WIDTH / sigmaCount; 53 SkScalar dy = HEIGHT / sigmaCount; 54 const SkScalar textSize = 12; 55 56 for (int x = 0; x < sigmaCount; x++) { 57 SkScalar sigmaX = kBlurSigmas[x]; 58 for (int y = 0; y < sigmaCount; y++) { 59 SkScalar sigmaY = kBlurSigmas[y]; 60 61 SkPaint paint; 62 paint.setImageFilter(SkBlurImageFilter::Make(sigmaX, sigmaY, nullptr)); 63 canvas->saveLayer(nullptr, &paint); 64 65 SkRandom rand; 66 SkPaint textPaint; 67 textPaint.setAntiAlias(false); 68 textPaint.setColor(sk_tool_utils::color_to_565(rand.nextBits(24) | 0xFF000000)); 69 sk_tool_utils::set_portable_typeface(&textPaint); 70 textPaint.setTextSize(textSize); 71 72 for (int i = 0; i < testStringCount; i++) { 73 canvas->drawText(kTestStrings[i], 74 strlen(kTestStrings[i]), 75 SkIntToScalar(x * dx), 76 SkIntToScalar(y * dy + textSize * i + textSize), 77 textPaint); 78 } 79 canvas->restore(); 80 } 81 } 82 } 83 84 private: 85 SkString fName; 86 87 typedef GM INHERITED; 88 }; 89 90 ////////////////////////////////////////////////////////////////////////////// 91 92 DEF_GM(return new BlurImageFilter;) 93 94 } 95