aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-03-23 15:32:25 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-24 13:19:53 +0000
commitcf3f2347c8933596aeba873d4ece597a9339392f (patch)
treed340f5802bb11ffe902b5f95ea06c6b75c5ccd74 /src/images
parenta3bdd44aff94974e720ed04b860fbfe24f8f431e (diff)
Add SkTransferFunctionBehavior flag: Use in codec and encoder
This is a step towards removing the non-linear blending flag from SkColorSpace. The flag on SkColorSpace used to control the premul behavior - now it is controlled by this option. BUG=skia: Change-Id: Ia29bd8c2b0596a93c6aa14332dcd9bd39e388a90 Reviewed-on: https://skia-review.googlesource.com/10008 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/images')
-rw-r--r--src/images/SkImageEncoderPriv.h10
-rw-r--r--src/images/SkJPEGImageEncoder.cpp2
-rw-r--r--src/images/SkPNGImageEncoder.cpp2
-rw-r--r--src/images/SkWEBPImageEncoder.cpp2
4 files changed, 4 insertions, 12 deletions
diff --git a/src/images/SkImageEncoderPriv.h b/src/images/SkImageEncoderPriv.h
index 69d45fbf8c..540d93093b 100644
--- a/src/images/SkImageEncoderPriv.h
+++ b/src/images/SkImageEncoderPriv.h
@@ -11,15 +11,7 @@
#include "SkImageEncoder.h"
struct SkEncodeOptions {
- enum class ColorBehavior {
- // Convert to a linear space before premultiplying or unpremultiplying.
- kCorrect,
-
- // Ignore the transfer function when premultiplying or unpremultiplying.
- kLegacy,
- };
-
- ColorBehavior fColorBehavior = ColorBehavior::kLegacy;
+ SkTransferFunctionBehavior fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
};
#ifdef SK_HAS_JPEG_LIBRARY
diff --git a/src/images/SkJPEGImageEncoder.cpp b/src/images/SkJPEGImageEncoder.cpp
index 014a0ae160..845673421c 100644
--- a/src/images/SkJPEGImageEncoder.cpp
+++ b/src/images/SkJPEGImageEncoder.cpp
@@ -86,7 +86,7 @@ bool SkEncodeImageAsJPEG(SkWStream* stream, const SkPixmap& pixmap, const SkEnco
pixmap.colorSpace()->gammaIsLinear());
SkPixmap src = pixmap;
- if (SkEncodeOptions::ColorBehavior::kLegacy == opts.fColorBehavior) {
+ if (SkTransferFunctionBehavior::kIgnore == opts.fUnpremulBehavior) {
src.setColorSpace(nullptr);
} else {
// kCorrect behavior requires a color space. It's not actually critical in the
diff --git a/src/images/SkPNGImageEncoder.cpp b/src/images/SkPNGImageEncoder.cpp
index e28ae12dc0..9f5ebd27ab 100644
--- a/src/images/SkPNGImageEncoder.cpp
+++ b/src/images/SkPNGImageEncoder.cpp
@@ -181,7 +181,7 @@ bool SkEncodeImageAsPNG(SkWStream* stream, const SkPixmap& src, const SkEncodeOp
src.colorSpace()->gammaIsLinear());
SkPixmap pixmap = src;
- if (SkEncodeOptions::ColorBehavior::kLegacy == opts.fColorBehavior) {
+ if (SkTransferFunctionBehavior::kIgnore == opts.fUnpremulBehavior) {
pixmap.setColorSpace(nullptr);
} else {
if (!pixmap.colorSpace()) {
diff --git a/src/images/SkWEBPImageEncoder.cpp b/src/images/SkWEBPImageEncoder.cpp
index a9fcc31265..28dff0569c 100644
--- a/src/images/SkWEBPImageEncoder.cpp
+++ b/src/images/SkWEBPImageEncoder.cpp
@@ -126,7 +126,7 @@ static bool do_encode(SkWStream* stream, const SkPixmap& srcPixmap, const SkEnco
srcPixmap.colorSpace()->gammaIsLinear());
SkPixmap pixmap = srcPixmap;
- if (SkEncodeOptions::ColorBehavior::kLegacy == opts.fColorBehavior) {
+ if (SkTransferFunctionBehavior::kIgnore == opts.fUnpremulBehavior) {
pixmap.setColorSpace(nullptr);
} else {
if (!pixmap.colorSpace()) {