diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-01-05 15:49:43 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-01-05 15:49:43 +0000 |
commit | 62f465940d57139dfd83e2aef67081017a232417 (patch) | |
tree | 9beabfd256193b0a4ab694eb4ac265ecc942ad37 /src/utils/mac | |
parent | 4f809514799ef2e160b4f03944e0fb6d278f7547 (diff) |
rev. 637 changed the settings for premultiplied on the info parameter. This
change incorrectly assumed that all cases wanted premultipled-last, which was
incorrect.
Reverting to the previous values.
git-svn-id: http://skia.googlecode.com/svn/trunk@673 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/utils/mac')
-rw-r--r-- | src/utils/mac/SkCreateCGImageRef.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/utils/mac/SkCreateCGImageRef.cpp b/src/utils/mac/SkCreateCGImageRef.cpp index dea443c13c..a1d7cc4eef 100644 --- a/src/utils/mac/SkCreateCGImageRef.cpp +++ b/src/utils/mac/SkCreateCGImageRef.cpp @@ -24,19 +24,19 @@ static SkBitmap* prepareForImageRef(const SkBitmap& bm, *bitsPerComponent = 8; #if defined(SK_CPU_LENDIAN) && HAS_ARGB_SHIFTS(24, 0, 8, 16) \ || defined(SK_CPU_BENDIAN) && HAS_ARGB_SHIFTS(0, 24, 16, 8) - *info = kCGBitmapByteOrder32Big; + *info = kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast; #elif defined(SK_CPU_LENDIAN) && HAS_ARGB_SHIFTS(24, 16, 8, 0) \ || defined(SK_CPU_BENDIAN) && HAS_ARGB_SHIFTS(24, 16, 8, 0) // Matches the CGBitmapInfo that Apple recommends for best // performance, used by google chrome. - *info = kCGBitmapByteOrder32Little; + *info = kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst; #else // ...add more formats as required... #warning Cannot convert SkBitmap to CGImageRef with these shiftmasks. \ This will probably not work. // Legacy behavior. Perhaps turn this into an error at some // point. - *info = kCGBitmapByteOrder32Big; + *info = kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast; #endif break; #if 0 @@ -54,10 +54,6 @@ static SkBitmap* prepareForImageRef(const SkBitmap& bm, return NULL; } - if (!bm.isOpaque()) { - *info |= kCGImageAlphaPremultipliedLast; - } - SkBitmap* copy; if (upscaleTo32) { copy = new SkBitmap; @@ -116,15 +112,15 @@ void SkCGDrawBitmap(CGContextRef cg, const SkBitmap& bm, float x, float y) { if (img) { CGRect r = CGRectMake(0, 0, bm.width(), bm.height()); - + CGContextSaveGState(cg); CGContextTranslateCTM(cg, x, r.size.height + y); CGContextScaleCTM(cg, 1, -1); - + CGContextDrawImage(cg, r, img); - + CGContextRestoreGState(cg); - + CGImageRelease(img); } } |