From f781b4cbb2cf418b125bb184a529d20364284acd Mon Sep 17 00:00:00 2001 From: Adlai Holler Date: Wed, 3 Apr 2019 20:21:39 -0700 Subject: [PATCH] Revert "Have image nodes draw into opaque contexts automatically if possible (#1432)" This reverts commit 28522ce9778581bfd217c0f1baf72ddf70f03916. --- Source/ASImageNode.mm | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/Source/ASImageNode.mm b/Source/ASImageNode.mm index 27e8e05f2..063617b5a 100644 --- a/Source/ASImageNode.mm +++ b/Source/ASImageNode.mm @@ -473,17 +473,9 @@ + (UIImage *)createContentsForkey:(ASImageNodeContentsKey *)key drawParameters:( return nil; } - // If the image is opaque, and the draw rect contains the bounds rect, we can use an opaque context. - UIImage *image = key.image; - const CGRect imageDrawRect = key.imageDrawRect; - const CGRect contextBounds = { CGPointZero, key.backingSize }; - const BOOL imageIsOpaque = ASImageAlphaInfoIsOpaque(CGImageGetAlphaInfo(image.CGImage)); - const BOOL imageFillsContext = CGRectContainsRect(imageDrawRect, contextBounds); - const BOOL contextIsOpaque = (imageIsOpaque && imageFillsContext) || key.isOpaque; - // Use contentsScale of 1.0 and do the contentsScale handling in boundsSizeInPixels so ASCroppedImageBackingSizeAndDrawRectInBounds // will do its rounding on pixel instead of point boundaries - ASGraphicsBeginImageContextWithOptions(contextBounds.size, contextIsOpaque, 1.0); + ASGraphicsBeginImageContextWithOptions(key.backingSize, key.isOpaque, 1.0); BOOL contextIsClean = YES; @@ -511,12 +503,13 @@ + (UIImage *)createContentsForkey:(ASImageNodeContentsKey *)key drawParameters:( // upon removal of the object from the set when the operation completes. // Another option is to have ASDisplayNode+AsyncDisplay coordinate these cases, and share the decoded buffer. // Details tracked in https://github.com/facebook/AsyncDisplayKit/issues/1068 - - BOOL canUseCopy = (contextIsClean || imageIsOpaque); + + UIImage *image = key.image; + BOOL canUseCopy = (contextIsClean || ASImageAlphaInfoIsOpaque(CGImageGetAlphaInfo(image.CGImage))); CGBlendMode blendMode = canUseCopy ? kCGBlendModeCopy : kCGBlendModeNormal; @synchronized(image) { - [image drawInRect:imageDrawRect blendMode:blendMode alpha:1]; + [image drawInRect:key.imageDrawRect blendMode:blendMode alpha:1]; } if (context && key.didDisplayNodeContentWithRenderingContext) {