DeMorgan's blend-on-black logic
I kept reading and re-reading the existing logic and couldn't figure it
out until I looked at the AlphaOption enum. I think this direction
reads a bit more clearly.
(This is why we have those ->premul methods. Oddly, we fail for 4444.)
Change-Id: I74ea2e380d5ab9526ea1e6412929346ad9c0ead6
Reviewed-on: https://skia-review.googlesource.com/c/167921
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/src/images/SkJpegEncoder.cpp b/src/images/SkJpegEncoder.cpp
index d6828b4..37a4911 100644
--- a/src/images/SkJpegEncoder.cpp
+++ b/src/images/SkJpegEncoder.cpp
@@ -68,13 +68,11 @@
bool SkJpegEncoderMgr::setParams(const SkImageInfo& srcInfo, const SkJpegEncoder::Options& options)
{
auto chooseProc8888 = [&]() {
- if (kUnpremul_SkAlphaType != srcInfo.alphaType() ||
- SkJpegEncoder::AlphaOption::kIgnore == options.fAlphaOption)
- {
- return (transform_scanline_proc) nullptr;
+ if (kUnpremul_SkAlphaType == srcInfo.alphaType() &&
+ options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) {
+ return transform_scanline_to_premul_legacy;
}
-
- return transform_scanline_to_premul_legacy;
+ return (transform_scanline_proc) nullptr;
};
J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
@@ -110,12 +108,11 @@
numComponents = 1;
break;
case kRGBA_F16_SkColorType:
- if (kUnpremul_SkAlphaType != srcInfo.alphaType() ||
- SkJpegEncoder::AlphaOption::kIgnore == options.fAlphaOption)
- {
- fProc = transform_scanline_F16_to_8888;
- } else {
+ if (kUnpremul_SkAlphaType == srcInfo.alphaType() &&
+ options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) {
fProc = transform_scanline_F16_to_premul_8888;
+ } else {
+ fProc = transform_scanline_F16_to_8888;
}
jpegColorType = JCS_EXT_RGBA;
numComponents = 4;