Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1037)

Unified Diff: gm/image.cpp

Issue 1810813003: update callsites for Make image factories (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: start to take advantage of sk_sp drawImage Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gm/grayscalejpg.cpp ('k') | gm/image_pict.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/image.cpp
diff --git a/gm/image.cpp b/gm/image.cpp
index 4e22dd0ff52487a66250d2b6864fe2bb1a469d32..d54f1cf203ced34d9997090a41d54aa05d4346fd 100644
--- a/gm/image.cpp
+++ b/gm/image.cpp
@@ -22,17 +22,16 @@ static void drawJpeg(SkCanvas* canvas, const SkISize& size) {
// TODO: Make this draw a file that is checked in, so it can
// be exercised on machines other than mike's. Will require a
// rebaseline.
- SkAutoDataUnref data(SkData::NewFromFileName("/Users/mike/Downloads/skia.google.jpeg"));
- if (nullptr == data.get()) {
+ sk_sp<SkData> data(SkData::MakeFromFileName("/Users/mike/Downloads/skia.google.jpeg"));
+ if (nullptr == data) {
return;
}
- SkImage* image = SkImage::NewFromEncoded(data);
+ sk_sp<SkImage> image = SkImage::MakeFromEncoded(std::move(data));
if (image) {
SkAutoCanvasRestore acr(canvas, true);
canvas->scale(size.width() * 1.0f / image->width(),
size.height() * 1.0f / image->height());
canvas->drawImage(image, 0, 0, nullptr);
- image->unref();
}
}
@@ -58,16 +57,15 @@ static void drawContents(SkSurface* surface, SkColor fillC) {
static void test_surface(SkCanvas* canvas, SkSurface* surf, bool usePaint) {
drawContents(surf, SK_ColorRED);
- SkImage* imgR = surf->newImageSnapshot();
+ sk_sp<SkImage> imgR = surf->makeImageSnapshot();
if (true) {
- SkImage* imgR2 = surf->newImageSnapshot();
+ sk_sp<SkImage> imgR2 = surf->makeImageSnapshot();
SkASSERT(imgR == imgR2);
- imgR2->unref();
}
drawContents(surf, SK_ColorGREEN);
- SkImage* imgG = surf->newImageSnapshot();
+ sk_sp<SkImage> imgG = surf->makeImageSnapshot();
// since we've drawn after we snapped imgR, imgG will be a different obj
SkASSERT(imgR != imgG);
@@ -78,8 +76,8 @@ static void test_surface(SkCanvas* canvas, SkSurface* surf, bool usePaint) {
// paint.setFilterBitmap(true);
// paint.setAlpha(0x80);
- canvas->drawImage(imgR, 0, 0, usePaint ? &paint : nullptr);
- canvas->drawImage(imgG, 0, 80, usePaint ? &paint : nullptr);
+ canvas->drawImage(imgR.get(), 0, 0, usePaint ? &paint : nullptr);
+ canvas->drawImage(imgG.get(), 0, 80, usePaint ? &paint : nullptr);
surf->draw(canvas, 0, 160, usePaint ? &paint : nullptr);
SkRect src1, src2, src3;
@@ -94,13 +92,10 @@ static void test_surface(SkCanvas* canvas, SkSurface* surf, bool usePaint) {
dst3.set(0, 400, 65, 465);
dst4.set(0, 480, 65, 545);
- canvas->drawImageRect(imgR, src1, dst1, usePaint ? &paint : nullptr);
- canvas->drawImageRect(imgG, src2, dst2, usePaint ? &paint : nullptr);
- canvas->drawImageRect(imgR, src3, dst3, usePaint ? &paint : nullptr);
- canvas->drawImageRect(imgG, dst4, usePaint ? &paint : nullptr);
-
- imgG->unref();
- imgR->unref();
+ canvas->drawImageRect(imgR.get(), src1, dst1, usePaint ? &paint : nullptr);
+ canvas->drawImageRect(imgG.get(), src2, dst2, usePaint ? &paint : nullptr);
+ canvas->drawImageRect(imgR.get(), src3, dst3, usePaint ? &paint : nullptr);
+ canvas->drawImageRect(imgG.get(), dst4, usePaint ? &paint : nullptr);
}
class ImageGM : public skiagm::GM {
@@ -242,33 +237,33 @@ static void draw_contents(SkCanvas* canvas) {
canvas->drawCircle(50, 50, 35, paint);
}
-static SkImage* make_raster(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) {
+static sk_sp<SkImage> make_raster(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) {
SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info));
draw(surface->getCanvas());
- return surface->newImageSnapshot();
+ return surface->makeImageSnapshot();
}
-static SkImage* make_picture(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) {
+static sk_sp<SkImage> make_picture(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) {
SkPictureRecorder recorder;
draw(recorder.beginRecording(SkRect::MakeIWH(info.width(), info.height())));
SkAutoTUnref<SkPicture> pict(recorder.endRecording());
- return SkImage::NewFromPicture(pict, info.dimensions(), nullptr, nullptr);
+ return SkImage::MakeFromPicture(sk_ref_sp(pict.get()), info.dimensions(), nullptr, nullptr);
}
-static SkImage* make_codec(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) {
- SkAutoTUnref<SkImage> image(make_raster(info, nullptr, draw));
- SkAutoTUnref<SkData> data(image->encode());
- return SkImage::NewFromEncoded(data);
+static sk_sp<SkImage> make_codec(const SkImageInfo& info, GrContext*, void (*draw)(SkCanvas*)) {
+ sk_sp<SkImage> image(make_raster(info, nullptr, draw));
+ sk_sp<SkData> data(image->encode());
+ return SkImage::MakeFromEncoded(data);
}
-static SkImage* make_gpu(const SkImageInfo& info, GrContext* ctx, void (*draw)(SkCanvas*)) {
+static sk_sp<SkImage> make_gpu(const SkImageInfo& info, GrContext* ctx, void (*draw)(SkCanvas*)) {
if (!ctx) { return nullptr; }
SkAutoTUnref<SkSurface> surface(SkSurface::NewRenderTarget(ctx, SkBudgeted::kNo, info));
draw(surface->getCanvas());
- return surface->newImageSnapshot();
+ return surface->makeImageSnapshot();
}
-typedef SkImage* (*ImageMakerProc)(const SkImageInfo&, GrContext*, void (*)(SkCanvas*));
+typedef sk_sp<SkImage> (*ImageMakerProc)(const SkImageInfo&, GrContext*, void (*)(SkCanvas*));
class ScalePixelsGM : public skiagm::GM {
public:
@@ -290,9 +285,9 @@ protected:
make_codec, make_raster, make_picture, make_codec, make_gpu,
};
for (auto& proc : procs) {
- SkAutoTUnref<SkImage> image(proc(info, canvas->getGrContext(), draw_contents));
+ sk_sp<SkImage> image(proc(info, canvas->getGrContext(), draw_contents));
if (image) {
- show_scaled_pixels(canvas, image);
+ show_scaled_pixels(canvas, image.get());
}
canvas->translate(0, 120);
}
@@ -342,8 +337,7 @@ static void draw_opaque_contents(SkCanvas* canvas) {
static SkImageGenerator* gen_raster(const SkImageInfo& info) {
SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info));
draw_opaque_contents(surface->getCanvas());
- SkAutoTUnref<SkImage> img(surface->newImageSnapshot());
- return new ImageGeneratorFromImage(img);
+ return new ImageGeneratorFromImage(surface->makeImageSnapshot().get());
}
static SkImageGenerator* gen_picture(const SkImageInfo& info) {
@@ -354,13 +348,13 @@ static SkImageGenerator* gen_picture(const SkImageInfo& info) {
}
static SkImageGenerator* gen_png(const SkImageInfo& info) {
- SkAutoTUnref<SkImage> image(make_raster(info, nullptr, draw_opaque_contents));
+ sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents));
SkAutoTUnref<SkData> data(image->encode(SkImageEncoder::kPNG_Type, 100));
return SkImageGenerator::NewFromEncoded(data);
}
static SkImageGenerator* gen_jpg(const SkImageInfo& info) {
- SkAutoTUnref<SkImage> image(make_raster(info, nullptr, draw_opaque_contents));
+ sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents));
SkAutoTUnref<SkData> data(image->encode(SkImageEncoder::kJPEG_Type, 100));
return SkImageGenerator::NewFromEncoded(data);
}
@@ -466,16 +460,16 @@ DEF_SIMPLE_GM(new_texture_image, canvas, 225, 60) {
SkCanvas bmpCanvas(bmp);
render_image(&bmpCanvas);
- std::function<SkImage*()> imageFactories[] = {
+ std::function<sk_sp<SkImage>()> imageFactories[] = {
// Create sw raster image.
[bmp] {
- return SkImage::NewFromBitmap(bmp);
+ return SkImage::MakeFromBitmap(bmp);
},
// Create encoded image.
[bmp] {
- SkAutoTUnref<SkData> src(
+ sk_sp<SkData> src(
SkImageEncoder::EncodeData(bmp, SkImageEncoder::kPNG_Type, 100));
- return SkImage::NewFromEncoded(src);
+ return SkImage::MakeFromEncoded(std::move(src));
},
// Create a picture image.
[render_image] {
@@ -483,10 +477,11 @@ DEF_SIMPLE_GM(new_texture_image, canvas, 225, 60) {
SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kSize), SkIntToScalar(kSize));
render_image(canvas);
SkAutoTUnref<SkPicture> picture(recorder.endRecording());
- return SkImage::NewFromPicture(picture, SkISize::Make(kSize, kSize), nullptr, nullptr);
+ return SkImage::MakeFromPicture(sk_ref_sp(picture.get()), SkISize::Make(kSize, kSize),
+ nullptr, nullptr);
},
// Create a texture image
- [context, render_image]() -> SkImage* {
+ [context, render_image]() -> sk_sp<SkImage> {
SkAutoTUnref<SkSurface> surface(
SkSurface::NewRenderTarget(context, SkBudgeted::kYes,
SkImageInfo::MakeN32Premul(kSize, kSize)));
@@ -494,19 +489,19 @@ DEF_SIMPLE_GM(new_texture_image, canvas, 225, 60) {
return nullptr;
}
render_image(surface->getCanvas());
- return surface->newImageSnapshot();
+ return surface->makeImageSnapshot();
}
};
static const SkScalar kPad = 5.f;
canvas->translate(kPad, kPad);
for (auto factory : imageFactories) {
- SkAutoTUnref<SkImage> image(factory());
+ auto image(factory());
if (!image) {
continue;
}
if (context) {
- SkAutoTUnref<SkImage> texImage(image->newTextureImage(context));
+ sk_sp<SkImage> texImage(image->makeTextureImage(context));
if (texImage) {
canvas->drawImage(texImage, 0, 0);
}
« no previous file with comments | « gm/grayscalejpg.cpp ('k') | gm/image_pict.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698