aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpace.cpp
diff options
context:
space:
mode:
authorGravatar raftias <raftias@google.com>2016-11-30 11:19:22 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-12-01 16:22:49 +0000
commit51c3fcd376c5c9972d9476b5532f6164375a38d1 (patch)
tree550b06db1cb58caf5ec966ecaf80725fa5d74468 /src/core/SkColorSpace.cpp
parent14c8f82334b9b3b20316dc4ba4786d526c2a5012 (diff)
Added CMYK support for ICC profiles.
Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec (the only file that supports CMYK) and SkColorSpaceXform_A2B to allow parsing and color xforming of ICC CMYK images. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5197 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: Id6619f63f04071f79cd2d84321857dfa269ad3aa Reviewed-on: https://skia-review.googlesource.com/5197 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/core/SkColorSpace.cpp')
-rw-r--r--src/core/SkColorSpace.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/core/SkColorSpace.cpp b/src/core/SkColorSpace.cpp
index c09387bbad..e9db37a810 100644
--- a/src/core/SkColorSpace.cpp
+++ b/src/core/SkColorSpace.cpp
@@ -178,18 +178,15 @@ sk_sp<SkColorSpace> SkColorSpace::MakeRGB(const SkColorSpaceTransferFn& coeffs,
}
void* memory = sk_malloc_throw(sizeof(SkGammas) + sizeof(SkColorSpaceTransferFn));
- sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new (memory) SkGammas());
+ sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new (memory) SkGammas(3));
SkColorSpaceTransferFn* fn = SkTAddOffset<SkColorSpaceTransferFn>(memory, sizeof(SkGammas));
*fn = coeffs;
- gammas->fRedType = SkGammas::Type::kParam_Type;
- gammas->fGreenType = SkGammas::Type::kParam_Type;
- gammas->fBlueType = SkGammas::Type::kParam_Type;
-
SkGammas::Data data;
data.fParamOffset = 0;
- gammas->fRedData = data;
- gammas->fGreenData = data;
- gammas->fBlueData = data;
+ for (int channel = 0; channel < 3; ++channel) {
+ gammas->fType[channel] = SkGammas::Type::kParam_Type;
+ gammas->fData[channel] = data;
+ }
return sk_sp<SkColorSpace>(new SkColorSpace_XYZ(kNonStandard_SkGammaNamed,
std::move(gammas), toXYZD50, nullptr));
}