diff options
Diffstat (limited to 'gm/imageblurtiled.cpp')
-rw-r--r-- | gm/imageblurtiled.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/gm/imageblurtiled.cpp b/gm/imageblurtiled.cpp new file mode 100644 index 0000000000..96df4367b4 --- /dev/null +++ b/gm/imageblurtiled.cpp @@ -0,0 +1,76 @@ +/* + * Copyright 2014 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" + +#define WIDTH 640 +#define HEIGHT 480 + +namespace skiagm { + +class ImageBlurTiledGM : public GM { +public: + ImageBlurTiledGM(SkScalar sigmaX, SkScalar sigmaY) + : fSigmaX(sigmaX), fSigmaY(sigmaY) { + } + +protected: + virtual SkString onShortName() { + return SkString("imageblurtiled"); + } + + virtual SkISize onISize() { + return make_isize(WIDTH, HEIGHT); + } + + virtual void onDraw(SkCanvas* canvas) { + SkPaint paint; + paint.setImageFilter(new SkBlurImageFilter(fSigmaX, fSigmaY))->unref(); + const SkScalar tile_size = SkIntToScalar(128); + SkRect bounds; + canvas->getClipBounds(&bounds); + for (SkScalar y = bounds.top(); y < bounds.bottom(); y += tile_size) { + for (SkScalar x = bounds.left(); x < bounds.right(); x += tile_size) { + canvas->save(); + canvas->clipRect(SkRect::MakeXYWH(x, y, tile_size, tile_size)); + canvas->saveLayer(NULL, &paint); + const char* str[] = { + "The quick", + "brown fox", + "jumped over", + "the lazy dog.", + }; + SkPaint textPaint; + textPaint.setAntiAlias(true); + textPaint.setTextSize(SkIntToScalar(100)); + int posY = 0; + for (unsigned i = 0; i < SK_ARRAY_COUNT(str); i++) { + posY += 100; + canvas->drawText(str[i], strlen(str[i]), SkIntToScalar(0), + SkIntToScalar(posY), textPaint); + } + canvas->restore(); + canvas->restore(); + } + } + } + +private: + SkScalar fSigmaX; + SkScalar fSigmaY; + + typedef GM INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static GM* MyFactory1(void*) { return new ImageBlurTiledGM(3.0f, 3.0f); } +static GMRegistry reg1(MyFactory1); + +} |