| Index: src/codec/SkSwizzler.cpp
|
| diff --git a/src/codec/SkSwizzler.cpp b/src/codec/SkSwizzler.cpp
|
| index debcd45c207048b5e96279a7ed5001e0695628cb..f9f212072e53e4bb2565e87aadb6fdff0213c1e6 100644
|
| --- a/src/codec/SkSwizzler.cpp
|
| +++ b/src/codec/SkSwizzler.cpp
|
| @@ -592,6 +592,21 @@ static void swizzle_cmyk_to_n32(
|
| }
|
| }
|
|
|
| +static void fast_swizzle_cmyk_to_n32(
|
| + void* dst, const uint8_t* src, int width, int bpp, int deltaSrc, int offset,
|
| + const SkPMColor ctable[]) {
|
| +
|
| + // This function must not be called if we are sampling. If we are not
|
| + // sampling, deltaSrc should equal bpp.
|
| + SkASSERT(deltaSrc == bpp);
|
| +
|
| +#ifdef SK_PMCOLOR_IS_RGBA
|
| + SkOpts::inverted_CMYK_to_RGB1((uint32_t*) dst, src + offset, width);
|
| +#else
|
| + SkOpts::inverted_CMYK_to_BGR1((uint32_t*) dst, src + offset, width);
|
| +#endif
|
| +}
|
| +
|
| static void swizzle_cmyk_to_565(
|
| void* SK_RESTRICT dstRow, const uint8_t* SK_RESTRICT src, int dstWidth,
|
| int bpp, int deltaSrc, int offset, const SkPMColor ctable[]) {
|
| @@ -811,6 +826,7 @@ SkSwizzler* SkSwizzler::CreateSwizzler(SkSwizzler::SrcConfig sc,
|
| break;
|
| case kRGB_565_SkColorType:
|
| proc = &swizzle_rgb_to_565;
|
| + break;
|
| default:
|
| break;
|
| }
|
| @@ -844,6 +860,7 @@ SkSwizzler* SkSwizzler::CreateSwizzler(SkSwizzler::SrcConfig sc,
|
| switch (dstInfo.colorType()) {
|
| case kN32_SkColorType:
|
| proc = &swizzle_cmyk_to_n32;
|
| + fastProc = &fast_swizzle_cmyk_to_n32;
|
| break;
|
| case kRGB_565_SkColorType:
|
| proc = &swizzle_cmyk_to_565;
|
|
|