diff options
Diffstat (limited to 'src/core/SkColorSpace_XYZ.h')
-rw-r--r-- | src/core/SkColorSpace_XYZ.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/core/SkColorSpace_XYZ.h b/src/core/SkColorSpace_XYZ.h new file mode 100644 index 0000000000..72ec3f1b67 --- /dev/null +++ b/src/core/SkColorSpace_XYZ.h @@ -0,0 +1,58 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorSpace_XYZ_DEFINED +#define SkColorSpace_XYZ_DEFINED + +#include "SkColorSpace_Base.h" +#include "SkData.h" +#include "SkOnce.h" + +class SkColorSpace_XYZ : public SkColorSpace_Base { +public: + const SkMatrix44* toXYZD50() const override { return &fToXYZD50; } + + const SkMatrix44* fromXYZD50() const override; + + bool onGammaCloseToSRGB() const override; + + bool onGammaIsLinear() const override; + + Type type() const override { return Type::kXYZ; } + + sk_sp<SkColorSpace> makeLinearGamma(); + + SkGammaNamed gammaNamed() const { return fGammaNamed; } + + const SkGammas* gammas() const { return fGammas.get(); } + + void toDstGammaTables(const uint8_t* tables[3], sk_sp<SkData>* storage, int numTables) const; + +private: + SkColorSpace_XYZ(SkGammaNamed gammaNamed, const SkMatrix44& toXYZ); + + SkColorSpace_XYZ(SkGammaNamed gammaNamed, sk_sp<SkGammas> gammas, + const SkMatrix44& toXYZ, sk_sp<SkData> profileData); + + const SkGammaNamed fGammaNamed; + sk_sp<SkGammas> fGammas; + const SkMatrix44 fToXYZD50; + + mutable SkMatrix44 fFromXYZD50; + mutable SkOnce fFromXYZOnce; + + mutable sk_sp<SkData> fDstStorage; + mutable const uint8_t* fToDstGammaTables[3]; + mutable SkOnce fToDstGammaOnce; + + friend class SkColorSpace; + friend class SkColorSpace_Base; + friend class ColorSpaceXformTest; + typedef SkColorSpace_Base INHERITED; +}; + +#endif |