| 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 "SkTemplates.h" | 13 #include "SkTemplates.h" |
| 13 | 14 |
| 14 struct SkGammaCurve { | 15 struct SkGammaCurve { |
| 15 bool isValue() const { | 16 bool isValue() const { |
| 16 bool result = (0.0f != fValue); | 17 bool result = (0.0f != fValue); |
| 17 SkASSERT(!result || (0 == fTableSize)); | 18 SkASSERT(!result || (0 == fTableSize)); |
| 18 SkASSERT(!result || (0.0f == fG)); | 19 SkASSERT(!result || (0.0f == fG)); |
| 19 return result; | 20 return result; |
| 20 } | 21 } |
| 21 | 22 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 SkColorLookUpTable() { | 110 SkColorLookUpTable() { |
| 110 memset(this, 0, sizeof(struct SkColorLookUpTable)); | 111 memset(this, 0, sizeof(struct SkColorLookUpTable)); |
| 111 } | 112 } |
| 112 }; | 113 }; |
| 113 | 114 |
| 114 class SkColorSpace_Base : public SkColorSpace { | 115 class SkColorSpace_Base : public SkColorSpace { |
| 115 public: | 116 public: |
| 116 | 117 |
| 117 const sk_sp<SkGammas>& gammas() const { return fGammas; } | 118 const sk_sp<SkGammas>& gammas() const { return fGammas; } |
| 118 | 119 |
| 120 /** |
| 121 * Writes this object as an ICC profile. |
| 122 */ |
| 123 sk_sp<SkData> writeToICC() const; |
| 124 |
| 119 private: | 125 private: |
| 120 | 126 |
| 121 SkColorSpace_Base(sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ, Named); | 127 static sk_sp<SkColorSpace> NewRGB(const float gammas[3], const SkMatrix44& t
oXYZD50, |
| 128 sk_sp<SkData> profileData); |
| 129 |
| 130 SkColorSpace_Base(sk_sp<SkGammas> gammas, const SkMatrix44& toXYZ, Named, |
| 131 sk_sp<SkData> profileData); |
| 122 | 132 |
| 123 SkColorSpace_Base(sk_sp<SkGammas> gammas, GammaNamed gammaNamed, const SkMat
rix44& toXYZ, | 133 SkColorSpace_Base(sk_sp<SkGammas> gammas, GammaNamed gammaNamed, const SkMat
rix44& toXYZ, |
| 124 Named); | 134 Named, sk_sp<SkData> profileData); |
| 125 | 135 |
| 126 SkColorSpace_Base(SkColorLookUpTable* colorLUT, sk_sp<SkGammas> gammas, | 136 SkColorSpace_Base(SkColorLookUpTable* colorLUT, sk_sp<SkGammas> gammas, |
| 127 const SkMatrix44& toXYZ); | 137 const SkMatrix44& toXYZ, sk_sp<SkData> profileData); |
| 128 | 138 |
| 129 SkAutoTDelete<SkColorLookUpTable> fColorLUT; | 139 SkAutoTDelete<SkColorLookUpTable> fColorLUT; |
| 130 sk_sp<SkGammas> fGammas; | 140 sk_sp<SkGammas> fGammas; |
| 141 sk_sp<SkData> fProfileData; |
| 131 | 142 |
| 132 friend class SkColorSpace; | 143 friend class SkColorSpace; |
| 133 typedef SkColorSpace INHERITED; | 144 typedef SkColorSpace INHERITED; |
| 134 }; | 145 }; |
| 135 | 146 |
| 136 static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { | 147 static inline SkColorSpace_Base* as_CSB(SkColorSpace* colorSpace) { |
| 137 return static_cast<SkColorSpace_Base*>(colorSpace); | 148 return static_cast<SkColorSpace_Base*>(colorSpace); |
| 138 } | 149 } |
| 139 | 150 |
| 151 static inline const SkColorSpace_Base* as_CSB(const SkColorSpace* colorSpace) { |
| 152 return static_cast<const SkColorSpace_Base*>(colorSpace); |
| 153 } |
| 154 |
| 140 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { | 155 static inline SkColorSpace_Base* as_CSB(const sk_sp<SkColorSpace>& colorSpace) { |
| 141 return static_cast<SkColorSpace_Base*>(colorSpace.get()); | 156 return static_cast<SkColorSpace_Base*>(colorSpace.get()); |
| 142 } | 157 } |
| 143 | 158 |
| 144 #endif | 159 #endif |
| OLD | NEW |