| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #ifndef SkColorPriv_DEFINED | 10 #ifndef SkColorPriv_DEFINED |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 */ | 264 */ |
| 265 static inline SkPMColor SkFourByteInterp(SkPMColor src, SkPMColor dst, | 265 static inline SkPMColor SkFourByteInterp(SkPMColor src, SkPMColor dst, |
| 266 U8CPU srcWeight) { | 266 U8CPU srcWeight) { |
| 267 unsigned scale = SkAlpha255To256(srcWeight); | 267 unsigned scale = SkAlpha255To256(srcWeight); |
| 268 return SkFourByteInterp256(src, dst, scale); | 268 return SkFourByteInterp256(src, dst, scale); |
| 269 } | 269 } |
| 270 | 270 |
| 271 /** | 271 /** |
| 272 * 0xAARRGGBB -> 0x00AA00GG, 0x00RR00BB | 272 * 0xAARRGGBB -> 0x00AA00GG, 0x00RR00BB |
| 273 */ | 273 */ |
| 274 static inline void SkSplay(SkPMColor color, uint32_t* ag, uint32_t* rb) { | 274 static inline void SkSplay(uint32_t color, uint32_t* ag, uint32_t* rb) { |
| 275 const uint32_t mask = 0x00FF00FF; | 275 const uint32_t mask = 0x00FF00FF; |
| 276 *ag = (color >> 8) & mask; | 276 *ag = (color >> 8) & mask; |
| 277 *rb = color & mask; | 277 *rb = color & mask; |
| 278 } | 278 } |
| 279 | 279 |
| 280 /** | 280 /** |
| 281 * 0xAARRGGBB -> 0x00AA00GG00RR00BB | 281 * 0xAARRGGBB -> 0x00AA00GG00RR00BB |
| 282 * (note, ARGB -> AGRB) | 282 * (note, ARGB -> AGRB) |
| 283 */ | 283 */ |
| 284 static inline uint64_t SkSplay(SkPMColor color) { | 284 static inline uint64_t SkSplay(uint32_t color) { |
| 285 const uint32_t mask = 0x00FF00FF; | 285 const uint32_t mask = 0x00FF00FF; |
| 286 uint64_t agrb = (color >> 8) & mask; // 0x0000000000AA00GG | 286 uint64_t agrb = (color >> 8) & mask; // 0x0000000000AA00GG |
| 287 agrb <<= 32; // 0x00AA00GG00000000 | 287 agrb <<= 32; // 0x00AA00GG00000000 |
| 288 agrb |= color & mask; // 0x00AA00GG00RR00BB | 288 agrb |= color & mask; // 0x00AA00GG00RR00BB |
| 289 return agrb; | 289 return agrb; |
| 290 } | 290 } |
| 291 | 291 |
| 292 /** | 292 /** |
| 293 * 0xAAxxGGxx, 0xRRxxBBxx-> 0xAARRGGBB | 293 * 0xAAxxGGxx, 0xRRxxBBxx-> 0xAARRGGBB |
| 294 */ | 294 */ |
| 295 static inline SkPMColor SkUnsplay(uint32_t ag, uint32_t rb) { | 295 static inline uint32_t SkUnsplay(uint32_t ag, uint32_t rb) { |
| 296 const uint32_t mask = 0xFF00FF00; | 296 const uint32_t mask = 0xFF00FF00; |
| 297 return (ag & mask) | ((rb & mask) >> 8); | 297 return (ag & mask) | ((rb & mask) >> 8); |
| 298 } | 298 } |
| 299 | 299 |
| 300 /** | 300 /** |
| 301 * 0xAAxxGGxxRRxxBBxx -> 0xAARRGGBB | 301 * 0xAAxxGGxxRRxxBBxx -> 0xAARRGGBB |
| 302 * (note, AGRB -> ARGB) | 302 * (note, AGRB -> ARGB) |
| 303 */ | 303 */ |
| 304 static inline SkPMColor SkUnsplay(uint64_t agrb) { | 304 static inline uint32_t SkUnsplay(uint64_t agrb) { |
| 305 const uint32_t mask = 0xFF00FF00; | 305 const uint32_t mask = 0xFF00FF00; |
| 306 return SkPMColor( | 306 return SkPMColor( |
| 307 ((agrb & mask) >> 8) | // 0x00RR00BB | 307 ((agrb & mask) >> 8) | // 0x00RR00BB |
| 308 ((agrb >> 32) & mask)); // 0xAARRGGBB | 308 ((agrb >> 32) & mask)); // 0xAARRGGBB |
| 309 } | 309 } |
| 310 | 310 |
| 311 static inline SkPMColor SkFastFourByteInterp256_32(SkPMColor src, SkPMColor dst,
unsigned scale) { | 311 static inline SkPMColor SkFastFourByteInterp256_32(SkPMColor src, SkPMColor dst,
unsigned scale) { |
| 312 SkASSERT(scale <= 256); | 312 SkASSERT(scale <= 256); |
| 313 | 313 |
| 314 // Two 8-bit blends per two 32-bit registers, with space to make sure the ma
th doesn't collide. | 314 // Two 8-bit blends per two 32-bit registers, with space to make sure the ma
th doesn't collide. |
| (...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 int srcG = SkColorGetG(src); | 907 int srcG = SkColorGetG(src); |
| 908 int srcB = SkColorGetB(src); | 908 int srcB = SkColorGetB(src); |
| 909 | 909 |
| 910 for (int i = 0; i < width; i++) { | 910 for (int i = 0; i < width; i++) { |
| 911 dst[i] = SkBlendLCD16Opaque(srcR, srcG, srcB, dst[i], mask[i], | 911 dst[i] = SkBlendLCD16Opaque(srcR, srcG, srcB, dst[i], mask[i], |
| 912 opaqueDst); | 912 opaqueDst); |
| 913 } | 913 } |
| 914 } | 914 } |
| 915 | 915 |
| 916 #endif | 916 #endif |
| OLD | NEW |