aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpaceXform_Base.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkColorSpaceXform_Base.h')
-rw-r--r--src/core/SkColorSpaceXform_Base.h24
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 {