diff options
author | raftias <raftias@google.com> | 2016-11-30 11:19:22 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-01 16:22:49 +0000 |
commit | 51c3fcd376c5c9972d9476b5532f6164375a38d1 (patch) | |
tree | 550b06db1cb58caf5ec966ecaf80725fa5d74468 /src/core/SkColorSpace.cpp | |
parent | 14c8f82334b9b3b20316dc4ba4786d526c2a5012 (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.cpp | 13 |
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)); } |