OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
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 SkColor_DEFINED | 8 #ifndef SkColor_DEFINED |
9 #define SkColor_DEFINED | 9 #define SkColor_DEFINED |
10 | 10 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 /** Return a SkPMColor value from a SkColor value. This is done by multiplying t
he color | 153 /** Return a SkPMColor value from a SkColor value. This is done by multiplying t
he color |
154 components by the color's alpha, and by arranging the bytes in a configurati
on | 154 components by the color's alpha, and by arranging the bytes in a configurati
on |
155 dependent order, to match the format of kARGB32 bitmaps. | 155 dependent order, to match the format of kARGB32 bitmaps. |
156 */ | 156 */ |
157 SK_API SkPMColor SkPreMultiplyColor(SkColor c); | 157 SK_API SkPMColor SkPreMultiplyColor(SkColor c); |
158 | 158 |
159 /** Define a function pointer type for combining two premultiplied colors | 159 /** Define a function pointer type for combining two premultiplied colors |
160 */ | 160 */ |
161 typedef SkPMColor (*SkXfermodeProc)(SkPMColor src, SkPMColor dst); | 161 typedef SkPMColor (*SkXfermodeProc)(SkPMColor src, SkPMColor dst); |
162 | 162 |
163 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | |
164 | |
165 /* | |
166 * The float values are 0...1 premultiplied | |
167 */ | |
168 struct SK_ATTRIBUTE(aligned(16)) SkPM4f { | |
169 float fVec[4]; | |
170 | |
171 float a() const { return fVec[SK_A32_SHIFT/8]; } | |
172 }; | |
173 | |
174 /* | |
175 * The float values are 0...1 unpremultiplied | |
176 */ | |
177 struct SkColor4f { | |
178 float fA; | |
179 float fR; | |
180 float fG; | |
181 float fB; | |
182 | |
183 bool operator==(const SkColor4f& other) const { | |
184 return fA == other.fA && fR == other.fR && fG == other.fG && fB == other
.fB; | |
185 } | |
186 bool operator!=(const SkColor4f& other) const { | |
187 return !(*this == other); | |
188 } | |
189 | |
190 const float* vec() const { return &fA; } | |
191 float* vec() { return &fA; } | |
192 | |
193 static SkColor4f Pin(float a, float r, float g, float b); | |
194 static SkColor4f FromColor(SkColor); | |
195 | |
196 SkColor4f pin() const { | |
197 return Pin(fA, fR, fG, fB); | |
198 } | |
199 | |
200 SkPM4f premul() const; | |
201 }; | |
202 | |
203 #endif | 163 #endif |
OLD | NEW |