diff options
author | robertphillips <robertphillips@google.com> | 2015-06-08 06:21:14 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-08 06:21:14 -0700 |
commit | 63195181d12751bed2fae6e167c7bed7f4a2de2a (patch) | |
tree | 7485e5166b679de2f386ac3eb6145c7e9e31c4de /gm/bigtileimagefilter.cpp | |
parent | 2baef5a1e104fe635c5b71fcdae159ba171c662c (diff) |
Add bigtileimagefilter GM & improvements to toString
This is all the ancillary code from https://codereview.chromium.org/1152553006/ (Fix dst bound reported by SkTileImageFilter).
TBR=reed@google.com, senorblanco@google.com
Review URL: https://codereview.chromium.org/1169713003
Diffstat (limited to 'gm/bigtileimagefilter.cpp')
-rw-r--r-- | gm/bigtileimagefilter.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp new file mode 100644 index 0000000000..97de0d2042 --- /dev/null +++ b/gm/bigtileimagefilter.cpp @@ -0,0 +1,76 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkBitmapSource.h" +#include "SkTileImageFilter.h" +#include "gm.h" + +namespace skiagm { + +class BigTileImageFilterGM : public GM { +public: + BigTileImageFilterGM() { + this->setBGColor(0xFF000000); + } + +protected: + + SkString onShortName() override { + return SkString("bigtileimagefilter"); + } + + SkISize onISize() override{ + return SkISize::Make(kWidth, kHeight); + } + + void onOnceBeforeDraw() override { + fBitmap.allocN32Pixels(kBitmapSize, kBitmapSize); + + SkCanvas canvas(fBitmap); + canvas.clear(0xFF000000); + + SkPaint paint; + paint.setColor(SK_ColorRED); + paint.setStrokeWidth(3); + paint.setStyle(SkPaint::kStroke_Style); + + canvas.drawCircle(SkScalarHalf(kBitmapSize), SkScalarHalf(kBitmapSize), + SkScalarHalf(kBitmapSize), paint); + } + + void onDraw(SkCanvas* canvas) override { + canvas->clear(SK_ColorBLACK); + + SkPaint p; + + SkAutoTUnref<SkBitmapSource> bms(SkBitmapSource::Create(fBitmap)); + SkAutoTUnref<SkTileImageFilter> tif(SkTileImageFilter::Create( + SkRect::MakeWH(SkIntToScalar(kBitmapSize), SkIntToScalar(kBitmapSize)), + SkRect::MakeWH(SkIntToScalar(kWidth), SkIntToScalar(kHeight)), + bms)); + p.setImageFilter(tif); + + SkRect bound = SkRect::MakeWH(SkIntToScalar(kWidth), SkIntToScalar(kHeight)); + canvas->saveLayer(&bound, &p); + canvas->restore(); + } + +private: + static const int kWidth = 512; + static const int kHeight = 512; + static const int kBitmapSize = 64; + + SkBitmap fBitmap; + + typedef GM INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +DEF_GM( return SkNEW(BigTileImageFilterGM); ) + +} |