diff options
Diffstat (limited to 'src/core/SkColorSpaceXform_Base.h')
-rw-r--r-- | src/core/SkColorSpaceXform_Base.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/core/SkColorSpaceXform_Base.h b/src/core/SkColorSpaceXform_Base.h index e20857324d..48035c506b 100644 --- a/src/core/SkColorSpaceXform_Base.h +++ b/src/core/SkColorSpaceXform_Base.h @@ -34,6 +34,7 @@ private: enum SrcGamma { kLinear_SrcGamma, kTable_SrcGamma, + kSRGB_SrcGamma, }; enum DstGamma { @@ -49,7 +50,7 @@ enum ColorSpaceMatch { kFull_ColorSpaceMatch, }; -template <SrcGamma kSrc, DstGamma kDst, ColorSpaceMatch kCSM> +template <ColorSpaceMatch kCSM> class SkColorSpaceXform_XYZ : public SkColorSpaceXform_Base { protected: bool onApply(ColorFormat dstFormat, void* dst, ColorFormat srcFormat, const void* src, @@ -63,23 +64,26 @@ private: SkColorSpace_XYZ* dstSpace); // Contain pointers into storage or pointers into precomputed tables. - const float* fSrcGammaTables[3]; - SkAutoTMalloc<float> fSrcStorage; - const uint8_t* fDstGammaTables[3]; - sk_sp<SkData> fDstStorage; + const float* fSrcGammaTables[3]; + SkAutoTMalloc<float> fSrcStorage; + const uint8_t* fDstGammaTables[3]; + sk_sp<SkData> fDstStorage; // Holds a 3x4 matrix. Padding is useful for vector loading. - float fSrcToDst[13]; + float fSrcToDst[13]; + + SrcGamma fSrcGamma; + DstGamma fDstGamma; friend class SkColorSpaceXform; friend std::unique_ptr<SkColorSpaceXform> SlowIdentityXform(SkColorSpace_XYZ* space); }; struct LoadTablesContext { - const uint32_t* fSrc; - const float* fR; - const float* fG; - const float* fB; + const void* fSrc; + const float* fR; + const float* fG; + const float* fB; }; struct StoreTablesContext { |