| Index: src/codec/SkSwizzler.cpp | 
| diff --git a/src/codec/SkSwizzler.cpp b/src/codec/SkSwizzler.cpp | 
| index 915aded1770c340a4e3023336b52ef0a5e0b87b9..4eea8799c55a5b69641e600b465967cfc61c045c 100644 | 
| --- a/src/codec/SkSwizzler.cpp | 
| +++ b/src/codec/SkSwizzler.cpp | 
| @@ -480,89 +480,6 @@ | 
| return COMPUTE_RESULT_ALPHA; | 
| } | 
|  | 
| -// kCMYK | 
| -// | 
| -// CMYK is stored as four bytes per pixel. | 
| -// | 
| -// We will implement a crude conversion from CMYK -> RGB using formulas | 
| -// from easyrgb.com. | 
| -// | 
| -// CMYK -> CMY | 
| -// C = C * (1 - K) + K | 
| -// M = M * (1 - K) + K | 
| -// Y = Y * (1 - K) + K | 
| -// | 
| -// libjpeg actually gives us inverted CMYK, so we must subtract the | 
| -// original terms from 1. | 
| -// CMYK -> CMY | 
| -// C = (1 - C) * (1 - (1 - K)) + (1 - K) | 
| -// M = (1 - M) * (1 - (1 - K)) + (1 - K) | 
| -// Y = (1 - Y) * (1 - (1 - K)) + (1 - K) | 
| -// | 
| -// Simplifying the above expression. | 
| -// CMYK -> CMY | 
| -// C = 1 - CK | 
| -// M = 1 - MK | 
| -// Y = 1 - YK | 
| -// | 
| -// CMY -> RGB | 
| -// R = (1 - C) * 255 | 
| -// G = (1 - M) * 255 | 
| -// B = (1 - Y) * 255 | 
| -// | 
| -// Therefore the full conversion is below.  This can be verified at | 
| -// www.rapidtables.com (assuming inverted CMYK). | 
| -// CMYK -> RGB | 
| -// R = C * K * 255 | 
| -// G = M * K * 255 | 
| -// B = Y * K * 255 | 
| -// | 
| -// As a final note, we have treated the CMYK values as if they were on | 
| -// a scale from 0-1, when in fact they are 8-bit ints scaling from 0-255. | 
| -// We must divide each CMYK component by 255 to obtain the true conversion | 
| -// we should perform. | 
| -// CMYK -> RGB | 
| -// R = C * K / 255 | 
| -// G = M * K / 255 | 
| -// B = Y * K / 255 | 
| -static SkSwizzler::ResultAlpha swizzle_cmyk_to_n32( | 
| -        void* SK_RESTRICT dstRow, const uint8_t* SK_RESTRICT src, int dstWidth, | 
| -        int bpp, int deltaSrc, int offset, const SkPMColor ctable[]) { | 
| - | 
| -    src += offset; | 
| -    SkPMColor* SK_RESTRICT dst = (SkPMColor*)dstRow; | 
| -    for (int x = 0; x < dstWidth; x++) { | 
| -        const uint8_t r = SkMulDiv255Round(src[0], src[3]); | 
| -        const uint8_t g = SkMulDiv255Round(src[1], src[3]); | 
| -        const uint8_t b = SkMulDiv255Round(src[2], src[3]); | 
| - | 
| -        dst[x] = SkPackARGB32NoCheck(0xFF, r, g, b); | 
| -        src += deltaSrc; | 
| -    } | 
| - | 
| -    // CMYK is always opaque | 
| -    return SkSwizzler::kOpaque_ResultAlpha; | 
| -} | 
| - | 
| -static SkSwizzler::ResultAlpha 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[]) { | 
| - | 
| -    src += offset; | 
| -    uint16_t* SK_RESTRICT dst = (uint16_t*)dstRow; | 
| -    for (int x = 0; x < dstWidth; x++) { | 
| -        const uint8_t r = SkMulDiv255Round(src[0], src[3]); | 
| -        const uint8_t g = SkMulDiv255Round(src[1], src[3]); | 
| -        const uint8_t b = SkMulDiv255Round(src[2], src[3]); | 
| - | 
| -        dst[x] = SkPack888ToRGB16(r, g, b); | 
| -        src += deltaSrc; | 
| -    } | 
| - | 
| -    // CMYK is always opaque | 
| -    return SkSwizzler::kOpaque_ResultAlpha; | 
| -} | 
| - | 
| /** | 
| FIXME: This was my idea to cheat in order to continue taking advantage of skipping zeroes. | 
| This would be fine for drawing normally, but not for drawing with transfer modes. Being | 
| @@ -755,18 +672,6 @@ | 
| default: | 
| break; | 
| } | 
| -        case kCMYK: | 
| -            switch (dstInfo.colorType()) { | 
| -                case kN32_SkColorType: | 
| -                    proc = &swizzle_cmyk_to_n32; | 
| -                    break; | 
| -                case kRGB_565_SkColorType: | 
| -                    proc = &swizzle_cmyk_to_565; | 
| -                    break; | 
| -                default: | 
| -                    break; | 
| -            } | 
| -            break; | 
| default: | 
| break; | 
| } | 
|  |