| Index: gm/bigtileimagefilter.cpp
|
| diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp
|
| index 3c55b714109c36e60ba75edafa1c3631eb8f30ad..20c462b7449cbecbcb9c399ea1ccc318171c75c5 100644
|
| --- a/gm/bigtileimagefilter.cpp
|
| +++ b/gm/bigtileimagefilter.cpp
|
| @@ -5,21 +5,24 @@
|
| * found in the LICENSE file.
|
| */
|
|
|
| -#include "SkBitmapSource.h"
|
| +#include "SkImageSource.h"
|
| +#include "SkSurface.h"
|
| #include "SkTileImageFilter.h"
|
| #include "gm.h"
|
|
|
| -static void create_circle_texture(SkBitmap* bm, SkColor color) {
|
| - SkCanvas canvas(*bm);
|
| - canvas.clear(0xFF000000);
|
| +static SkImage* create_circle_texture(int size, SkColor color) {
|
| + SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(size, size));
|
| + SkCanvas* canvas = surface->getCanvas();
|
| + canvas->clear(0xFF000000);
|
|
|
| SkPaint paint;
|
| paint.setColor(color);
|
| paint.setStrokeWidth(3);
|
| paint.setStyle(SkPaint::kStroke_Style);
|
|
|
| - canvas.drawCircle(SkScalarHalf(bm->width()), SkScalarHalf(bm->height()),
|
| - SkScalarHalf(bm->width()), paint);
|
| + canvas->drawCircle(SkScalarHalf(size), SkScalarHalf(size), SkScalarHalf(size), paint);
|
| +
|
| + return surface->newImageSnapshot();
|
| }
|
|
|
| namespace skiagm {
|
| @@ -41,11 +44,8 @@ protected:
|
| }
|
|
|
| void onOnceBeforeDraw() override {
|
| - fRedBitmap.allocN32Pixels(kBitmapSize, kBitmapSize);
|
| - create_circle_texture(&fRedBitmap, SK_ColorRED);
|
| -
|
| - fGreenBitmap.allocN32Pixels(kBitmapSize, kBitmapSize);
|
| - create_circle_texture(&fGreenBitmap, SK_ColorGREEN);
|
| + fRedImage.reset(create_circle_texture(kBitmapSize, SK_ColorRED));
|
| + fGreenImage.reset(create_circle_texture(kBitmapSize, SK_ColorGREEN));
|
| }
|
|
|
| void onDraw(SkCanvas* canvas) override {
|
| @@ -55,11 +55,11 @@ protected:
|
| SkPaint p;
|
|
|
| SkRect bound = SkRect::MakeWH(SkIntToScalar(kWidth), SkIntToScalar(kHeight));
|
| - SkAutoTUnref<SkBitmapSource> bms(SkBitmapSource::Create(fRedBitmap));
|
| + SkAutoTUnref<SkImageFilter> imageSource(SkImageSource::Create(fRedImage));
|
| SkAutoTUnref<SkTileImageFilter> tif(SkTileImageFilter::Create(
|
| SkRect::MakeWH(SkIntToScalar(kBitmapSize), SkIntToScalar(kBitmapSize)),
|
| SkRect::MakeWH(SkIntToScalar(kWidth), SkIntToScalar(kHeight)),
|
| - bms));
|
| + imageSource));
|
| p.setImageFilter(tif);
|
|
|
| canvas->saveLayer(&bound, &p);
|
| @@ -84,8 +84,8 @@ protected:
|
| SkRect bound3 = SkRect::MakeXYWH(320, 320,
|
| SkIntToScalar(kBitmapSize),
|
| SkIntToScalar(kBitmapSize));
|
| - canvas->drawBitmapRect(fGreenBitmap, bound2, bound3, nullptr,
|
| - SkCanvas::kStrict_SrcRectConstraint);
|
| + canvas->drawImageRect(fGreenImage, bound2, bound3, nullptr,
|
| + SkCanvas::kStrict_SrcRectConstraint);
|
| canvas->restore();
|
| }
|
| }
|
| @@ -95,8 +95,8 @@ private:
|
| static const int kHeight = 512;
|
| static const int kBitmapSize = 64;
|
|
|
| - SkBitmap fRedBitmap;
|
| - SkBitmap fGreenBitmap;
|
| + SkAutoTUnref<SkImage> fRedImage;
|
| + SkAutoTUnref<SkImage> fGreenImage;
|
|
|
| typedef GM INHERITED;
|
| };
|
|
|