Chromium Code Reviews| Index: ui/gfx/image/image_mac.mm |
| diff --git a/ui/gfx/image/image_mac.mm b/ui/gfx/image/image_mac.mm |
| index 55b4aa4338d23413207c2b66a1da26f1806cac60..68b5a44627df6380e2f326c711fe4f907d1881a2 100644 |
| --- a/ui/gfx/image/image_mac.mm |
| +++ b/ui/gfx/image/image_mac.mm |
| @@ -3,24 +3,44 @@ |
| // found in the LICENSE file. |
| #import <AppKit/AppKit.h> |
| +#import <vector> |
| +#include "base/memory/scoped_nsobject.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "skia/ext/skia_utils_mac.h" |
| #include "third_party/skia/include/core/SkBitmap.h" |
| +#include "ui/gfx/image/image_skia.h" |
| namespace gfx { |
| namespace internal { |
| -bool NSImageToSkBitmaps(NSImage* image, std::vector<const SkBitmap*>* bitmaps) { |
| +bool NSImageToImageSkia(NSImage* image, gfx::ImageSkia* image_skia) { |
| for (NSImageRep* imageRep in [image representations]) { |
| - scoped_ptr<SkBitmap> bitmap(new SkBitmap( |
| - gfx::NSImageRepToSkBitmap(imageRep, [imageRep size], false))); |
| - if (bitmap->isNull()) |
| + SkBitmap bitmap(gfx::NSImageRepToSkBitmap(imageRep, [imageRep size], |
|
Robert Sesek
2012/05/05 02:08:34
Pull [imageRep size] into a local.
|
| + false)); |
| + if (bitmap.isNull()) |
| return false; |
| - bitmaps->push_back(bitmap.release()); |
| + float scale_factor = [imageRep size].width / [image size].width; |
| + image_skia->AddBitmapForScale(bitmap, scale_factor); |
| } |
| return true; |
| } |
| +NSImage* ImageSkiaToNSImage(const gfx::ImageSkia* image_skia) { |
| + if (image_skia->empty()) |
| + return nil; |
| + |
| + scoped_nsobject<NSImage> image([[NSImage alloc] init]); |
| + |
| + const std::vector<SkBitmap>& bitmaps = image_skia->bitmaps(); |
| + for (std::vector<SkBitmap>::const_iterator it = bitmaps.begin(); |
| + it != bitmaps.end(); ++it) { |
| + [image addRepresentation:gfx::SkBitmapToNSBitmapImageRep(*it)]; |
| + } |
| + |
| + [image setSize: NSMakeSize(image_skia->width(), image_skia->height())]; |
|
Robert Sesek
2012/05/05 02:08:34
nit: extra space after :
|
| + return [image.release() autorelease]; |
| +} |
| + |
| } // namespace internal |
| } // namespace gfx |