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 "SkBlurImageFilter.h"
10 #include "SkRandom.h"
11
12 #define WIDTH 500
13 #define HEIGHT 500
14
15 namespace skiagm {
16
17 class ImageBlurGM : public GM {
18 public:
ImageBlurGM(SkScalar sigmaX,SkScalar sigmaY,const char * suffix)19 ImageBlurGM(SkScalar sigmaX, SkScalar sigmaY, const char* suffix)
20 : fSigmaX(sigmaX), fSigmaY(sigmaY) {
21 this->setBGColor(0xFF000000);
22 fName.printf("imageblur%s", suffix);
23 }
24
25 protected:
26
onShortName()27 SkString onShortName() override {
28 return fName;
29 }
30
onISize()31 SkISize onISize() override {
32 return SkISize::Make(WIDTH, HEIGHT);
33 }
34
onDraw(SkCanvas * canvas)35 void onDraw(SkCanvas* canvas) override {
36 SkPaint paint;
37 paint.setImageFilter(SkBlurImageFilter::Create(fSigmaX, fSigmaY))->unref();
38 canvas->saveLayer(NULL, &paint);
39 const char* str = "The quick brown fox jumped over the lazy dog.";
40
41 SkRandom rand;
42 SkPaint textPaint;
43 textPaint.setAntiAlias(true);
44 sk_tool_utils::set_portable_typeface(&textPaint);
45 for (int i = 0; i < 25; ++i) {
46 int x = rand.nextULessThan(WIDTH);
47 int y = rand.nextULessThan(HEIGHT);
48 textPaint.setColor(rand.nextBits(24) | 0xFF000000);
49 textPaint.setTextSize(rand.nextRangeScalar(0, 300));
50 canvas->drawText(str, strlen(str), SkIntToScalar(x),
51 SkIntToScalar(y), textPaint);
52 }
53 canvas->restore();
54 }
55
56 private:
57 SkScalar fSigmaX;
58 SkScalar fSigmaY;
59 SkString fName;
60
61 typedef GM INHERITED;
62 };
63
64 //////////////////////////////////////////////////////////////////////////////
65
MyFactory1(void *)66 static GM* MyFactory1(void*) { return new ImageBlurGM(24.0f, 0.0f, ""); }
67 static GMRegistry reg1(MyFactory1);
68
MyFactory2(void *)69 static GM* MyFactory2(void*) { return new ImageBlurGM(80.0f, 80.0f, "_large"); }
70 static GMRegistry reg2(MyFactory2);
71
72 }
73