summaryrefslogtreecommitdiffstats
path: root/skia/ext/skia_utils_mac.mm
diff options
context:
space:
mode:
authorpkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-10 17:41:13 +0000
committerpkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-10 17:41:13 +0000
commit89753fdf570d25d44fe9d5f01600fa5138ca1342 (patch)
treebe9814b040e47a28f25578073baaf3aacf673f78 /skia/ext/skia_utils_mac.mm
parent8bd4a46da03767be3a2fa16c9fc32ed2233e47f7 (diff)
downloadchromium_src-89753fdf570d25d44fe9d5f01600fa5138ca1342.zip
chromium_src-89753fdf570d25d44fe9d5f01600fa5138ca1342.tar.gz
chromium_src-89753fdf570d25d44fe9d5f01600fa5138ca1342.tar.bz2
This patch makes ImageSkia more like SkBitmap. The goal is to make swapping from SkBitmap to ImageSkia easier.
Notable changes: - ImageSkia can be cheaply copied - Added extractSubset, will remove after SkBitmaps have been converted to ImageSkia - Modified API to look more like SkBitmap Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=136304 Review URL: https://chromiumcodereview.appspot.com/10245003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136332 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/ext/skia_utils_mac.mm')
-rw-r--r--skia/ext/skia_utils_mac.mm46
1 files changed, 14 insertions, 32 deletions
diff --git a/skia/ext/skia_utils_mac.mm b/skia/ext/skia_utils_mac.mm
index f359089..48070d1 100644
--- a/skia/ext/skia_utils_mac.mm
+++ b/skia/ext/skia_utils_mac.mm
@@ -248,6 +248,20 @@ SkBitmap NSImageRepToSkBitmap(NSImageRep* image, NSSize size, bool is_opaque) {
return NSImageOrNSImageRepToSkBitmap(nil, image, size, is_opaque);
}
+NSBitmapImageRep* SkBitmapToNSBitmapImageRep(const SkBitmap& skiaBitmap) {
+ base::mac::ScopedCFTypeRef<CGColorSpaceRef> color_space(
+ CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB));
+
+ // First convert SkBitmap to CGImageRef.
+ base::mac::ScopedCFTypeRef<CGImageRef> cgimage(
+ SkCreateCGImageRefWithColorspace(skiaBitmap, color_space));
+
+ // Now convert to NSBitmapImageRep.
+ scoped_nsobject<NSBitmapImageRep> bitmap(
+ [[NSBitmapImageRep alloc] initWithCGImage:cgimage]);
+ return [bitmap.release() autorelease];
+}
+
NSImage* SkBitmapToNSImageWithColorSpace(const SkBitmap& skiaBitmap,
CGColorSpaceRef colorSpace) {
if (skiaBitmap.isNull())
@@ -272,43 +286,11 @@ NSImage* SkBitmapToNSImage(const SkBitmap& skiaBitmap) {
return SkBitmapToNSImageWithColorSpace(skiaBitmap, colorSpace.get());
}
-NSImage* SkBitmapsToNSImage(const std::vector<const SkBitmap*>& bitmaps) {
- if (bitmaps.empty())
- return nil;
-
- base::mac::ScopedCFTypeRef<CGColorSpaceRef> color_space(
- CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB));
- scoped_nsobject<NSImage> image([[NSImage alloc] init]);
- NSSize min_size = NSZeroSize;
-
- for (std::vector<const SkBitmap*>::const_iterator it = bitmaps.begin();
- it != bitmaps.end(); ++it) {
- const SkBitmap& skiaBitmap = **it;
- // First convert SkBitmap to CGImageRef.
- base::mac::ScopedCFTypeRef<CGImageRef> cgimage(
- SkCreateCGImageRefWithColorspace(skiaBitmap, color_space));
-
- // Now convert to NSImage.
- scoped_nsobject<NSBitmapImageRep> bitmap(
- [[NSBitmapImageRep alloc] initWithCGImage:cgimage]);
- [image addRepresentation:bitmap];
-
- if (min_size.width == 0 || min_size.width > skiaBitmap.width()) {
- min_size.width = skiaBitmap.width();
- min_size.height = skiaBitmap.height();
- }
- }
-
- [image setSize:min_size];
- return [image.release() autorelease];
-}
-
SkBitmap AppplicationIconAtSize(int size) {
NSImage* image = [NSImage imageNamed:@"NSApplicationIcon"];
return NSImageToSkBitmap(image, NSMakeSize(size, size), /* is_opaque=*/true);
}
-
SkiaBitLocker::SkiaBitLocker(SkCanvas* canvas)
: canvas_(canvas),
cgContext_(0) {