diff options
author | 2016-09-28 11:15:27 -0700 | |
---|---|---|
committer | 2016-09-28 11:15:27 -0700 | |
commit | 7802c3db24effa6f3186bff7490a2a8dd85d2a70 (patch) | |
tree | 7b567fbaf9fd54ebdddd48e970bbf56b027930bd /src/core | |
parent | e08c1d35bab4a3995234f2a226da9eb9775a98ad (diff) |
Move toXYZD50() to SkColorSpace_Base
SkColorSpace needs to become more versatile, in order to support
profiles that cannot specified with just a "to XYZ D50" matrix.
This a just first step to clean up the public API.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2381553002
Review-Url: https://codereview.chromium.org/2381553002
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkColorSpace.cpp | 20 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform.cpp | 2 | ||||
-rw-r--r-- | src/core/SkColorSpace_Base.h | 2 |
3 files changed, 11 insertions, 13 deletions
diff --git a/src/core/SkColorSpace.cpp b/src/core/SkColorSpace.cpp index 225cfe1464..c6bf4b9431 100644 --- a/src/core/SkColorSpace.cpp +++ b/src/core/SkColorSpace.cpp @@ -10,26 +10,22 @@ #include "SkColorSpacePriv.h" #include "SkOnce.h" -SkColorSpace::SkColorSpace(const SkMatrix44& toXYZD50) - : fToXYZD50(toXYZD50) -{} - SkColorSpace_Base::SkColorSpace_Base(SkGammaNamed gammaNamed, const SkMatrix44& toXYZD50) - : INHERITED(toXYZD50) - , fGammaNamed(gammaNamed) + : fGammaNamed(gammaNamed) , fGammas(nullptr) , fProfileData(nullptr) + , fToXYZD50(toXYZD50) , fFromXYZD50(SkMatrix44::kUninitialized_Constructor) {} SkColorSpace_Base::SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, SkGammaNamed gammaNamed, sk_sp<SkGammas> gammas, const SkMatrix44& toXYZD50, sk_sp<SkData> profileData) - : INHERITED(toXYZD50) - , fColorLUT(std::move(colorLUT)) + : fColorLUT(std::move(colorLUT)) , fGammaNamed(gammaNamed) , fGammas(std::move(gammas)) , fProfileData(std::move(profileData)) + , fToXYZD50(toXYZD50) , fFromXYZD50(SkMatrix44::kUninitialized_Constructor) {} @@ -192,7 +188,7 @@ sk_sp<SkColorSpace> SkColorSpace::makeLinearGamma() { if (this->gammaIsLinear()) { return sk_ref_sp(this); } - return SkColorSpace_Base::NewRGB(kLinear_SkGammaNamed, fToXYZD50); + return SkColorSpace_Base::NewRGB(kLinear_SkGammaNamed, as_CSB(this)->fToXYZD50); } /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -311,7 +307,7 @@ size_t SkColorSpace::writeToMemory(void* memory) const { ColorSpaceHeader::Pack(k0_Version, 0, as_CSB(this)->fGammaNamed, ColorSpaceHeader::kMatrix_Flag); memory = SkTAddOffset<void>(memory, sizeof(ColorSpaceHeader)); - fToXYZD50.as3x4RowMajorf((float*) memory); + as_CSB(this)->fToXYZD50.as3x4RowMajorf((float*) memory); } return sizeof(ColorSpaceHeader) + 12 * sizeof(float); } @@ -333,7 +329,7 @@ size_t SkColorSpace::writeToMemory(void* memory) const { *(((float*) memory) + 2) = gammas->fBlueData.fValue; memory = SkTAddOffset<void>(memory, 3 * sizeof(float)); - fToXYZD50.as3x4RowMajorf((float*) memory); + as_CSB(this)->fToXYZD50.as3x4RowMajorf((float*) memory); } return sizeof(ColorSpaceHeader) + 15 * sizeof(float); } @@ -461,7 +457,7 @@ bool SkColorSpace::Equals(const SkColorSpace* src, const SkColorSpace* dst) { case k2Dot2Curve_SkGammaNamed: case kLinear_SkGammaNamed: return (as_CSB(src)->fGammaNamed == as_CSB(dst)->fGammaNamed) && - (src->fToXYZD50 == dst->fToXYZD50); + (as_CSB(src)->fToXYZD50 == as_CSB(dst)->fToXYZD50); default: if (as_CSB(src)->fGammaNamed != as_CSB(dst)->fGammaNamed) { return false; diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp index b555d599c4..6f2f75b8b1 100644 --- a/src/core/SkColorSpaceXform.cpp +++ b/src/core/SkColorSpaceXform.cpp @@ -355,7 +355,7 @@ std::unique_ptr<SkColorSpaceXform> SkColorSpaceXform::New(SkColorSpace* srcSpace srcToDst.setIdentity(); csm = kFull_ColorSpaceMatch; } else { - srcToDst.setConcat(as_CSB(dstSpace)->fromXYZD50(), srcSpace->toXYZD50()); + srcToDst.setConcat(as_CSB(dstSpace)->fromXYZD50(), as_CSB(srcSpace)->toXYZD50()); if (is_almost_identity(srcToDst)) { srcToDst.setIdentity(); diff --git a/src/core/SkColorSpace_Base.h b/src/core/SkColorSpace_Base.h index 9382153967..07fa383253 100644 --- a/src/core/SkColorSpace_Base.h +++ b/src/core/SkColorSpace_Base.h @@ -189,6 +189,7 @@ public: const SkColorLookUpTable* colorLUT() const { return fColorLUT.get(); } + const SkMatrix44& toXYZD50() const { return fToXYZD50; } const SkMatrix44& fromXYZD50() const; private: @@ -214,6 +215,7 @@ private: sk_sp<SkGammas> fGammas; sk_sp<SkData> fProfileData; + const SkMatrix44 fToXYZD50; mutable SkMatrix44 fFromXYZD50; mutable SkOnce fFromXYZOnce; |