| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "gm.h" |
| #include "SkBlurImageFilter.h" |
| #include "SkRandom.h" |
| |
| // TODO deprecate imageblur |
| |
| #define WIDTH 500 |
| #define HEIGHT 500 |
| |
| static const float kBlurSigmas[] = { |
| 0.0, 0.3f, 0.5f, 2.0f, 32.0f, 80.0f }; |
| |
| const char* kTestStrings[] = { |
| "The quick`~", |
| "brown fox[]", |
| "jumped over", |
| "the lazy@#$", |
| "dog.{}!%^&", |
| "*()+=-\\'\"/", |
| }; |
| |
| namespace skiagm { |
| |
| class BlurImageFilter : public GM { |
| public: |
| BlurImageFilter() { |
| this->setBGColor(0xFFFFFFFF); |
| fName.printf("imageblur2"); |
| } |
| |
| protected: |
| virtual uint32_t onGetFlags() const SK_OVERRIDE { |
| return kSkipTiled_Flag; |
| } |
| |
| virtual SkString onShortName() SK_OVERRIDE { |
| return fName; |
| } |
| |
| virtual SkISize onISize() SK_OVERRIDE { |
| return SkISize::Make(WIDTH, HEIGHT); |
| } |
| |
| virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| const int sigmaCount = SK_ARRAY_COUNT(kBlurSigmas); |
| const int testStringCount = SK_ARRAY_COUNT(kTestStrings); |
| SkScalar dx = WIDTH / sigmaCount; |
| SkScalar dy = HEIGHT / sigmaCount; |
| const SkScalar textSize = 12; |
| |
| for (int x = 0; x < sigmaCount; x++) { |
| SkScalar sigmaX = kBlurSigmas[x]; |
| for (int y = 0; y < sigmaCount; y++) { |
| SkScalar sigmaY = kBlurSigmas[y]; |
| |
| SkPaint paint; |
| paint.setImageFilter(SkBlurImageFilter::Create(sigmaX, sigmaY))->unref(); |
| canvas->saveLayer(NULL, &paint); |
| |
| SkRandom rand; |
| SkPaint textPaint; |
| textPaint.setAntiAlias(false); |
| textPaint.setColor(rand.nextBits(24) | 0xFF000000); |
| textPaint.setTextSize(textSize); |
| |
| for (int i = 0; i < testStringCount; i++) { |
| canvas->drawText(kTestStrings[i], |
| strlen(kTestStrings[i]), |
| SkIntToScalar(x * dx), |
| SkIntToScalar(y * dy + textSize * i + textSize), |
| textPaint); |
| } |
| canvas->restore(); |
| } |
| } |
| } |
| |
| private: |
| SkString fName; |
| |
| typedef GM INHERITED; |
| }; |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| static GM* MyFactory(void*) { return new BlurImageFilter; } |
| static GMRegistry reg(MyFactory); |
| |
| } |