From 91c9e38e13d78d75e2454bf5f4f043a7c7b8969e Mon Sep 17 00:00:00 2001 From: Mallory Paine Date: Fri, 25 Oct 2013 12:46:12 -0700 Subject: [PATCH] Bring back support for 32-bit opaque images. Using an opaque image format allows Core Animation to skip blending the layer, which improves rendering performance. --- FastImageCache/FICImageFormat.h | 1 + FastImageCache/FICImageFormat.m | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/FastImageCache/FICImageFormat.h b/FastImageCache/FICImageFormat.h index 480529c..885cb67 100644 --- a/FastImageCache/FICImageFormat.h +++ b/FastImageCache/FICImageFormat.h @@ -24,6 +24,7 @@ typedef NS_OPTIONS(NSUInteger, FICImageFormatDevices) { typedef NS_OPTIONS(NSUInteger, FICImageFormatStyle) { FICImageFormatStyle32BitBGRA, + FICImageFormatStyle32BitBGR, FICImageFormatStyle16BitBGR, FICImageFormatStyle8BitGrayscale, }; diff --git a/FastImageCache/FICImageFormat.m b/FastImageCache/FICImageFormat.m index 11ac189..d33b41b 100644 --- a/FastImageCache/FICImageFormat.m +++ b/FastImageCache/FICImageFormat.m @@ -64,6 +64,9 @@ - (CGBitmapInfo)bitmapInfo { case FICImageFormatStyle32BitBGRA: info = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host; break; + case FICImageFormatStyle32BitBGR: + info = kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host; + break; case FICImageFormatStyle16BitBGR: info = kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder16Host; break; @@ -78,6 +81,7 @@ - (NSInteger)bytesPerPixel { NSInteger bytesPerPixel; switch (_style) { case FICImageFormatStyle32BitBGRA: + case FICImageFormatStyle32BitBGR: bytesPerPixel = 4; break; case FICImageFormatStyle16BitBGR: @@ -94,6 +98,7 @@ - (NSInteger)bitsPerComponent { NSInteger bitsPerComponent; switch (_style) { case FICImageFormatStyle32BitBGRA: + case FICImageFormatStyle32BitBGR: case FICImageFormatStyle8BitGrayscale: bitsPerComponent = 8; break; @@ -108,6 +113,7 @@ - (BOOL)isGrayscale { BOOL isGrayscale; switch (_style) { case FICImageFormatStyle32BitBGRA: + case FICImageFormatStyle32BitBGR: case FICImageFormatStyle16BitBGR: isGrayscale = NO; break;