From 2238c9dbca4b791edc512957728a18ce14d55912 Mon Sep 17 00:00:00 2001 From: robertphillips Date: Wed, 30 Mar 2016 13:34:16 -0700 Subject: Update SkMergeImageFilter to sk_sp TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1847583002 Review URL: https://codereview.chromium.org/1847583002 --- bench/MergeBench.cpp | 84 ++++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) (limited to 'bench/MergeBench.cpp') diff --git a/bench/MergeBench.cpp b/bench/MergeBench.cpp index e1f7d97b5e..061a4d36f3 100644 --- a/bench/MergeBench.cpp +++ b/bench/MergeBench.cpp @@ -16,6 +16,41 @@ #define FILTER_WIDTH_LARGE SkIntToScalar(256) #define FILTER_HEIGHT_LARGE SkIntToScalar(256) +static sk_sp make_bitmap() { + sk_sp surface(SkSurface::MakeRasterN32Premul(80, 80)); + surface->getCanvas()->clear(0x00000000); + SkPaint paint; + paint.setAntiAlias(true); + paint.setColor(0xFF884422); + paint.setTextSize(SkIntToScalar(96)); + const char* str = "g"; + surface->getCanvas()->drawText(str, strlen(str), 15, 55, paint); + return surface->makeImageSnapshot(); +} + +static sk_sp make_checkerboard() { + sk_sp surface(SkSurface::MakeRasterN32Premul(80, 80)); + SkCanvas* canvas = surface->getCanvas(); + canvas->clear(0x00000000); + SkPaint darkPaint; + darkPaint.setColor(0xFF804020); + SkPaint lightPaint; + lightPaint.setColor(0xFF244484); + for (int y = 0; y < 80; y += 16) { + for (int x = 0; x < 80; x += 16) { + canvas->save(); + canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); + canvas->drawRect(SkRect::MakeXYWH(0, 0, 8, 8), darkPaint); + canvas->drawRect(SkRect::MakeXYWH(8, 0, 8, 8), lightPaint); + canvas->drawRect(SkRect::MakeXYWH(0, 8, 8, 8), lightPaint); + canvas->drawRect(SkRect::MakeXYWH(8, 8, 8, 8), darkPaint); + canvas->restore(); + } + } + + return surface->makeImageSnapshot(); +} + class MergeBench : public Benchmark { public: MergeBench(bool small) : fIsSmall(small), fInitialized(false) { } @@ -27,8 +62,8 @@ protected: void onDelayedSetup() override { if (!fInitialized) { - make_bitmap(); - make_checkerboard(); + fImage = make_bitmap(); + fCheckerboard = make_checkerboard(); fInitialized = true; } } @@ -37,52 +72,17 @@ protected: SkRect r = fIsSmall ? SkRect::MakeWH(FILTER_WIDTH_SMALL, FILTER_HEIGHT_SMALL) : SkRect::MakeWH(FILTER_WIDTH_LARGE, FILTER_HEIGHT_LARGE); SkPaint paint; - paint.setImageFilter(mergeBitmaps())->unref(); + paint.setImageFilter(this->mergeBitmaps()); for (int i = 0; i < loops; i++) { canvas->drawRect(r, paint); } } private: - SkImageFilter* mergeBitmaps() { - SkAutoTUnref first(SkImageSource::Create(fCheckerboard.get())); - SkAutoTUnref second(SkImageSource::Create(fImage.get())); - return SkMergeImageFilter::Create(first, second); - } - - void make_bitmap() { - auto surface(SkSurface::MakeRasterN32Premul(80, 80)); - surface->getCanvas()->clear(0x00000000); - SkPaint paint; - paint.setAntiAlias(true); - paint.setColor(0xFF884422); - paint.setTextSize(SkIntToScalar(96)); - const char* str = "g"; - surface->getCanvas()->drawText(str, strlen(str), 15, 55, paint); - fImage = surface->makeImageSnapshot(); - } - - void make_checkerboard() { - auto surface(SkSurface::MakeRasterN32Premul(80, 80)); - SkCanvas* canvas = surface->getCanvas(); - canvas->clear(0x00000000); - SkPaint darkPaint; - darkPaint.setColor(0xFF804020); - SkPaint lightPaint; - lightPaint.setColor(0xFF244484); - for (int y = 0; y < 80; y += 16) { - for (int x = 0; x < 80; x += 16) { - canvas->save(); - canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); - canvas->drawRect(SkRect::MakeXYWH(0, 0, 8, 8), darkPaint); - canvas->drawRect(SkRect::MakeXYWH(8, 0, 8, 8), lightPaint); - canvas->drawRect(SkRect::MakeXYWH(0, 8, 8, 8), lightPaint); - canvas->drawRect(SkRect::MakeXYWH(8, 8, 8, 8), darkPaint); - canvas->restore(); - } - } - - fCheckerboard = surface->makeImageSnapshot(); + sk_sp mergeBitmaps() { + sk_sp first(SkImageSource::Create(fCheckerboard.get())); + sk_sp second(SkImageSource::Create(fImage.get())); + return SkMergeImageFilter::Make(std::move(first), std::move(second)); } bool fIsSmall; -- cgit v1.2.3