aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-07-11 11:20:21 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-11 15:43:21 +0000
commitdc799550e2d9965aa5b7cda496465b2a76b310a5 (patch)
tree9f5f2a1c9da5bbeab2363bae6bd8cd933019dfc3 /src
parentf02fa6ffe72c596b87e277193ed82d288dbee18f (diff)
Change image encode api to return sk_sp
Bug: skia: Change-Id: I238289bc630be27795cb1384955dd6e887597c05 Reviewed-on: https://skia-review.googlesource.com/22208 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/c/sk_surface.cpp2
-rw-r--r--src/core/SkWriteBuffer.cpp4
-rw-r--r--src/image/SkImage.cpp32
-rw-r--r--src/pdf/SkPDFBitmap.cpp4
-rw-r--r--src/pipe/SkPipeCanvas.cpp4
5 files changed, 30 insertions, 16 deletions
diff --git a/src/c/sk_surface.cpp b/src/c/sk_surface.cpp
index 7e1fb3d3ea..a77f61e85f 100644
--- a/src/c/sk_surface.cpp
+++ b/src/c/sk_surface.cpp
@@ -233,7 +233,7 @@ sk_image_t* sk_image_new_from_encoded(const sk_data_t* cdata, const sk_irect_t*
}
sk_data_t* sk_image_encode(const sk_image_t* cimage) {
- return ToData(AsImage(cimage)->encode());
+ return ToData(AsImage(cimage)->encodeToData().release());
}
void sk_image_ref(const sk_image_t* cimage) {
diff --git a/src/core/SkWriteBuffer.cpp b/src/core/SkWriteBuffer.cpp
index 3322e8a8c8..43a63c9638 100644
--- a/src/core/SkWriteBuffer.cpp
+++ b/src/core/SkWriteBuffer.cpp
@@ -156,7 +156,7 @@ void SkBinaryWriteBuffer::writeBitmap(const SkBitmap& bitmap) {
// see if the caller wants to manually encode
SkPixmap result;
if (fPixelSerializer && bitmap.peekPixels(&result)) {
- sk_sp<SkData> data(fPixelSerializer->encode(result));
+ sk_sp<SkData> data = fPixelSerializer->encodeToData(result);
if (data) {
// if we have to "encode" the bitmap, then we assume there is no
// offset to share, since we are effectively creating a new pixelref
@@ -178,7 +178,7 @@ void SkBinaryWriteBuffer::writeImage(const SkImage* image) {
this->writeInt(image->width());
this->writeInt(image->height());
- sk_sp<SkData> encoded(image->encode(this->getPixelSerializer()));
+ sk_sp<SkData> encoded = image->encodeToData(this->getPixelSerializer());
if (encoded && encoded->size() > 0) {
write_encoded_bitmap(this, encoded.get(), SkIPoint::Make(0, 0));
return;
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp
index 7ec7b35156..b12234989d 100644
--- a/src/image/SkImage.cpp
+++ b/src/image/SkImage.cpp
@@ -94,21 +94,21 @@ sk_sp<SkShader> SkImage::makeShader(SkShader::TileMode tileX, SkShader::TileMode
return SkImageShader::Make(sk_ref_sp(const_cast<SkImage*>(this)), tileX, tileY, localMatrix);
}
-SkData* SkImage::encode(SkEncodedImageFormat type, int quality) const {
+sk_sp<SkData> SkImage::encodeToData(SkEncodedImageFormat type, int quality) const {
SkBitmap bm;
SkColorSpace* legacyColorSpace = nullptr;
if (as_IB(this)->getROPixels(&bm, legacyColorSpace)) {
SkDynamicMemoryWStream buf;
- return SkEncodeImage(&buf, bm, type, quality) ? buf.detachAsData().release() : nullptr;
+ return SkEncodeImage(&buf, bm, type, quality) ? buf.detachAsData() : nullptr;
}
return nullptr;
}
-SkData* SkImage::encode(SkPixelSerializer* serializer) const {
- sk_sp<SkData> encoded(this->refEncoded());
+sk_sp<SkData> SkImage::encodeToData(SkPixelSerializer* serializer) const {
+ sk_sp<SkData> encoded(this->refEncodedData());
if (encoded &&
(!serializer || serializer->useEncodedData(encoded->data(), encoded->size()))) {
- return encoded.release();
+ return encoded;
}
SkBitmap bm;
@@ -116,19 +116,19 @@ SkData* SkImage::encode(SkPixelSerializer* serializer) const {
SkColorSpace* legacyColorSpace = nullptr;
if (as_IB(this)->getROPixels(&bm, legacyColorSpace) && bm.peekPixels(&pmap)) {
if (serializer) {
- return serializer->encode(pmap);
+ return serializer->encodeToData(pmap);
} else {
SkDynamicMemoryWStream buf;
return SkEncodeImage(&buf, pmap, SkEncodedImageFormat::kPNG, 100)
- ? buf.detachAsData().release() : nullptr;
+ ? buf.detachAsData() : nullptr;
}
}
return nullptr;
}
-SkData* SkImage::refEncoded() const {
- return as_IB(this)->onRefEncoded();
+sk_sp<SkData> SkImage::refEncodedData() const {
+ return sk_sp<SkData>(as_IB(this)->onRefEncoded());
}
sk_sp<SkImage> SkImage::MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* subset) {
@@ -138,6 +138,20 @@ sk_sp<SkImage> SkImage::MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* su
return SkImage::MakeFromGenerator(SkImageGenerator::MakeFromEncoded(encoded), subset);
}
+#ifdef SK_SUPPORT_LEGACY_IMAGE_ENCODE_API
+SkData* SkImage::encode(SkEncodedImageFormat format, int quality) const {
+ return this->encodeToData(format, quality).release();
+}
+SkData* SkImage::encode(SkPixelSerializer* serial) const {
+ return this->encodeToData(serial).release();
+}
+SkData* SkImage::refEncoded() const {
+ return this->refEncodedData().release();
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
const char* SkImage::toString(SkString* str) const {
str->appendf("image: (id:%d (%d, %d) %s)", this->uniqueID(), this->width(), this->height(),
this->isOpaque() ? "opaque" : "");
diff --git a/src/pdf/SkPDFBitmap.cpp b/src/pdf/SkPDFBitmap.cpp
index fa09be33e6..68d5272277 100644
--- a/src/pdf/SkPDFBitmap.cpp
+++ b/src/pdf/SkPDFBitmap.cpp
@@ -479,7 +479,7 @@ void PDFJpegBitmap::emitObject(SkWStream* stream,
sk_sp<SkPDFObject> SkPDFCreateBitmapObject(sk_sp<SkImage> image,
SkPixelSerializer* pixelSerializer) {
SkASSERT(image);
- sk_sp<SkData> data(image->refEncoded());
+ sk_sp<SkData> data = image->refEncodedData();
SkJFIFInfo info;
if (data && SkIsJFIF(data.get(), &info) &&
(!pixelSerializer ||
@@ -502,7 +502,7 @@ sk_sp<SkPDFObject> SkPDFCreateBitmapObject(sk_sp<SkImage> image,
SkPixmap pmap;
SkColorSpace* legacyColorSpace = nullptr;
if (as_IB(image.get())->getROPixels(&bm, legacyColorSpace) && bm.peekPixels(&pmap)) {
- data.reset(pixelSerializer->encode(pmap));
+ data = pixelSerializer->encodeToData(pmap);
if (data && SkIsJFIF(data.get(), &info)) {
bool yuv = info.fType == SkJFIFInfo::kYCbCr;
if (info.fSize == image->dimensions()) { // Sanity check.
diff --git a/src/pipe/SkPipeCanvas.cpp b/src/pipe/SkPipeCanvas.cpp
index 7b665d9968..226a95725c 100644
--- a/src/pipe/SkPipeCanvas.cpp
+++ b/src/pipe/SkPipeCanvas.cpp
@@ -828,9 +828,9 @@ protected:
static sk_sp<SkData> default_image_serializer(SkImage* image) {
A8Serializer serial;
- sk_sp<SkData> data(image->encode(&serial));
+ sk_sp<SkData> data = image->encodeToData(&serial);
if (!data) {
- data.reset(image->encode());
+ data = image->encodeToData();
}
return data;
}