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 |
11 #include "SkColorSpace.h" | 11 #include "SkColorSpace.h" |
12 #include "SkData.h" | 12 #include "SkData.h" |
| 13 #include "SkOnce.h" |
13 #include "SkTemplates.h" | 14 #include "SkTemplates.h" |
14 | 15 |
15 enum SkGammaNamed : uint8_t { | 16 enum SkGammaNamed : uint8_t { |
16 kLinear_SkGammaNamed, | 17 kLinear_SkGammaNamed, |
17 kSRGB_SkGammaNamed, | 18 kSRGB_SkGammaNamed, |
18 k2Dot2Curve_SkGammaNamed, | 19 k2Dot2Curve_SkGammaNamed, |
19 kNonStandard_SkGammaNamed, | 20 kNonStandard_SkGammaNamed, |
20 }; | 21 }; |
21 | 22 |
22 struct SkGammas : SkRefCnt { | 23 struct SkGammas : SkRefCnt { |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 class SkColorSpace_Base : public SkColorSpace { | 182 class SkColorSpace_Base : public SkColorSpace { |
182 public: | 183 public: |
183 | 184 |
184 static sk_sp<SkColorSpace> NewRGB(const float gammas[3], const SkMatrix44& t
oXYZD50); | 185 static sk_sp<SkColorSpace> NewRGB(const float gammas[3], const SkMatrix44& t
oXYZD50); |
185 | 186 |
186 SkGammaNamed gammaNamed() const { return fGammaNamed; } | 187 SkGammaNamed gammaNamed() const { return fGammaNamed; } |
187 const SkGammas* gammas() const { return fGammas.get(); } | 188 const SkGammas* gammas() const { return fGammas.get(); } |
188 | 189 |
189 const SkColorLookUpTable* colorLUT() const { return fColorLUT.get(); } | 190 const SkColorLookUpTable* colorLUT() const { return fColorLUT.get(); } |
190 | 191 |
| 192 const SkMatrix44& fromXYZD50() const; |
| 193 |
191 private: | 194 private: |
192 | 195 |
193 /** | 196 /** |
194 * FIXME (msarett): | 197 * FIXME (msarett): |
195 * Hiding this function until we can determine if we need it. Known issues
include: | 198 * Hiding this function until we can determine if we need it. Known issues
include: |
196 * Only writes 3x3 matrices | 199 * Only writes 3x3 matrices |
197 * Only writes float gammas | 200 * Only writes float gammas |
198 * Rejected by some parsers because the "profile description" is empty | 201 * Rejected by some parsers because the "profile description" is empty |
199 */ | 202 */ |
200 sk_sp<SkData> writeToICC() const; | 203 sk_sp<SkData> writeToICC() const; |
201 | 204 |
202 static sk_sp<SkColorSpace> NewRGB(SkGammaNamed gammaNamed, const SkMatrix44&
toXYZD50); | 205 static sk_sp<SkColorSpace> NewRGB(SkGammaNamed gammaNamed, const SkMatrix44&
toXYZD50); |
203 | 206 |
204 SkColorSpace_Base(SkGammaNamed gammaNamed, const SkMatrix44& toXYZ); | 207 SkColorSpace_Base(SkGammaNamed gammaNamed, const SkMatrix44& toXYZ); |
205 | 208 |
206 SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, SkGammaNamed gammaName
d, | 209 SkColorSpace_Base(sk_sp<SkColorLookUpTable> colorLUT, SkGammaNamed gammaName
d, |
207 sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ, sk_sp<SkD
ata> profileData); | 210 sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ, sk_sp<SkD
ata> profileData); |
208 | 211 |
209 sk_sp<SkColorLookUpTable> fColorLUT; | 212 sk_sp<SkColorLookUpTable> fColorLUT; |
210 const SkGammaNamed fGammaNamed; | 213 const SkGammaNamed fGammaNamed; |
211 sk_sp<SkGammas> fGammas; | 214 sk_sp<SkGammas> fGammas; |
212 sk_sp<SkData> fProfileData; | 215 sk_sp<SkData> fProfileData; |
213 | 216 |
| 217 mutable SkMatrix44 fFromXYZD50; |
| 218 mutable SkOnce fFromXYZOnce; |
| 219 |
214 friend class SkColorSpace; | 220 friend class SkColorSpace; |
215 friend class ColorSpaceXformTest; | 221 friend class ColorSpaceXformTest; |
216 friend class ColorSpaceTest; | 222 friend class ColorSpaceTest; |
217 typedef SkColorSpace INHERITED; | 223 typedef SkColorSpace INHERITED; |
218 }; | 224 }; |
219 | 225 |
220 static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { | 226 static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { |
221 return static_cast<SkColorSpace_Base*>(colorSpace); | 227 return static_cast<SkColorSpace_Base*>(colorSpace); |
222 } | 228 } |
223 | 229 |
224 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { | 230 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { |
225 return static_cast<const SkColorSpace_Base*>(colorSpace); | 231 return static_cast<const SkColorSpace_Base*>(colorSpace); |
226 } | 232 } |
227 | 233 |
228 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { | 234 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { |
229 return static_cast<SkColorSpace_Base*>(colorSpace.get()); | 235 return static_cast<SkColorSpace_Base*>(colorSpace.get()); |
230 } | 236 } |
231 | 237 |
232 #endif | 238 #endif |
OLD | NEW |