| 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 SkPM4fPriv_DEFINED | 8 #ifndef SkPM4fPriv_DEFINED |
| 9 #define SkPM4fPriv_DEFINED | 9 #define SkPM4fPriv_DEFINED |
| 10 | 10 |
| 11 #include "SkColorPriv.h" | 11 #include "SkColorPriv.h" |
| 12 #include "SkPM4f.h" | 12 #include "SkPM4f.h" |
| 13 | 13 |
| 14 extern bool gTreatSkColorAsSRGB; | |
| 15 | |
| 16 static inline float get_alpha(const Sk4f& f4) { | 14 static inline float get_alpha(const Sk4f& f4) { |
| 17 return f4[SkPM4f::A]; | 15 return f4[SkPM4f::A]; |
| 18 } | 16 } |
| 19 | 17 |
| 20 static inline Sk4f set_alpha(const Sk4f& f4, float alpha) { | 18 static inline Sk4f set_alpha(const Sk4f& f4, float alpha) { |
| 21 static_assert(3 == SkPM4f::A, ""); | 19 static_assert(3 == SkPM4f::A, ""); |
| 22 return Sk4f(f4[0], f4[1], f4[2], alpha); | 20 return Sk4f(f4[0], f4[1], f4[2], alpha); |
| 23 } | 21 } |
| 24 | 22 |
| 25 static inline uint32_t to_4b(const Sk4f& f4) { | 23 static inline uint32_t to_4b(const Sk4f& f4) { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 } | 99 } |
| 102 | 100 |
| 103 static inline Sk4f Sk4f_fromS32(uint32_t src) { | 101 static inline Sk4f Sk4f_fromS32(uint32_t src) { |
| 104 return srgb_to_linear(to_4f(src) * Sk4f(1.0f/255)); | 102 return srgb_to_linear(to_4f(src) * Sk4f(1.0f/255)); |
| 105 } | 103 } |
| 106 | 104 |
| 107 // Color handling: | 105 // Color handling: |
| 108 // SkColor has an ordering of (b, g, r, a) if cast to an Sk4f, so the code swi
zzles r and b to | 106 // SkColor has an ordering of (b, g, r, a) if cast to an Sk4f, so the code swi
zzles r and b to |
| 109 // produce the needed (r, g, b, a) ordering. | 107 // produce the needed (r, g, b, a) ordering. |
| 110 static inline Sk4f Sk4f_from_SkColor(SkColor color) { | 108 static inline Sk4f Sk4f_from_SkColor(SkColor color) { |
| 111 return swizzle_rb(gTreatSkColorAsSRGB ? Sk4f_fromS32(color) : Sk4f_fromL32(c
olor)); | 109 return swizzle_rb(Sk4f_fromS32(color)); |
| 112 } | 110 } |
| 113 | 111 |
| 114 static inline uint32_t Sk4f_toL32(const Sk4f& x4) { | 112 static inline uint32_t Sk4f_toL32(const Sk4f& x4) { |
| 115 return to_4b(x4 * Sk4f(255) + Sk4f(0.5f)); | 113 return to_4b(x4 * Sk4f(255) + Sk4f(0.5f)); |
| 116 } | 114 } |
| 117 | 115 |
| 118 static inline uint32_t Sk4f_toS32(const Sk4f& x4) { | 116 static inline uint32_t Sk4f_toS32(const Sk4f& x4) { |
| 119 return to_4b(linear_to_srgb(x4) * Sk4f(255) + Sk4f(0.5f)); | 117 return to_4b(linear_to_srgb(x4) * Sk4f(255) + Sk4f(0.5f)); |
| 120 } | 118 } |
| 121 | 119 |
| 122 static inline Sk4f exact_Sk4f_fromS32(uint32_t src) { | 120 static inline Sk4f exact_Sk4f_fromS32(uint32_t src) { |
| 123 return exact_srgb_to_linear(to_4f(src) * Sk4f(1.0f/255)); | 121 return exact_srgb_to_linear(to_4f(src) * Sk4f(1.0f/255)); |
| 124 } | 122 } |
| 125 static inline uint32_t exact_Sk4f_toS32(const Sk4f& x4) { | 123 static inline uint32_t exact_Sk4f_toS32(const Sk4f& x4) { |
| 126 return to_4b(exact_linear_to_srgb(x4) * Sk4f(255) + Sk4f(0.5f)); | 124 return to_4b(exact_linear_to_srgb(x4) * Sk4f(255) + Sk4f(0.5f)); |
| 127 } | 125 } |
| 128 | 126 |
| 129 #endif | 127 #endif |
| OLD | NEW |