| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include <functional> | 8 #include <functional> |
| 9 #include "gm.h" | 9 #include "gm.h" |
| 10 #include "SkAutoPixmapStorage.h" | 10 #include "SkAutoPixmapStorage.h" |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 | 239 |
| 240 static sk_sp<SkImage> make_raster(const SkImageInfo& info, GrContext*, void (*dr
aw)(SkCanvas*)) { | 240 static sk_sp<SkImage> make_raster(const SkImageInfo& info, GrContext*, void (*dr
aw)(SkCanvas*)) { |
| 241 SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info)); | 241 SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info)); |
| 242 draw(surface->getCanvas()); | 242 draw(surface->getCanvas()); |
| 243 return surface->makeImageSnapshot(); | 243 return surface->makeImageSnapshot(); |
| 244 } | 244 } |
| 245 | 245 |
| 246 static sk_sp<SkImage> make_picture(const SkImageInfo& info, GrContext*, void (*d
raw)(SkCanvas*)) { | 246 static sk_sp<SkImage> make_picture(const SkImageInfo& info, GrContext*, void (*d
raw)(SkCanvas*)) { |
| 247 SkPictureRecorder recorder; | 247 SkPictureRecorder recorder; |
| 248 draw(recorder.beginRecording(SkRect::MakeIWH(info.width(), info.height()))); | 248 draw(recorder.beginRecording(SkRect::MakeIWH(info.width(), info.height()))); |
| 249 SkAutoTUnref<SkPicture> pict(recorder.endRecording()); | 249 return SkImage::MakeFromPicture(recorder.finishRecordingAsPicture(), |
| 250 return SkImage::MakeFromPicture(sk_ref_sp(pict.get()), info.dimensions(), nu
llptr, nullptr); | 250 info.dimensions(), nullptr, nullptr); |
| 251 } | 251 } |
| 252 | 252 |
| 253 static sk_sp<SkImage> make_codec(const SkImageInfo& info, GrContext*, void (*dra
w)(SkCanvas*)) { | 253 static sk_sp<SkImage> make_codec(const SkImageInfo& info, GrContext*, void (*dra
w)(SkCanvas*)) { |
| 254 sk_sp<SkImage> image(make_raster(info, nullptr, draw)); | 254 sk_sp<SkImage> image(make_raster(info, nullptr, draw)); |
| 255 sk_sp<SkData> data(image->encode()); | 255 sk_sp<SkData> data(image->encode()); |
| 256 return SkImage::MakeFromEncoded(data); | 256 return SkImage::MakeFromEncoded(data); |
| 257 } | 257 } |
| 258 | 258 |
| 259 static sk_sp<SkImage> make_gpu(const SkImageInfo& info, GrContext* ctx, void (*d
raw)(SkCanvas*)) { | 259 static sk_sp<SkImage> make_gpu(const SkImageInfo& info, GrContext* ctx, void (*d
raw)(SkCanvas*)) { |
| 260 if (!ctx) { return nullptr; } | 260 if (!ctx) { return nullptr; } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 | 336 |
| 337 static SkImageGenerator* gen_raster(const SkImageInfo& info) { | 337 static SkImageGenerator* gen_raster(const SkImageInfo& info) { |
| 338 SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info)); | 338 SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info)); |
| 339 draw_opaque_contents(surface->getCanvas()); | 339 draw_opaque_contents(surface->getCanvas()); |
| 340 return new ImageGeneratorFromImage(surface->makeImageSnapshot().get()); | 340 return new ImageGeneratorFromImage(surface->makeImageSnapshot().get()); |
| 341 } | 341 } |
| 342 | 342 |
| 343 static SkImageGenerator* gen_picture(const SkImageInfo& info) { | 343 static SkImageGenerator* gen_picture(const SkImageInfo& info) { |
| 344 SkPictureRecorder recorder; | 344 SkPictureRecorder recorder; |
| 345 draw_opaque_contents(recorder.beginRecording(SkRect::MakeIWH(info.width(), i
nfo.height()))); | 345 draw_opaque_contents(recorder.beginRecording(SkRect::MakeIWH(info.width(), i
nfo.height()))); |
| 346 SkAutoTUnref<SkPicture> pict(recorder.endRecording()); | 346 sk_sp<SkPicture> pict(recorder.finishRecordingAsPicture()); |
| 347 return SkImageGenerator::NewFromPicture(info.dimensions(), pict, nullptr, nu
llptr); | 347 return SkImageGenerator::NewFromPicture(info.dimensions(), pict.get(), nullp
tr, nullptr); |
| 348 } | 348 } |
| 349 | 349 |
| 350 static SkImageGenerator* gen_png(const SkImageInfo& info) { | 350 static SkImageGenerator* gen_png(const SkImageInfo& info) { |
| 351 sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents)); | 351 sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents)); |
| 352 SkAutoTUnref<SkData> data(image->encode(SkImageEncoder::kPNG_Type, 100)); | 352 SkAutoTUnref<SkData> data(image->encode(SkImageEncoder::kPNG_Type, 100)); |
| 353 return SkImageGenerator::NewFromEncoded(data); | 353 return SkImageGenerator::NewFromEncoded(data); |
| 354 } | 354 } |
| 355 | 355 |
| 356 static SkImageGenerator* gen_jpg(const SkImageInfo& info) { | 356 static SkImageGenerator* gen_jpg(const SkImageInfo& info) { |
| 357 sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents)); | 357 sk_sp<SkImage> image(make_raster(info, nullptr, draw_opaque_contents)); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 [bmp] { | 469 [bmp] { |
| 470 sk_sp<SkData> src( | 470 sk_sp<SkData> src( |
| 471 SkImageEncoder::EncodeData(bmp, SkImageEncoder::kPNG_Type, 100))
; | 471 SkImageEncoder::EncodeData(bmp, SkImageEncoder::kPNG_Type, 100))
; |
| 472 return SkImage::MakeFromEncoded(std::move(src)); | 472 return SkImage::MakeFromEncoded(std::move(src)); |
| 473 }, | 473 }, |
| 474 // Create a picture image. | 474 // Create a picture image. |
| 475 [render_image] { | 475 [render_image] { |
| 476 SkPictureRecorder recorder; | 476 SkPictureRecorder recorder; |
| 477 SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kSize), SkI
ntToScalar(kSize)); | 477 SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kSize), SkI
ntToScalar(kSize)); |
| 478 render_image(canvas); | 478 render_image(canvas); |
| 479 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); | 479 return SkImage::MakeFromPicture(recorder.finishRecordingAsPicture(), |
| 480 return SkImage::MakeFromPicture(sk_ref_sp(picture.get()), SkISize::M
ake(kSize, kSize), | 480 SkISize::Make(kSize, kSize), nullptr,
nullptr); |
| 481 nullptr, nullptr); | |
| 482 }, | 481 }, |
| 483 // Create a texture image | 482 // Create a texture image |
| 484 [context, render_image]() -> sk_sp<SkImage> { | 483 [context, render_image]() -> sk_sp<SkImage> { |
| 485 SkAutoTUnref<SkSurface> surface( | 484 SkAutoTUnref<SkSurface> surface( |
| 486 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, | 485 SkSurface::NewRenderTarget(context, SkBudgeted::kYes, |
| 487 SkImageInfo::MakeN32Premul(kSize, kSi
ze))); | 486 SkImageInfo::MakeN32Premul(kSize, kSi
ze))); |
| 488 if (!surface) { | 487 if (!surface) { |
| 489 return nullptr; | 488 return nullptr; |
| 490 } | 489 } |
| 491 render_image(surface->getCanvas()); | 490 render_image(surface->getCanvas()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 502 } | 501 } |
| 503 if (context) { | 502 if (context) { |
| 504 sk_sp<SkImage> texImage(image->makeTextureImage(context)); | 503 sk_sp<SkImage> texImage(image->makeTextureImage(context)); |
| 505 if (texImage) { | 504 if (texImage) { |
| 506 canvas->drawImage(texImage, 0, 0); | 505 canvas->drawImage(texImage, 0, 0); |
| 507 } | 506 } |
| 508 } | 507 } |
| 509 canvas->translate(image->width() + kPad, 0); | 508 canvas->translate(image->width() + kPad, 0); |
| 510 } | 509 } |
| 511 } | 510 } |
| OLD | NEW |