1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #import <CoreGraphics/CoreGraphics.h> 6 #import <UIKit/UIKit.h> 7 8 #include "base/mac/scoped_cftyperef.h" 9 #include "skia/ext/skia_utils_ios.h" 10 #include "ui/gfx/image/image_unittest_util.h" 11 12 namespace gfx { 13 namespace test { 14 15 SkColor GetPlatformImageColor(PlatformImage image, int x, int y) { 16 // Start by extracting the target pixel into a 1x1 CGImage. 17 base::ScopedCFTypeRef<CGImageRef> pixel_image( 18 CGImageCreateWithImageInRect(image.CGImage, CGRectMake(x, y, 1, 1))); 19 20 // Draw that pixel into a 1x1 bitmap context. 21 base::ScopedCFTypeRef<CGColorSpaceRef> color_space( 22 CGColorSpaceCreateDeviceRGB()); 23 base::ScopedCFTypeRef<CGContextRef> bitmap_context(CGBitmapContextCreate( 24 /*data=*/ NULL, 25 /*width=*/ 1, 26 /*height=*/ 1, 27 /*bitsPerComponent=*/ 8, 28 /*bytesPerRow=*/ 4, 29 color_space, 30 kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host)); 31 CGContextDrawImage(bitmap_context, CGRectMake(0, 0, 1, 1), pixel_image); 32 33 // The CGBitmapContext has the same memory layout as SkColor, so we can just 34 // read an SkColor straight out of the context. 35 SkColor* data = 36 reinterpret_cast<SkColor*>(CGBitmapContextGetData(bitmap_context)); 37 return *data; 38 } 39 40 } // namespace test 41 } // namespace gfx 42