| Index: ui/gfx/image/image_ios.mm
|
| diff --git a/ui/gfx/image/image_ios.mm b/ui/gfx/image/image_ios.mm
|
| deleted file mode 100644
|
| index 126bfb491aa93b3d34b386efa6776456ca2ac1e0..0000000000000000000000000000000000000000
|
| --- a/ui/gfx/image/image_ios.mm
|
| +++ /dev/null
|
| @@ -1,134 +0,0 @@
|
| -// Copyright 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ui/gfx/image/image.h"
|
| -
|
| -#import <UIKit/UIKit.h>
|
| -#include <cmath>
|
| -#include <limits>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/mac/scoped_cftyperef.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| -#include "ui/gfx/image/image_png_rep.h"
|
| -#include "ui/gfx/image/image_skia.h"
|
| -#include "ui/gfx/image/image_skia_util_ios.h"
|
| -#include "ui/gfx/size.h"
|
| -
|
| -namespace gfx {
|
| -namespace internal {
|
| -
|
| -namespace {
|
| -
|
| -// Returns a 16x16 red UIImage to visually show when a UIImage cannot be
|
| -// created from PNG data. Logs error as well.
|
| -// Caller takes ownership of returned UIImage.
|
| -UIImage* CreateErrorUIImage(float scale) {
|
| - LOG(ERROR) << "Unable to decode PNG into UIImage.";
|
| - base::ScopedCFTypeRef<CGColorSpaceRef> color_space(
|
| - CGColorSpaceCreateDeviceRGB());
|
| - base::ScopedCFTypeRef<CGContextRef> context(CGBitmapContextCreate(
|
| - NULL, // Allow CG to allocate memory.
|
| - 16, // width
|
| - 16, // height
|
| - 8, // bitsPerComponent
|
| - 0, // CG will calculate by default.
|
| - color_space,
|
| - kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host));
|
| - CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
|
| - CGContextFillRect(context, CGRectMake(0.0, 0.0, 16, 16));
|
| - base::ScopedCFTypeRef<CGImageRef> cg_image(
|
| - CGBitmapContextCreateImage(context));
|
| - return [[UIImage imageWithCGImage:cg_image.get()
|
| - scale:scale
|
| - orientation:UIImageOrientationUp] retain];
|
| -}
|
| -
|
| -// Converts from ImagePNGRep to UIImage.
|
| -UIImage* CreateUIImageFromImagePNGRep(const gfx::ImagePNGRep& image_png_rep) {
|
| - float scale = image_png_rep.scale;
|
| - scoped_refptr<base::RefCountedMemory> png = image_png_rep.raw_data;
|
| - CHECK(png.get());
|
| - NSData* data = [NSData dataWithBytes:png->front() length:png->size()];
|
| - UIImage* image = [[UIImage alloc] initWithData:data scale:scale];
|
| - return image ? image : CreateErrorUIImage(scale);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromUIImage(
|
| - UIImage* uiimage) {
|
| - NSData* data = UIImagePNGRepresentation(uiimage);
|
| -
|
| - if ([data length] == 0)
|
| - return NULL;
|
| -
|
| - scoped_refptr<base::RefCountedBytes> png_bytes(
|
| - new base::RefCountedBytes());
|
| - png_bytes->data().resize([data length]);
|
| - [data getBytes:&png_bytes->data().at(0) length:[data length]];
|
| - return png_bytes;
|
| -}
|
| -
|
| -UIImage* CreateUIImageFromPNG(
|
| - const std::vector<gfx::ImagePNGRep>& image_png_reps) {
|
| - float ideal_scale = ImageSkia::GetMaxSupportedScale();
|
| -
|
| - if (image_png_reps.empty())
|
| - return CreateErrorUIImage(ideal_scale);
|
| -
|
| - // Find best match for |ideal_scale|.
|
| - float smallest_diff = std::numeric_limits<float>::max();
|
| - size_t closest_index = 0u;
|
| - for (size_t i = 0; i < image_png_reps.size(); ++i) {
|
| - float scale = image_png_reps[i].scale;
|
| - float diff = std::abs(ideal_scale - scale);
|
| - if (diff < smallest_diff) {
|
| - smallest_diff = diff;
|
| - closest_index = i;
|
| - }
|
| - }
|
| -
|
| - return CreateUIImageFromImagePNGRep(image_png_reps[closest_index]);
|
| -}
|
| -
|
| -scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromImageSkia(
|
| - const ImageSkia* skia) {
|
| - // iOS does not expose libpng, so conversion from ImageSkia to PNG must go
|
| - // through UIImage.
|
| - // TODO(rohitrao): Rewrite the callers of this function to save the UIImage
|
| - // representation in the gfx::Image. If we're generating it, we might as well
|
| - // hold on to it.
|
| - const gfx::ImageSkiaRep& image_skia_rep = skia->GetRepresentation(1.0f);
|
| - if (image_skia_rep.scale() != 1.0f)
|
| - return NULL;
|
| -
|
| - UIImage* image = UIImageFromImageSkiaRep(image_skia_rep);
|
| - return Get1xPNGBytesFromUIImage(image);
|
| -}
|
| -
|
| -ImageSkia* ImageSkiaFromPNG(
|
| - const std::vector<gfx::ImagePNGRep>& image_png_reps) {
|
| - // iOS does not expose libpng, so conversion from PNG to ImageSkia must go
|
| - // through UIImage.
|
| - gfx::ImageSkia* image_skia = new gfx::ImageSkia();
|
| - for (size_t i = 0; i < image_png_reps.size(); ++i) {
|
| - base::scoped_nsobject<UIImage> uiimage(
|
| - CreateUIImageFromImagePNGRep(image_png_reps[i]));
|
| - gfx::ImageSkiaRep image_skia_rep = ImageSkiaRepOfScaleFromUIImage(
|
| - uiimage, image_png_reps[i].scale);
|
| - if (!image_skia_rep.is_null())
|
| - image_skia->AddRepresentation(image_skia_rep);
|
| - }
|
| - return image_skia;
|
| -}
|
| -
|
| -gfx::Size UIImageSize(UIImage* image) {
|
| - int width = static_cast<int>(image.size.width);
|
| - int height = static_cast<int>(image.size.height);
|
| - return gfx::Size(width, height);
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace gfx
|
|
|