| 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);
|
| }
|
|
|