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; |
} |