Add support for 3D colorLUTs to SkColorXform
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2097553002
Review-Url: https://codereview.chromium.org/2097553002
diff --git a/src/core/SkColorSpace_Base.h b/src/core/SkColorSpace_Base.h
index 17e5938..6289b09 100644
--- a/src/core/SkColorSpace_Base.h
+++ b/src/core/SkColorSpace_Base.h
@@ -138,16 +138,18 @@
friend class SkColorSpace;
};
-struct SkColorLookUpTable {
- static const uint8_t kMaxChannels = 16;
-
+struct SkColorLookUpTable : public SkRefCnt {
uint8_t fInputChannels;
uint8_t fOutputChannels;
- uint8_t fGridPoints[kMaxChannels];
+ uint8_t fGridPoints[3];
std::unique_ptr<float[]> fTable;
- SkColorLookUpTable() {
- memset(this, 0, sizeof(struct SkColorLookUpTable));
+ SkColorLookUpTable()
+ : fInputChannels(0)
+ , fOutputChannels(0)
+ , fTable(nullptr)
+ {
+ fGridPoints[0] = fGridPoints[1] = fGridPoints[2] = 0;
}
};
@@ -171,12 +173,12 @@
SkColorSpace_Base(GammaNamed gammaNamed, const SkMatrix44& toXYZ, Named named);
- SkColorSpace_Base(SkColorLookUpTable* colorLUT, sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ,
- sk_sp<SkData> profileData);
+ SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, sk_sp<SkGammas> gammas,
+ const SkMatrix44& toXYZ, sk_sp<SkData> profileData);
- SkAutoTDelete<SkColorLookUpTable> fColorLUT;
- sk_sp<SkGammas> fGammas;
- sk_sp<SkData> fProfileData;
+ sk_sp<SkColorLookUpTable> fColorLUT;
+ sk_sp<SkGammas> fGammas;
+ sk_sp<SkData> fProfileData;
friend class SkColorSpace;
friend class ColorSpaceXformTest;