aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-07-12 14:44:27 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-12 20:54:14 +0000
commitb62f50cf763279fa0d0aa2f80624de02c7a1c2fb (patch)
treea4aba5466ff7e3136bd97c35718a678354b430ea /gm
parent5bc4fc8f3f26e9e14cccee4d200309e4b500b8d3 (diff)
Replace nearly all kRespect with kIgnore
- Encoders and decoders always assume kIgnore. - They are less opinionated about F16 and color space, we just trust the color space that's passed in, and put that directly in the image (no sRGB encoding). - SkBitmap and SkPixmap read/write pixels functions were defaulting to kResepct, those are now always kIgnore. - Many other bits of plumbing are simplified, and I added a default of kIgnore to SkImage::makeColorSpace, so we can phase out that argument entirely. - Still need to add defaults to other public APIs that take SkTransferFunctionBehavior. - This makes gold think that we've dramatically changed the contents of all F16 images, but that's because it doesn't understand the (now linear) color space that's embedded. Once we triage them all once, they will work fine (and they'll look perfect in the browser). Bug: skia: Change-Id: I62fa090f96cae1b67d181ce14bd91f34ff2ed747 Reviewed-on: https://skia-review.googlesource.com/140570 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
Diffstat (limited to 'gm')
-rw-r--r--gm/encode-alpha-jpeg.cpp27
-rw-r--r--gm/encode-platform.cpp8
-rw-r--r--gm/encode-srgb.cpp11
-rw-r--r--gm/makecolorspace.cpp34
4 files changed, 27 insertions, 53 deletions
diff --git a/gm/encode-alpha-jpeg.cpp b/gm/encode-alpha-jpeg.cpp
index 6d26d7a85c..9751fbbc16 100644
--- a/gm/encode-alpha-jpeg.cpp
+++ b/gm/encode-alpha-jpeg.cpp
@@ -21,11 +21,10 @@ static inline void read_into_pixmap(SkPixmap* dst, SkImageInfo dstInfo, void* ds
}
static inline sk_sp<SkImage> encode_pixmap_and_make_image(const SkPixmap& src,
- SkJpegEncoder::AlphaOption alphaOption, SkTransferFunctionBehavior blendBehavior) {
+ SkJpegEncoder::AlphaOption alphaOption) {
SkDynamicMemoryWStream dst;
SkJpegEncoder::Options options;
options.fAlphaOption = alphaOption;
- options.fBlendBehavior = blendBehavior;
SkJpegEncoder::Encode(&dst, src, options);
return SkImage::MakeFromEncoded(dst.detachAsData());
}
@@ -53,23 +52,17 @@ protected:
canvas->imageInfo().colorSpace() ? SkColorSpace::MakeSRGB() : nullptr);
read_into_pixmap(&src, info, fStorage.get(), srcImg);
- SkTransferFunctionBehavior behavior = canvas->imageInfo().colorSpace() ?
- SkTransferFunctionBehavior::kRespect : SkTransferFunctionBehavior::kIgnore;
-
// Encode 8888 premul.
- sk_sp<SkImage> img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore,
- behavior);
- sk_sp<SkImage> img1 = encode_pixmap_and_make_image(src,
- SkJpegEncoder::AlphaOption::kBlendOnBlack, behavior);
+ auto img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore);
+ auto img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack);
canvas->drawImage(img0, 0.0f, 0.0f);
canvas->drawImage(img1, 0.0f, 100.0f);
// Encode 8888 unpremul
info = info.makeAlphaType(kUnpremul_SkAlphaType);
read_into_pixmap(&src, info, fStorage.get(), srcImg);
- img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore, behavior);
- img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack,
- behavior);
+ img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore);
+ img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack);
canvas->drawImage(img0, 100.0f, 0.0f);
canvas->drawImage(img1, 100.0f, 100.0f);
@@ -78,18 +71,16 @@ protected:
info = SkImageInfo::Make(srcImg->width(), srcImg->height(), kRGBA_F16_SkColorType,
kPremul_SkAlphaType, SkColorSpace::MakeSRGBLinear());
read_into_pixmap(&src, info, fStorage.get(), srcImg);
- img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore, behavior);
- img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack,
- behavior);
+ img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore);
+ img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack);
canvas->drawImage(img0, 200.0f, 0.0f);
canvas->drawImage(img1, 200.0f, 100.0f);
// Encode F16 unpremul
info = info.makeAlphaType(kUnpremul_SkAlphaType);
read_into_pixmap(&src, info, fStorage.get(), srcImg);
- img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore, behavior);
- img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack,
- behavior);
+ img0 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kIgnore);
+ img1 = encode_pixmap_and_make_image(src, SkJpegEncoder::AlphaOption::kBlendOnBlack);
canvas->drawImage(img0, 300.0f, 0.0f);
canvas->drawImage(img1, 300.0f, 100.0f);
}
diff --git a/gm/encode-platform.cpp b/gm/encode-platform.cpp
index a9eaae6128..9f94597fa7 100644
--- a/gm/encode-platform.cpp
+++ b/gm/encode-platform.cpp
@@ -72,9 +72,7 @@ static sk_sp<SkData> encode_data(SkEncodedImageFormat type, const SkBitmap& bitm
#else
switch (type) {
case SkEncodedImageFormat::kPNG: {
- SkPngEncoder::Options options;
- options.fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
- bool success = SkPngEncoder::Encode(&buf, src, options);
+ bool success = SkPngEncoder::Encode(&buf, src, SkPngEncoder::Options());
return success ? buf.detachAsData() : nullptr;
}
case SkEncodedImageFormat::kJPEG: {
@@ -82,9 +80,7 @@ static sk_sp<SkData> encode_data(SkEncodedImageFormat type, const SkBitmap& bitm
return success ? buf.detachAsData() : nullptr;
}
case SkEncodedImageFormat::kWEBP: {
- SkWebpEncoder::Options options;
- options.fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
- bool success = SkWebpEncoder::Encode(&buf, src, options);
+ bool success = SkWebpEncoder::Encode(&buf, src, SkWebpEncoder::Options());
return success ? buf.detachAsData() : nullptr;
}
default:
diff --git a/gm/encode-srgb.cpp b/gm/encode-srgb.cpp
index 3b9526b3c9..699364291d 100644
--- a/gm/encode-srgb.cpp
+++ b/gm/encode-srgb.cpp
@@ -70,19 +70,12 @@ static sk_sp<SkData> encode_data(const SkBitmap& bitmap, SkEncodedImageFormat fo
}
SkDynamicMemoryWStream buf;
- SkPngEncoder::Options pngOptions;
- SkWebpEncoder::Options webpOptions;
- SkTransferFunctionBehavior behavior = bitmap.colorSpace()
- ? SkTransferFunctionBehavior::kRespect : SkTransferFunctionBehavior::kIgnore;
- pngOptions.fUnpremulBehavior = behavior;
- webpOptions.fUnpremulBehavior = behavior;
-
switch (format) {
case SkEncodedImageFormat::kPNG:
- SkAssertResult(SkPngEncoder::Encode(&buf, src, pngOptions));
+ SkAssertResult(SkPngEncoder::Encode(&buf, src, SkPngEncoder::Options()));
break;
case SkEncodedImageFormat::kWEBP:
- SkAssertResult(SkWebpEncoder::Encode(&buf, src, webpOptions));
+ SkAssertResult(SkWebpEncoder::Encode(&buf, src, SkWebpEncoder::Options()));
break;
case SkEncodedImageFormat::kJPEG:
SkAssertResult(SkJpegEncoder::Encode(&buf, src, SkJpegEncoder::Options()));
diff --git a/gm/makecolorspace.cpp b/gm/makecolorspace.cpp
index cd957c3281..ec04b74180 100644
--- a/gm/makecolorspace.cpp
+++ b/gm/makecolorspace.cpp
@@ -11,22 +11,19 @@
#include "SkImage.h"
#include "SkImagePriv.h"
-sk_sp<SkImage> make_raster_image(const char* path, SkTransferFunctionBehavior behavior) {
+sk_sp<SkImage> make_raster_image(const char* path) {
sk_sp<SkData> resourceData = GetResourceAsData(path);
std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(resourceData);
SkBitmap bitmap;
bitmap.allocPixels(codec->getInfo());
- SkCodec::Options opts;
- opts.fPremulBehavior = behavior;
- codec->getPixels(codec->getInfo(), bitmap.getPixels(), bitmap.rowBytes(), &opts);
+ codec->getPixels(codec->getInfo(), bitmap.getPixels(), bitmap.rowBytes());
return SkImage::MakeFromBitmap(bitmap);
}
-sk_sp<SkImage> make_color_space(sk_sp<SkImage> orig, sk_sp<SkColorSpace> colorSpace,
- SkTransferFunctionBehavior behavior) {
- sk_sp<SkImage> xform = orig->makeColorSpace(colorSpace, behavior);
+sk_sp<SkImage> make_color_space(sk_sp<SkImage> orig, sk_sp<SkColorSpace> colorSpace) {
+ sk_sp<SkImage> xform = orig->makeColorSpace(colorSpace);
// Assign an sRGB color space on the xformed image, so we can see the effects of the xform
// when we draw.
@@ -51,9 +48,6 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
- SkTransferFunctionBehavior behavior = canvas->imageInfo().colorSpace() ?
- SkTransferFunctionBehavior::kRespect : SkTransferFunctionBehavior::kIgnore;
-
sk_sp<SkColorSpace> wideGamut = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
SkColorSpace::kAdobeRGB_Gamut);
sk_sp<SkColorSpace> wideGamutLinear = wideGamut->makeLinearGamma();
@@ -62,22 +56,22 @@ protected:
sk_sp<SkImage> opaqueImage = GetResourceAsImage("images/mandrill_128.png");
sk_sp<SkImage> premulImage = GetResourceAsImage("images/color_wheel.png");
canvas->drawImage(opaqueImage, 0.0f, 0.0f);
- canvas->drawImage(make_color_space(opaqueImage, wideGamut, behavior), 128.0f, 0.0f);
- canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear, behavior), 256.0f, 0.0f);
+ canvas->drawImage(make_color_space(opaqueImage, wideGamut), 128.0f, 0.0f);
+ canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear), 256.0f, 0.0f);
canvas->drawImage(premulImage, 0.0f, 128.0f);
- canvas->drawImage(make_color_space(premulImage, wideGamut, behavior), 128.0f, 128.0f);
- canvas->drawImage(make_color_space(premulImage, wideGamutLinear, behavior), 256.0f, 128.0f);
+ canvas->drawImage(make_color_space(premulImage, wideGamut), 128.0f, 128.0f);
+ canvas->drawImage(make_color_space(premulImage, wideGamutLinear), 256.0f, 128.0f);
canvas->translate(0.0f, 256.0f);
// Raster images
- opaqueImage = make_raster_image("images/mandrill_128.png", behavior);
- premulImage = make_raster_image("images/color_wheel.png", behavior);
+ opaqueImage = make_raster_image("images/mandrill_128.png");
+ premulImage = make_raster_image("images/color_wheel.png");
canvas->drawImage(opaqueImage, 0.0f, 0.0f);
- canvas->drawImage(make_color_space(opaqueImage, wideGamut, behavior), 128.0f, 0.0f);
- canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear, behavior), 256.0f, 0.0f);
+ canvas->drawImage(make_color_space(opaqueImage, wideGamut), 128.0f, 0.0f);
+ canvas->drawImage(make_color_space(opaqueImage, wideGamutLinear), 256.0f, 0.0f);
canvas->drawImage(premulImage, 0.0f, 128.0f);
- canvas->drawImage(make_color_space(premulImage, wideGamut, behavior), 128.0f, 128.0f);
- canvas->drawImage(make_color_space(premulImage, wideGamutLinear, behavior), 256.0f, 128.0f);
+ canvas->drawImage(make_color_space(premulImage, wideGamut), 128.0f, 128.0f);
+ canvas->drawImage(make_color_space(premulImage, wideGamutLinear), 256.0f, 128.0f);
}
private: