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 |