| Index: gm/perlinnoise.cpp
|
| diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
|
| index cce5b02627d63e1491d968563b2ba6f389dfb860..1351ed718432aeada5945cf3e09cb465ab63f341 100644
|
| --- a/gm/perlinnoise.cpp
|
| +++ b/gm/perlinnoise.cpp
|
| @@ -8,9 +8,7 @@
|
| #include "gm.h"
|
| #include "SkPerlinNoiseShader.h"
|
|
|
| -namespace skiagm {
|
| -
|
| -class PerlinNoiseGM : public GM {
|
| +class PerlinNoiseGM : public skiagm::GM {
|
| public:
|
| PerlinNoiseGM() {
|
| this->setBGColor(0xFF000000);
|
| @@ -23,7 +21,7 @@ protected:
|
| }
|
|
|
| virtual SkISize onISize() {
|
| - return make_isize(200, 500);
|
| + return SkISize::Make(200, 500);
|
| }
|
|
|
| void drawClippedRect(SkCanvas* canvas, int x, int y, const SkPaint& paint) {
|
| @@ -85,9 +83,89 @@ private:
|
| SkISize fSize;
|
| };
|
|
|
| -//////////////////////////////////////////////////////////////////////////////
|
| +class PerlinNoiseGM2 : public skiagm::GM {
|
| +public:
|
| + PerlinNoiseGM2() {
|
| + fSize = SkISize::Make(80, 80);
|
| + }
|
| +
|
| +protected:
|
| + virtual SkString onShortName() {
|
| + return SkString("perlinnoise_localmatrix");
|
| + }
|
| +
|
| + virtual SkISize onISize() {
|
| + return SkISize::Make(640, 480);
|
| + }
|
| +
|
| + void install(SkPaint* paint, SkPerlinNoiseShader::Type type,
|
| + float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed,
|
| + bool stitchTiles) {
|
| + SkShader* shader = (type == SkPerlinNoiseShader::kFractalNoise_Type) ?
|
| + SkPerlinNoiseShader::CreateFractalNoise(baseFrequencyX, baseFrequencyY, numOctaves,
|
| + seed, stitchTiles ? &fSize : NULL) :
|
| + SkPerlinNoiseShader::CreateTurbulence(baseFrequencyX, baseFrequencyY, numOctaves,
|
| + seed, stitchTiles ? &fSize : NULL);
|
| + paint->setShader(shader)->unref();
|
| + }
|
| +
|
| + virtual void onDraw(SkCanvas* canvas) {
|
| + canvas->translate(10, 10);
|
| +
|
| + SkPaint paint;
|
| + install(&paint, SkPerlinNoiseShader::kFractalNoise_Type, 0.1f, 0.1f, 2, 0, false);
|
| +
|
| + const SkScalar w = SkIntToScalar(fSize.width());
|
| + const SkScalar h = SkIntToScalar(fSize.height());
|
| +
|
| + SkRect r = SkRect::MakeWH(w, h);
|
| + canvas->drawRect(r, paint);
|
| +
|
| + canvas->save();
|
| + canvas->translate(w * 5/4, 0);
|
| + canvas->drawRect(r, paint);
|
| + canvas->restore();
|
|
|
| -static GM* MyFactory(void*) { return new PerlinNoiseGM; }
|
| -static GMRegistry reg(MyFactory);
|
| + canvas->save();
|
| + canvas->translate(0, h + 10);
|
| + canvas->scale(2, 2);
|
| + canvas->drawRect(r, paint);
|
| + canvas->restore();
|
| +
|
| + canvas->save();
|
| + canvas->translate(w + 100, h + 10);
|
| + canvas->scale(2, 2);
|
| + canvas->drawRect(r, paint);
|
| + canvas->restore();
|
| +
|
| + // The next row should draw the same as the previous, even though we are using a local
|
| + // matrix instead of the canvas.
|
| +
|
| + canvas->translate(0, h * 2 + 10);
|
| +
|
| + SkMatrix lm;
|
| + lm.setScale(2, 2);
|
| + paint.getShader()->setLocalMatrix(lm);
|
| + r.fRight += r.width();
|
| + r.fBottom += r.height();
|
| +
|
| + canvas->save();
|
| + canvas->translate(0, h + 10);
|
| + canvas->drawRect(r, paint);
|
| + canvas->restore();
|
| +
|
| + canvas->save();
|
| + canvas->translate(w + 100, h + 10);
|
| + canvas->drawRect(r, paint);
|
| + canvas->restore();
|
| + }
|
| +
|
| +private:
|
| + typedef GM INHERITED;
|
| + SkISize fSize;
|
| +};
|
| +
|
| +//////////////////////////////////////////////////////////////////////////////
|
|
|
| -}
|
| +DEF_GM( return new PerlinNoiseGM; )
|
| +DEF_GM( return new PerlinNoiseGM2; )
|
|
|