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