- add sources.
[platform/framework/web/crosswalk.git] / src / ui / gfx / image / image_unittest_util_ios.mm
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