diff options
author | Florin Malita <fmalita@chromium.org> | 2017-05-18 11:52:59 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-18 17:24:39 +0000 |
commit | 14d54c207d7a175d14d34f5527af7cbfd579f4d5 (patch) | |
tree | 9874290e610d098b7c55f2156c126d52eb360f93 /gm/perlinnoise.cpp | |
parent | 94df1841ec695e01ba22c475c011a0a531a20262 (diff) |
Hide SkPerlinNoiseShader impl details
Move the shader impl to a private class, leave SkPerlinNoiseShader as
a factory class only (similar to e.g. SkLightingShader).
Change-Id: Ic1180db8f5dfd3d8f6fba133c6bf6bbdfa4f97a4
Reviewed-on: https://skia-review.googlesource.com/17318
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'gm/perlinnoise.cpp')
-rw-r--r-- | gm/perlinnoise.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp index b3ece9dcb6..6af69ac86b 100644 --- a/gm/perlinnoise.cpp +++ b/gm/perlinnoise.cpp @@ -7,6 +7,16 @@ #include "gm.h" #include "SkPerlinNoiseShader.h" +#include "SkShader.h" + +namespace { + +enum class Type { + kFractalNoise, + kTurbulence, +}; + +} // anonymous ns class PerlinNoiseGM : public skiagm::GM { public: @@ -33,11 +43,11 @@ protected: canvas->restore(); } - void test(SkCanvas* canvas, int x, int y, SkPerlinNoiseShader::Type type, + void test(SkCanvas* canvas, int x, int y, Type type, float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed, bool stitchTiles) { SkISize tileSize = SkISize::Make(fSize.width() / 2, fSize.height() / 2); - sk_sp<SkShader> shader = (type == SkPerlinNoiseShader::kFractalNoise_Type) ? + sk_sp<SkShader> shader = (type == Type::kFractalNoise) ? SkPerlinNoiseShader::MakeFractalNoise(baseFrequencyX, baseFrequencyY, numOctaves, seed, stitchTiles ? &tileSize : nullptr) : SkPerlinNoiseShader::MakeTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, @@ -59,31 +69,31 @@ protected: virtual void onDraw(SkCanvas* canvas) { canvas->clear(SK_ColorBLACK); - test(canvas, 0, 0, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 0, 0, Type::kFractalNoise, 0.1f, 0.1f, 0, 0, false); - test(canvas, 100, 0, SkPerlinNoiseShader::kTurbulence_Type, + test(canvas, 100, 0, Type::kTurbulence, 0.1f, 0.1f, 0, 0, false); - test(canvas, 0, 100, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 0, 100, Type::kFractalNoise, 0.1f, 0.1f, 2, 0, false); - test(canvas, 100, 100, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 100, 100, Type::kFractalNoise, 0.05f, 0.1f, 1, 0, true); - test(canvas, 0, 200, SkPerlinNoiseShader::kTurbulence_Type, + test(canvas, 0, 200, Type::kTurbulence, 0.1f, 0.1f, 1, 0, true); - test(canvas, 100, 200, SkPerlinNoiseShader::kTurbulence_Type, + test(canvas, 100, 200, Type::kTurbulence, 0.2f, 0.4f, 5, 0, false); - test(canvas, 0, 300, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 0, 300, Type::kFractalNoise, 0.1f, 0.1f, 3, 1, false); - test(canvas, 100, 300, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 100, 300, Type::kFractalNoise, 0.1f, 0.1f, 3, 4, false); canvas->scale(0.75f, 1.0f); - test(canvas, 0, 400, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 0, 400, Type::kFractalNoise, 0.1f, 0.1f, 2, 0, false); - test(canvas, 100, 400, SkPerlinNoiseShader::kFractalNoise_Type, + test(canvas, 100, 400, Type::kFractalNoise, 0.1f, 0.05f, 1, 0, true); } @@ -107,10 +117,10 @@ protected: return SkISize::Make(640, 480); } - void install(SkPaint* paint, SkPerlinNoiseShader::Type type, + void install(SkPaint* paint, Type type, float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed, bool stitchTiles) { - sk_sp<SkShader> shader = (type == SkPerlinNoiseShader::kFractalNoise_Type) ? + sk_sp<SkShader> shader = (type == Type::kFractalNoise) ? SkPerlinNoiseShader::MakeFractalNoise(baseFrequencyX, baseFrequencyY, numOctaves, seed, stitchTiles ? &fSize : nullptr) : SkPerlinNoiseShader::MakeTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, @@ -122,7 +132,7 @@ protected: canvas->translate(10, 10); SkPaint paint; - install(&paint, SkPerlinNoiseShader::kFractalNoise_Type, 0.1f, 0.1f, 2, 0, false); + install(&paint, Type::kFractalNoise, 0.1f, 0.1f, 2, 0, false); const SkScalar w = SkIntToScalar(fSize.width()); const SkScalar h = SkIntToScalar(fSize.height()); |