| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef SkColorSpace_Base_DEFINED | 8 #ifndef SkColorSpace_Base_DEFINED |
| 9 #define SkColorSpace_Base_DEFINED | 9 #define SkColorSpace_Base_DEFINED |
| 10 | 10 |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 : fRed(std::move(red)) | 131 : fRed(std::move(red)) |
| 132 , fGreen(std::move(green)) | 132 , fGreen(std::move(green)) |
| 133 , fBlue(std::move(blue)) | 133 , fBlue(std::move(blue)) |
| 134 {} | 134 {} |
| 135 | 135 |
| 136 SkGammas() {} | 136 SkGammas() {} |
| 137 | 137 |
| 138 friend class SkColorSpace; | 138 friend class SkColorSpace; |
| 139 }; | 139 }; |
| 140 | 140 |
| 141 struct SkColorLookUpTable { | 141 struct SkColorLookUpTable : public SkRefCnt { |
| 142 static const uint8_t kMaxChannels = 16; | |
| 143 | |
| 144 uint8_t fInputChannels; | 142 uint8_t fInputChannels; |
| 145 uint8_t fOutputChannels; | 143 uint8_t fOutputChannels; |
| 146 uint8_t fGridPoints[kMaxChannels]; | 144 uint8_t fGridPoints[3]; |
| 147 std::unique_ptr<float[]> fTable; | 145 std::unique_ptr<float[]> fTable; |
| 148 | 146 |
| 149 SkColorLookUpTable() { | 147 SkColorLookUpTable() |
| 150 memset(this, 0, sizeof(struct SkColorLookUpTable)); | 148 : fInputChannels(0) |
| 149 , fOutputChannels(0) |
| 150 , fTable(nullptr) |
| 151 { |
| 152 fGridPoints[0] = fGridPoints[1] = fGridPoints[2] = 0; |
| 151 } | 153 } |
| 152 }; | 154 }; |
| 153 | 155 |
| 154 class SkColorSpace_Base : public SkColorSpace { | 156 class SkColorSpace_Base : public SkColorSpace { |
| 155 public: | 157 public: |
| 156 | 158 |
| 157 static sk_sp<SkColorSpace> NewRGB(float gammas[3], const SkMatrix44& toXYZD5
0); | 159 static sk_sp<SkColorSpace> NewRGB(float gammas[3], const SkMatrix44& toXYZD5
0); |
| 158 | 160 |
| 159 const SkGammas* gammas() const { return fGammas.get(); } | 161 const SkGammas* gammas() const { return fGammas.get(); } |
| 160 | 162 |
| 161 const SkColorLookUpTable* colorLUT() const { return fColorLUT.get(); } | 163 const SkColorLookUpTable* colorLUT() const { return fColorLUT.get(); } |
| 162 | 164 |
| 163 /** | 165 /** |
| 164 * Writes this object as an ICC profile. | 166 * Writes this object as an ICC profile. |
| 165 */ | 167 */ |
| 166 sk_sp<SkData> writeToICC() const; | 168 sk_sp<SkData> writeToICC() const; |
| 167 | 169 |
| 168 private: | 170 private: |
| 169 | 171 |
| 170 static sk_sp<SkColorSpace> NewRGB(GammaNamed gammaNamed, const SkMatrix44& t
oXYZD50); | 172 static sk_sp<SkColorSpace> NewRGB(GammaNamed gammaNamed, const SkMatrix44& t
oXYZD50); |
| 171 | 173 |
| 172 SkColorSpace_Base(GammaNamed gammaNamed, const SkMatrix44& toXYZ, Named name
d); | 174 SkColorSpace_Base(GammaNamed gammaNamed, const SkMatrix44& toXYZ, Named name
d); |
| 173 | 175 |
| 174 SkColorSpace_Base(SkColorLookUpTable* colorLUT, sk_sp<SkGammas> gammas, cons
t SkMatrix44& toXYZ, | 176 SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, sk_sp<SkGammas> gammas
, |
| 175 sk_sp<SkData> profileData); | 177 const SkMatrix44& toXYZ, sk_sp<SkData> profileData); |
| 176 | 178 |
| 177 SkAutoTDelete<SkColorLookUpTable> fColorLUT; | 179 sk_sp<SkColorLookUpTable> fColorLUT; |
| 178 sk_sp<SkGammas> fGammas; | 180 sk_sp<SkGammas> fGammas; |
| 179 sk_sp<SkData> fProfileData; | 181 sk_sp<SkData> fProfileData; |
| 180 | 182 |
| 181 friend class SkColorSpace; | 183 friend class SkColorSpace; |
| 182 friend class ColorSpaceXformTest; | 184 friend class ColorSpaceXformTest; |
| 183 typedef SkColorSpace INHERITED; | 185 typedef SkColorSpace INHERITED; |
| 184 }; | 186 }; |
| 185 | 187 |
| 186 static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { | 188 static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { |
| 187 return static_cast<SkColorSpace_Base*>(colorSpace); | 189 return static_cast<SkColorSpace_Base*>(colorSpace); |
| 188 } | 190 } |
| 189 | 191 |
| 190 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { | 192 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { |
| 191 return static_cast<const SkColorSpace_Base*>(colorSpace); | 193 return static_cast<const SkColorSpace_Base*>(colorSpace); |
| 192 } | 194 } |
| 193 | 195 |
| 194 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { | 196 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { |
| 195 return static_cast<SkColorSpace_Base*>(colorSpace.get()); | 197 return static_cast<SkColorSpace_Base*>(colorSpace.get()); |
| 196 } | 198 } |
| 197 | 199 |
| 198 #endif | 200 #endif |
| OLD | NEW |