From: reed@google.com Date: Wed, 7 Nov 2012 22:06:55 +0000 (+0000) Subject: check to see if CGImage already knows if we're opaque X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~14355 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=52e91bf56444f3ac4378feac7a42a157b9afaf9c;p=platform%2Fupstream%2FlibSkiaSharp.git check to see if CGImage already knows if we're opaque Review URL: https://codereview.appspot.com/6838043 git-svn-id: http://skia.googlecode.com/svn/trunk@6340 2bbb7eff-a529-9590-31e7-b0007b416f81 --- diff --git a/src/ports/SkImageDecoder_CG.cpp b/src/ports/SkImageDecoder_CG.cpp index ba7a89c..c1b63ea 100644 --- a/src/ports/SkImageDecoder_CG.cpp +++ b/src/ports/SkImageDecoder_CG.cpp @@ -87,8 +87,18 @@ bool SkImageDecoder_CG::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) { CGContextDrawImage(cg, CGRectMake(0, 0, width, height), image); CGContextRelease(cg); - // since CGImage won't tell us if it is opaque, we have to compute it. - bm->computeAndSetOpaquePredicate(); + CGImageAlphaInfo info = CGImageGetAlphaInfo(image); + switch (info) { + case kCGImageAlphaNone: + case kCGImageAlphaNoneSkipLast: + case kCGImageAlphaNoneSkipFirst: + SkASSERT(SkBitmap::ComputeIsOpaque(*bm)); + bm->setIsOpaque(true); + break; + default: + // we don't know if we're opaque or not, so compute it. + bm->computeAndSetOpaquePredicate(); + } bm->unlockPixels(); return true; }