aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPictureImageGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkPictureImageGenerator.cpp')
-rw-r--r--src/core/SkPictureImageGenerator.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/core/SkPictureImageGenerator.cpp b/src/core/SkPictureImageGenerator.cpp
index a1d919af34..a960001e13 100644
--- a/src/core/SkPictureImageGenerator.cpp
+++ b/src/core/SkPictureImageGenerator.cpp
@@ -59,19 +59,13 @@ SkPictureImageGenerator::SkPictureImageGenerator(const SkImageInfo& info, sk_sp<
bool SkPictureImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
SkPMColor ctable[], int* ctableCount) {
- if (ctable || ctableCount) {
+ // Rely on SkCanvas factory to know what configs can and cannot be drawn into.
+ auto canvas = SkCanvas::MakeRasterDirect(info, pixels, rowBytes);
+ if (!canvas) {
return false;
}
-
- SkBitmap bitmap;
- if (!bitmap.installPixels(info, pixels, rowBytes)) {
- return false;
- }
-
- bitmap.eraseColor(SK_ColorTRANSPARENT);
- SkCanvas canvas(bitmap, SkSurfaceProps(0, kUnknown_SkPixelGeometry));
- canvas.drawPicture(fPicture.get(), &fMatrix, fPaint.getMaybeNull());
-
+ canvas->clear(0);
+ canvas->drawPicture(fPicture, &fMatrix, fPaint.getMaybeNull());
return true;
}