Commit 5459bae1 authored by Brian Osman's avatar Brian Osman Committed by Commit Bot

Remove all usage of SkTransferFunctionBehavior

This enum is going away, and is always assumed to be kIgnore within Skia.

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I1d330478aab486864395ef36762f12f3df76c4d2
Reviewed-on: https://chromium-review.googlesource.com/1135551Reviewed-by: default avatarFlorin Malita <fmalita@chromium.org>
Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Reviewed-by: default avatarEric Karl <ericrk@chromium.org>
Reviewed-by: default avatarccameron <ccameron@chromium.org>
Reviewed-by: default avatarOliver Chang <ochang@chromium.org>
Reviewed-by: default avatarMike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Cr-Commit-Position: refs/heads/master@{#575614}
parent f623bafe
...@@ -36,8 +36,7 @@ sk_sp<SkImage> MakeTextureImage(GrContext* context, ...@@ -36,8 +36,7 @@ sk_sp<SkImage> MakeTextureImage(GrContext* context,
// TODO(ericrk): consider adding in the DeleteSkImageAndPreventCaching // TODO(ericrk): consider adding in the DeleteSkImageAndPreventCaching
// optimization from GpuImageDecodeCache where we forcefully remove the // optimization from GpuImageDecodeCache where we forcefully remove the
// intermediate from Skia's cache. // intermediate from Skia's cache.
uploaded_image = uploaded_image->makeColorSpace( uploaded_image = uploaded_image->makeColorSpace(target_color_space);
target_color_space, SkTransferFunctionBehavior::kIgnore);
} }
// Step 3: If we had a colorspace conversion, we couldn't mipmap in step 1, so // Step 3: If we had a colorspace conversion, we couldn't mipmap in step 1, so
...@@ -203,8 +202,7 @@ bool ServiceImageTransferCacheEntry::Deserialize( ...@@ -203,8 +202,7 @@ bool ServiceImageTransferCacheEntry::Deserialize(
if (!original) if (!original)
return false; return false;
if (target_color_space) { if (target_color_space) {
image_ = original->makeColorSpace(target_color_space, image_ = original->makeColorSpace(target_color_space);
SkTransferFunctionBehavior::kIgnore);
// If color space conversion is a noop, use original data. // If color space conversion is a noop, use original data.
if (image_ == original) if (image_ == original)
image_ = SkImage::MakeRasterCopy(pixmap); image_ = SkImage::MakeRasterCopy(pixmap);
......
...@@ -228,8 +228,7 @@ bool PaintImage::DecodeFromSkImage(void* memory, ...@@ -228,8 +228,7 @@ bool PaintImage::DecodeFromSkImage(void* memory,
auto image = GetSkImageForFrame(frame_index); auto image = GetSkImageForFrame(frame_index);
DCHECK(image); DCHECK(image);
if (color_space) { if (color_space) {
image = image = image->makeColorSpace(color_space);
image->makeColorSpace(color_space, SkTransferFunctionBehavior::kIgnore);
if (!image) if (!image)
return false; return false;
} }
......
...@@ -303,8 +303,7 @@ sk_sp<SkImage> MakeTextureImage(viz::RasterContextProvider* context, ...@@ -303,8 +303,7 @@ sk_sp<SkImage> MakeTextureImage(viz::RasterContextProvider* context,
// Step 2: Apply a color-space conversion if necessary. // Step 2: Apply a color-space conversion if necessary.
if (uploaded_image && target_color_space) { if (uploaded_image && target_color_space) {
sk_sp<SkImage> pre_converted_image = uploaded_image; sk_sp<SkImage> pre_converted_image = uploaded_image;
uploaded_image = uploaded_image->makeColorSpace( uploaded_image = uploaded_image->makeColorSpace(target_color_space);
target_color_space, SkTransferFunctionBehavior::kIgnore);
if (uploaded_image != pre_converted_image) if (uploaded_image != pre_converted_image)
DeleteSkImageAndPreventCaching(context, std::move(pre_converted_image)); DeleteSkImageAndPreventCaching(context, std::move(pre_converted_image));
......
...@@ -226,8 +226,7 @@ CanvasAsyncBlobCreator::CanvasAsyncBlobCreator( ...@@ -226,8 +226,7 @@ CanvasAsyncBlobCreator::CanvasAsyncBlobCreator(
// covnert to the requested color space and pixel format. // covnert to the requested color space and pixel format.
if (function_type_ != kHTMLCanvasConvertToBlobPromise) { if (function_type_ != kHTMLCanvasConvertToBlobPromise) {
if (skia_image->colorSpace()) { if (skia_image->colorSpace()) {
image_ = image_->ConvertToColorSpace(SkColorSpace::MakeSRGB(), image_ = image_->ConvertToColorSpace(SkColorSpace::MakeSRGB());
SkTransferFunctionBehavior::kIgnore);
skia_image = image_->PaintImageForCurrentFrame().GetSkImage(); skia_image = image_->PaintImageForCurrentFrame().GetSkImage();
} }
...@@ -248,8 +247,7 @@ CanvasAsyncBlobCreator::CanvasAsyncBlobCreator( ...@@ -248,8 +247,7 @@ CanvasAsyncBlobCreator::CanvasAsyncBlobCreator(
skia_image = SkImage::MakeFromRaster(src_data_, nullptr, nullptr); skia_image = SkImage::MakeFromRaster(src_data_, nullptr, nullptr);
} }
DCHECK(skia_image->colorSpace()); DCHECK(skia_image->colorSpace());
skia_image = skia_image->makeColorSpace( skia_image = skia_image->makeColorSpace(blob_color_space);
blob_color_space, SkTransferFunctionBehavior::kIgnore);
image_ = StaticBitmapImage::Create(skia_image); image_ = StaticBitmapImage::Create(skia_image);
} }
...@@ -330,12 +328,7 @@ bool CanvasAsyncBlobCreator::EncodeImage(const double& quality) { ...@@ -330,12 +328,7 @@ bool CanvasAsyncBlobCreator::EncodeImage(const double& quality) {
std::unique_ptr<ImageDataBuffer> buffer = ImageDataBuffer::Create(src_data_); std::unique_ptr<ImageDataBuffer> buffer = ImageDataBuffer::Create(src_data_);
if (!buffer) if (!buffer)
return false; return false;
SkTransferFunctionBehavior transfer_fn_behavior = return buffer->EncodeImage("image/webp", quality, &encoded_image_);
SkTransferFunctionBehavior::kIgnore;
if (function_type_ == kHTMLCanvasConvertToBlobPromise)
transfer_fn_behavior = SkTransferFunctionBehavior::kIgnore;
return buffer->EncodeImage("image/webp", quality, &encoded_image_,
transfer_fn_behavior);
} }
void CanvasAsyncBlobCreator::ScheduleAsyncBlobCreation(const double& quality) { void CanvasAsyncBlobCreator::ScheduleAsyncBlobCreation(const double& quality) {
...@@ -545,7 +538,6 @@ bool CanvasAsyncBlobCreator::InitializeEncoder(double quality) { ...@@ -545,7 +538,6 @@ bool CanvasAsyncBlobCreator::InitializeEncoder(double quality) {
SkJpegEncoder::Options options; SkJpegEncoder::Options options;
options.fQuality = ImageEncoder::ComputeJpegQuality(quality); options.fQuality = ImageEncoder::ComputeJpegQuality(quality);
options.fAlphaOption = SkJpegEncoder::AlphaOption::kBlendOnBlack; options.fAlphaOption = SkJpegEncoder::AlphaOption::kBlendOnBlack;
options.fBlendBehavior = SkTransferFunctionBehavior::kIgnore;
if (options.fQuality == 100) { if (options.fQuality == 100) {
options.fDownsample = SkJpegEncoder::Downsample::k444; options.fDownsample = SkJpegEncoder::Downsample::k444;
} }
...@@ -560,7 +552,6 @@ bool CanvasAsyncBlobCreator::InitializeEncoder(double quality) { ...@@ -560,7 +552,6 @@ bool CanvasAsyncBlobCreator::InitializeEncoder(double quality) {
SkPngEncoder::Options options; SkPngEncoder::Options options;
options.fFilterFlags = SkPngEncoder::FilterFlag::kSub; options.fFilterFlags = SkPngEncoder::FilterFlag::kSub;
options.fZLibLevel = 3; options.fZLibLevel = 3;
options.fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
encoder_ = ImageEncoder::Create(&encoded_image_, src_data_, options); encoder_ = ImageEncoder::Create(&encoded_image_, src_data_, options);
} }
...@@ -655,8 +646,7 @@ bool CanvasAsyncBlobCreator::EncodeImageForConvertToBlobTest() { ...@@ -655,8 +646,7 @@ bool CanvasAsyncBlobCreator::EncodeImageForConvertToBlobTest() {
if (!buffer) if (!buffer)
return false; return false;
return buffer->EncodeImage(encode_options_.type(), encode_options_.quality(), return buffer->EncodeImage(encode_options_.type(), encode_options_.quality(),
&encoded_image_, &encoded_image_);
SkTransferFunctionBehavior::kIgnore);
} }
} // namespace blink } // namespace blink
...@@ -301,8 +301,7 @@ TEST_F(CanvasAsyncBlobCreatorTest, ColorManagedConvertToBlob) { ...@@ -301,8 +301,7 @@ TEST_F(CanvasAsyncBlobCreatorTest, ColorManagedConvertToBlob) {
sk_sp<SkImage> ref_image = source_image->makeColorSpace( sk_sp<SkImage> ref_image = source_image->makeColorSpace(
CanvasAsyncBlobCreator::BlobColorSpaceToSkColorSpace( CanvasAsyncBlobCreator::BlobColorSpaceToSkColorSpace(
blob_color_space), blob_color_space));
SkTransferFunctionBehavior::kIgnore);
// Jpeg does not support transparent images. // Jpeg does not support transparent images.
bool compare_alpha = (blob_mime_type != "image/jpeg"); bool compare_alpha = (blob_mime_type != "image/jpeg");
......
...@@ -367,8 +367,7 @@ ImageData* ImageData::Create(scoped_refptr<StaticBitmapImage> image, ...@@ -367,8 +367,7 @@ ImageData* ImageData::Create(scoped_refptr<StaticBitmapImage> image,
if (!f16_array) if (!f16_array)
return nullptr; return nullptr;
if (!pixmap.readPixels(image_info, f16_array->Data(), if (!pixmap.readPixels(image_info, f16_array->Data(),
image_info.minRowBytes(), 0, 0, image_info.minRowBytes())) {
SkTransferFunctionBehavior::kIgnore)) {
NOTREACHED(); NOTREACHED();
return nullptr; return nullptr;
} }
......
...@@ -447,20 +447,8 @@ scoped_refptr<StaticBitmapImage> ScaleImage( ...@@ -447,20 +447,8 @@ scoped_refptr<StaticBitmapImage> ScaleImage(
scoped_refptr<StaticBitmapImage> ApplyColorSpaceConversion( scoped_refptr<StaticBitmapImage> ApplyColorSpaceConversion(
scoped_refptr<StaticBitmapImage>&& image, scoped_refptr<StaticBitmapImage>&& image,
ImageBitmap::ParsedOptions& options) { ImageBitmap::ParsedOptions& options) {
SkTransferFunctionBehavior transfer_function_behavior =
SkTransferFunctionBehavior::kIgnore;
// We normally expect to respect transfer function. However, in two scenarios
// we have to ignore the transfer function. First, when the source image is
// unpremul. Second, when the source image is drawn using a
// SkColorSpaceXformCanvas.
sk_sp<SkImage> skia_image = image->PaintImageForCurrentFrame().GetSkImage();
if (!skia_image->colorSpace() ||
skia_image->alphaType() == kUnpremul_SkAlphaType)
transfer_function_behavior = SkTransferFunctionBehavior::kIgnore;
return image->ConvertToColorSpace( return image->ConvertToColorSpace(
options.color_params.GetSkColorSpaceForSkSurfaces(), options.color_params.GetSkColorSpaceForSkSurfaces());
transfer_function_behavior);
} }
scoped_refptr<StaticBitmapImage> MakeBlankImage( scoped_refptr<StaticBitmapImage> MakeBlankImage(
......
...@@ -55,8 +55,7 @@ bool EncodeAsImage(char* body, ...@@ -55,8 +55,7 @@ bool EncodeAsImage(char* body,
String mime_type = "image/"; String mime_type = "image/";
mime_type.append(encoding); mime_type.append(encoding);
return image_to_encode->EncodeImage(mime_type, quality, output, return image_to_encode->EncodeImage(mime_type, quality, output);
SkTransferFunctionBehavior::kIgnore);
} }
} // namespace } // namespace
......
...@@ -26,8 +26,7 @@ scoped_refptr<blink::StaticBitmapImage> ToStaticBitmapImage( ...@@ -26,8 +26,7 @@ scoped_refptr<blink::StaticBitmapImage> ToStaticBitmapImage(
SkImageInfo info = sk_bitmap.info(); SkImageInfo info = sk_bitmap.info();
if (!sk_bitmap.readPixels(info, array_buffer_contents.Data(), if (!sk_bitmap.readPixels(info, array_buffer_contents.Data(),
info.minRowBytes(), 0, 0, info.minRowBytes(), 0, 0))
SkTransferFunctionBehavior::kIgnore))
return nullptr; return nullptr;
return blink::StaticBitmapImage::Create(array_buffer_contents, info); return blink::StaticBitmapImage::Create(array_buffer_contents, info);
......
...@@ -160,10 +160,7 @@ bool DecodingImageGenerator::GetPixels(const SkImageInfo& dst_info, ...@@ -160,10 +160,7 @@ bool DecodingImageGenerator::GetPixels(const SkImageInfo& dst_info,
TRACE_EVENT0("blink", "DecodingImageGenerator::getPixels - apply xform"); TRACE_EVENT0("blink", "DecodingImageGenerator::getPixels - apply xform");
SkPixmap src(decode_info, pixels, row_bytes); SkPixmap src(decode_info, pixels, row_bytes);
// kIgnore ensures that we perform the premultiply (if necessary) in the dst const bool converted = src.readPixels(dst_info, pixels, row_bytes);
// space.
const bool converted = src.readPixels(dst_info, pixels, row_bytes, 0, 0,
SkTransferFunctionBehavior::kIgnore);
DCHECK(converted); DCHECK(converted);
} }
......
...@@ -117,28 +117,22 @@ const unsigned char* ImageDataBuffer::Pixels() const { ...@@ -117,28 +117,22 @@ const unsigned char* ImageDataBuffer::Pixels() const {
return static_cast<const unsigned char*>(pixmap_.addr()); return static_cast<const unsigned char*>(pixmap_.addr());
} }
bool ImageDataBuffer::EncodeImage( bool ImageDataBuffer::EncodeImage(const String& mime_type,
const String& mime_type, const double& quality,
const double& quality, Vector<unsigned char>* encoded_image) const {
Vector<unsigned char>* encoded_image, return EncodeImageInternal(mime_type, quality, encoded_image, pixmap_);
SkTransferFunctionBehavior transfer_fn_behavior) const {
return EncodeImageInternal(mime_type, quality, encoded_image, pixmap_,
transfer_fn_behavior);
} }
bool ImageDataBuffer::EncodeImageInternal( bool ImageDataBuffer::EncodeImageInternal(const String& mime_type,
const String& mime_type, const double& quality,
const double& quality, Vector<unsigned char>* encoded_image,
Vector<unsigned char>* encoded_image, const SkPixmap& pixmap) const {
const SkPixmap& pixmap,
SkTransferFunctionBehavior transfer_fn_behavior) const {
DCHECK(is_valid_); DCHECK(is_valid_);
if (mime_type == "image/jpeg") { if (mime_type == "image/jpeg") {
SkJpegEncoder::Options options; SkJpegEncoder::Options options;
options.fQuality = ImageEncoder::ComputeJpegQuality(quality); options.fQuality = ImageEncoder::ComputeJpegQuality(quality);
options.fAlphaOption = SkJpegEncoder::AlphaOption::kBlendOnBlack; options.fAlphaOption = SkJpegEncoder::AlphaOption::kBlendOnBlack;
options.fBlendBehavior = transfer_fn_behavior;
if (options.fQuality == 100) { if (options.fQuality == 100) {
options.fDownsample = SkJpegEncoder::Downsample::k444; options.fDownsample = SkJpegEncoder::Downsample::k444;
} }
...@@ -146,8 +140,7 @@ bool ImageDataBuffer::EncodeImageInternal( ...@@ -146,8 +140,7 @@ bool ImageDataBuffer::EncodeImageInternal(
} }
if (mime_type == "image/webp") { if (mime_type == "image/webp") {
SkWebpEncoder::Options options = SkWebpEncoder::Options options = ImageEncoder::ComputeWebpOptions(quality);
ImageEncoder::ComputeWebpOptions(quality, transfer_fn_behavior);
return ImageEncoder::Encode(encoded_image, pixmap, options); return ImageEncoder::Encode(encoded_image, pixmap, options);
} }
...@@ -155,7 +148,6 @@ bool ImageDataBuffer::EncodeImageInternal( ...@@ -155,7 +148,6 @@ bool ImageDataBuffer::EncodeImageInternal(
SkPngEncoder::Options options; SkPngEncoder::Options options;
options.fFilterFlags = SkPngEncoder::FilterFlag::kSub; options.fFilterFlags = SkPngEncoder::FilterFlag::kSub;
options.fZLibLevel = 3; options.fZLibLevel = 3;
options.fUnpremulBehavior = transfer_fn_behavior;
return ImageEncoder::Encode(encoded_image, pixmap, options); return ImageEncoder::Encode(encoded_image, pixmap, options);
} }
...@@ -171,16 +163,14 @@ String ImageDataBuffer::ToDataURL(const String& mime_type, ...@@ -171,16 +163,14 @@ String ImageDataBuffer::ToDataURL(const String& mime_type,
if (pixmap.colorSpace()) { if (pixmap.colorSpace()) {
if (!pixmap.colorSpace()->isSRGB()) { if (!pixmap.colorSpace()->isSRGB()) {
skia_image = SkImage::MakeFromRaster(pixmap, nullptr, nullptr); skia_image = SkImage::MakeFromRaster(pixmap, nullptr, nullptr);
skia_image = skia_image->makeColorSpace( skia_image = skia_image->makeColorSpace(SkColorSpace::MakeSRGB());
SkColorSpace::MakeSRGB(), SkTransferFunctionBehavior::kIgnore);
skia_image->peekPixels(&pixmap); skia_image->peekPixels(&pixmap);
} }
pixmap.setColorSpace(nullptr); pixmap.setColorSpace(nullptr);
} }
Vector<unsigned char> result; Vector<unsigned char> result;
if (!EncodeImageInternal(mime_type, quality, &result, pixmap, if (!EncodeImageInternal(mime_type, quality, &result, pixmap))
SkTransferFunctionBehavior::kIgnore))
return "data:,"; return "data:,";
return "data:" + mime_type + ";base64," + Base64Encode(result); return "data:" + mime_type + ";base64," + Base64Encode(result);
......
...@@ -50,8 +50,7 @@ class PLATFORM_EXPORT ImageDataBuffer { ...@@ -50,8 +50,7 @@ class PLATFORM_EXPORT ImageDataBuffer {
String ToDataURL(const String& mime_type, const double& quality) const; String ToDataURL(const String& mime_type, const double& quality) const;
bool EncodeImage(const String& mime_type, bool EncodeImage(const String& mime_type,
const double& quality, const double& quality,
Vector<unsigned char>* encoded_image, Vector<unsigned char>* encoded_image) const;
SkTransferFunctionBehavior transfer_fn_behavior) const;
const unsigned char* Pixels() const; const unsigned char* Pixels() const;
const IntSize& size() const { return size_; } const IntSize& size() const { return size_; }
...@@ -67,12 +66,10 @@ class PLATFORM_EXPORT ImageDataBuffer { ...@@ -67,12 +66,10 @@ class PLATFORM_EXPORT ImageDataBuffer {
bool IsValid() { return is_valid_; } // Only used by Create() bool IsValid() { return is_valid_; } // Only used by Create()
bool EncodeImageInternal( bool EncodeImageInternal(const String& mime_type,
const String& mime_type, const double& quality,
const double& quality, Vector<unsigned char>* encoded_image,
Vector<unsigned char>* encoded_image, const SkPixmap& pixmap) const;
const SkPixmap& pixmap,
SkTransferFunctionBehavior transfer_fn_behavior) const;
sk_sp<SkImage> retained_image_; sk_sp<SkImage> retained_image_;
SkPixmap pixmap_; SkPixmap pixmap_;
......
...@@ -273,7 +273,6 @@ std::unique_ptr<JSONObject> ObjectForBitmapData(const SkBitmap& bitmap) { ...@@ -273,7 +273,6 @@ std::unique_ptr<JSONObject> ObjectForBitmapData(const SkBitmap& bitmap) {
SkPngEncoder::Options options; SkPngEncoder::Options options;
options.fFilterFlags = SkPngEncoder::FilterFlag::kSub; options.fFilterFlags = SkPngEncoder::FilterFlag::kSub;
options.fZLibLevel = 3; options.fZLibLevel = 3;
options.fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
if (!ImageEncoder::Encode(&output, src, options)) { if (!ImageEncoder::Encode(&output, src, options)) {
return nullptr; return nullptr;
} }
......
...@@ -123,7 +123,6 @@ Vector<char> PictureSnapshot::Replay(unsigned from_step, ...@@ -123,7 +123,6 @@ Vector<char> PictureSnapshot::Replay(unsigned from_step,
SkPngEncoder::Options options; SkPngEncoder::Options options;
options.fFilterFlags = SkPngEncoder::FilterFlag::kSub; options.fFilterFlags = SkPngEncoder::FilterFlag::kSub;
options.fZLibLevel = 3; options.fZLibLevel = 3;
options.fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
if (!ImageEncoder::Encode( if (!ImageEncoder::Encode(
reinterpret_cast<Vector<unsigned char>*>(&encoded_image), src, reinterpret_cast<Vector<unsigned char>*>(&encoded_image), src,
options)) { options)) {
......
...@@ -79,8 +79,7 @@ void StaticBitmapImage::DrawHelper(cc::PaintCanvas* canvas, ...@@ -79,8 +79,7 @@ void StaticBitmapImage::DrawHelper(cc::PaintCanvas* canvas,
} }
scoped_refptr<StaticBitmapImage> StaticBitmapImage::ConvertToColorSpace( scoped_refptr<StaticBitmapImage> StaticBitmapImage::ConvertToColorSpace(
sk_sp<SkColorSpace> target, sk_sp<SkColorSpace> target) {
SkTransferFunctionBehavior transfer_function_behavior) {
sk_sp<SkImage> skia_image = PaintImageForCurrentFrame().GetSkImage(); sk_sp<SkImage> skia_image = PaintImageForCurrentFrame().GetSkImage();
sk_sp<SkColorSpace> src_color_space = skia_image->refColorSpace(); sk_sp<SkColorSpace> src_color_space = skia_image->refColorSpace();
if (!src_color_space.get()) if (!src_color_space.get())
...@@ -92,7 +91,7 @@ scoped_refptr<StaticBitmapImage> StaticBitmapImage::ConvertToColorSpace( ...@@ -92,7 +91,7 @@ scoped_refptr<StaticBitmapImage> StaticBitmapImage::ConvertToColorSpace(
return this; return this;
sk_sp<SkImage> converted_skia_image = sk_sp<SkImage> converted_skia_image =
skia_image->makeColorSpace(dst_color_space, transfer_function_behavior); skia_image->makeColorSpace(dst_color_space);
DCHECK(converted_skia_image.get()); DCHECK(converted_skia_image.get());
DCHECK(skia_image.get() != converted_skia_image.get()); DCHECK(skia_image.get() != converted_skia_image.get());
......
...@@ -113,9 +113,7 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image { ...@@ -113,9 +113,7 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
// Methods have exactly the same implementation for all sub-classes // Methods have exactly the same implementation for all sub-classes
bool OriginClean() const { return is_origin_clean_; } bool OriginClean() const { return is_origin_clean_; }
void SetOriginClean(bool flag) { is_origin_clean_ = flag; } void SetOriginClean(bool flag) { is_origin_clean_ = flag; }
scoped_refptr<StaticBitmapImage> ConvertToColorSpace( scoped_refptr<StaticBitmapImage> ConvertToColorSpace(sk_sp<SkColorSpace>);
sk_sp<SkColorSpace>,
SkTransferFunctionBehavior);
static bool ConvertToArrayBufferContents( static bool ConvertToArrayBufferContents(
scoped_refptr<StaticBitmapImage> src_image, scoped_refptr<StaticBitmapImage> src_image,
......
...@@ -87,11 +87,8 @@ int ImageEncoder::ComputeJpegQuality(double quality) { ...@@ -87,11 +87,8 @@ int ImageEncoder::ComputeJpegQuality(double quality) {
return compression_quality; return compression_quality;
} }
SkWebpEncoder::Options ImageEncoder::ComputeWebpOptions( SkWebpEncoder::Options ImageEncoder::ComputeWebpOptions(double quality) {
double quality,
SkTransferFunctionBehavior unpremulBehavior) {
SkWebpEncoder::Options options; SkWebpEncoder::Options options;
options.fUnpremulBehavior = unpremulBehavior;
if (quality == 1.0) { if (quality == 1.0) {
// Choose a lossless encode. When performing a lossless encode, higher // Choose a lossless encode. When performing a lossless encode, higher
......
...@@ -85,9 +85,7 @@ class PLATFORM_EXPORT ImageEncoder { ...@@ -85,9 +85,7 @@ class PLATFORM_EXPORT ImageEncoder {
* is out of range, this will perform a lossy encode with the default * is out of range, this will perform a lossy encode with the default
* value (80). * value (80).
*/ */
static SkWebpEncoder::Options ComputeWebpOptions( static SkWebpEncoder::Options ComputeWebpOptions(double quality);
double quality,
SkTransferFunctionBehavior unpremulBehavior);
private: private:
ImageEncoder(Vector<unsigned char>* dst) : dst_(dst) {} ImageEncoder(Vector<unsigned char>* dst) : dst_(dst) {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment