| /* |
| * 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/gm.h" |
| #include "include/core/SkCanvas.h" |
| #include "include/core/SkFont.h" |
| #include "include/core/SkImageFilter.h" |
| #include "include/core/SkPaint.h" |
| #include "include/core/SkScalar.h" |
| #include "include/core/SkTypeface.h" |
| #include "include/core/SkTypes.h" |
| #include "include/effects/SkImageFilters.h" |
| #include "include/utils/SkRandom.h" |
| #include "tools/ToolUtils.h" |
| |
| // TODO deprecate imageblur |
| |
| constexpr int kWidth = 500; |
| constexpr int kHeight = 500; |
| |
| DEF_SIMPLE_GM(imageblur2, canvas, kWidth, kHeight) { |
| constexpr 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.{}!%^&", |
| "*()+=-\\'\"/", |
| }; |
| constexpr int sigmaCount = std::size(kBlurSigmas); |
| constexpr int testStringCount = std::size(kTestStrings); |
| constexpr SkScalar dx = kWidth / sigmaCount; |
| constexpr SkScalar dy = kHeight / sigmaCount; |
| constexpr SkScalar textSize = 12; |
| |
| SkFont font(ToolUtils::create_portable_typeface(), textSize); |
| font.setEdging(SkFont::Edging::kAlias); |
| |
| 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(SkImageFilters::Blur(sigmaX, sigmaY, nullptr)); |
| canvas->saveLayer(nullptr, &paint); |
| |
| SkRandom rand; |
| SkPaint textPaint; |
| textPaint.setColor(ToolUtils::color_to_565(rand.nextBits(24) | 0xFF000000)); |
| for (int i = 0; i < testStringCount; i++) { |
| canvas->drawString(kTestStrings[i], |
| SkIntToScalar(x * dx), |
| SkIntToScalar(y * dy + textSize * i + textSize), |
| font, |
| textPaint); |
| } |
| canvas->restore(); |
| } |
| } |
| } |