diff options
author | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-08 14:55:31 +0000 |
---|---|---|
committer | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-08 14:55:31 +0000 |
commit | 62f6f728fc37c01d03a310b6ae1a7fef160e222c (patch) | |
tree | 04b708939f1bf976603b383e1a94b6930303d307 | |
parent | cdebb9cf0853d2166ca73de81e5de15b12fbfc1b (diff) | |
download | chromium_src-62f6f728fc37c01d03a310b6ae1a7fef160e222c.zip chromium_src-62f6f728fc37c01d03a310b6ae1a7fef160e222c.tar.gz chromium_src-62f6f728fc37c01d03a310b6ae1a7fef160e222c.tar.bz2 |
NSImageRep can have a size which is not it's pixel size.
Fix conversion between NSImage to ImageSkia for when this is the case.
Also changed unittest constants to be kWidth1x, kHeight1x etc
Test=ImageMacTest.NSImageWithResizedNSImageRepToImageSkia
Bug=None
Review URL: https://chromiumcodereview.appspot.com/10545069
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141206 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ui/gfx/image/image_mac.mm | 3 | ||||
-rw-r--r-- | ui/gfx/image/image_mac_unittest.mm | 82 |
2 files changed, 56 insertions, 29 deletions
diff --git a/ui/gfx/image/image_mac.mm b/ui/gfx/image/image_mac.mm index eeed857..68e541c 100644 --- a/ui/gfx/image/image_mac.mm +++ b/ui/gfx/image/image_mac.mm @@ -17,7 +17,8 @@ namespace internal { gfx::ImageSkia NSImageToImageSkia(NSImage* image) { gfx::ImageSkia image_skia; for (NSImageRep* imageRep in [image representations]) { - NSSize imageRepSize = [imageRep size]; + NSSize imageRepSize = + NSMakeSize([imageRep pixelsWide], [imageRep pixelsHigh]); SkBitmap bitmap(gfx::NSImageRepToSkBitmap(imageRep, imageRepSize, false)); if (!bitmap.isNull() && !bitmap.empty()) { float scaleFactor = imageRepSize.width / [image size].width; diff --git a/ui/gfx/image/image_mac_unittest.mm b/ui/gfx/image/image_mac_unittest.mm index 8a2119a..20c6f44 100644 --- a/ui/gfx/image/image_mac_unittest.mm +++ b/ui/gfx/image/image_mac_unittest.mm @@ -31,18 +31,44 @@ class ImageMacTest : public testing::Test { namespace gt = gfx::test; +TEST_F(ImageMacTest, NSImageWithResizedNSImageRepToImageSkia) { + const int kWidth1x = 10; + const int kHeight1x = 12; + const int kWidth2x = 20; + const int kHeight2x = 24; + + NSImageRep* image_rep; + CreateBitmapImageRep(kWidth2x, kHeight2x, &image_rep); + + scoped_nsobject<NSImage> ns_image( + [[NSImage alloc] initWithSize:NSMakeSize(kWidth1x, kHeight1x)]); + [ns_image addRepresentation:image_rep]; + + [image_rep setSize:NSMakeSize(kWidth1x, kHeight1x)]; + + gfx::Image image(ns_image.release()); + const gfx::ImageSkia* image_skia = image.ToImageSkia(); + + float scale_factor; + const SkBitmap& bitmap = image_skia->GetBitmapForScale(2.0f, 2.0f, + &scale_factor); + EXPECT_EQ(2.0f, scale_factor); + EXPECT_EQ(kWidth2x, bitmap.width()); + EXPECT_EQ(kHeight2x, bitmap.height()); +} + TEST_F(ImageMacTest, MultiResolutionNSImageToImageSkia) { - const int width1x = 10; - const int height1x = 12; - const int width2x = 20; - const int height2x = 24; + const int kWidth1x = 10; + const int kHeight1x = 12; + const int kWidth2x = 20; + const int kHeight2x = 24; NSImageRep* image_rep_1; - CreateBitmapImageRep(width1x, height1x, &image_rep_1); + CreateBitmapImageRep(kWidth1x, kHeight1x, &image_rep_1); NSImageRep* image_rep_2; - CreateBitmapImageRep(width2x, height2x, &image_rep_2); + CreateBitmapImageRep(kWidth2x, kHeight2x, &image_rep_2); scoped_nsobject<NSImage> ns_image( - [[NSImage alloc] initWithSize:NSMakeSize(width1x, height1x)]); + [[NSImage alloc] initWithSize:NSMakeSize(kWidth1x, kHeight1x)]); [ns_image addRepresentation:image_rep_1]; [ns_image addRepresentation:image_rep_2]; @@ -58,29 +84,29 @@ TEST_F(ImageMacTest, MultiResolutionNSImageToImageSkia) { &scale_factor); EXPECT_TRUE(!bitmap1x.isNull()); EXPECT_EQ(1.0f, scale_factor); - EXPECT_EQ(width1x, bitmap1x.width()); - EXPECT_EQ(height1x, bitmap1x.height()); + EXPECT_EQ(kWidth1x, bitmap1x.width()); + EXPECT_EQ(kHeight1x, bitmap1x.height()); const SkBitmap& bitmap2x = image_skia->GetBitmapForScale(2.0f, 2.0f, &scale_factor); EXPECT_TRUE(!bitmap2x.isNull()); EXPECT_EQ(2.0f, scale_factor); - EXPECT_EQ(width2x, bitmap2x.width()); - EXPECT_EQ(height2x, bitmap2x.height()); + EXPECT_EQ(kWidth2x, bitmap2x.width()); + EXPECT_EQ(kHeight2x, bitmap2x.height()); // ToImageSkia should create a second representation. EXPECT_EQ(2u, image.RepresentationCount()); } TEST_F(ImageMacTest, MultiResolutionImageSkiaToNSImage) { - const int width1x = 10; - const int height1x= 12; - const int width2x = 20; - const int height2x = 24; + const int kWidth1x = 10; + const int kHeight1x= 12; + const int kWidth2x = 20; + const int kHeight2x = 24; gfx::ImageSkia image_skia; - image_skia.AddBitmapForScale(gt::CreateBitmap(width1x, height1x), 1.0f); - image_skia.AddBitmapForScale(gt::CreateBitmap(width2x, height2x), 2.0f); + image_skia.AddBitmapForScale(gt::CreateBitmap(kWidth1x, kHeight1x), 1.0f); + image_skia.AddBitmapForScale(gt::CreateBitmap(kWidth2x, kHeight2x), 2.0f); gfx::Image image(image_skia); @@ -91,23 +117,23 @@ TEST_F(ImageMacTest, MultiResolutionImageSkiaToNSImage) { EXPECT_TRUE(ns_image); // Image size should be the same as the 1x bitmap. - EXPECT_EQ([ns_image size].width, width1x); - EXPECT_EQ([ns_image size].height, height1x); + EXPECT_EQ([ns_image size].width, kWidth1x); + EXPECT_EQ([ns_image size].height, kHeight1x); EXPECT_EQ(2u, [[image representations] count]); NSImageRep* image_rep_1 = [[image representations] objectAtIndex:0]; NSImageRep* image_rep_2 = [[image representations] objectAtIndex:1]; - if ([image_rep_1 size].width == width1x) { - EXPECT_EQ([image_rep_1 size].width, width1x); - EXPECT_EQ([image_rep_1 size].height, height1x); - EXPECT_EQ([image_rep_2 size].width, width2x); - EXPECT_EQ([image_rep_2 size].height, height2x); + if ([image_rep_1 size].width == kWidth1x) { + EXPECT_EQ([image_rep_1 size].width, kWidth1x); + EXPECT_EQ([image_rep_1 size].height, kHeight1x); + EXPECT_EQ([image_rep_2 size].width, kWidth2x); + EXPECT_EQ([image_rep_2 size].height, kHeight2x); } else { - EXPECT_EQ([image_rep_1 size].width, width2x); - EXPECT_EQ([image_rep_1 size].height, height2x); - EXPECT_EQ([image_rep_2 size].width, width1x); - EXPECT_EQ([image_rep_2 size].height, height1x); + EXPECT_EQ([image_rep_1 size].width, kWidth2x); + EXPECT_EQ([image_rep_1 size].height, kHeight2x); + EXPECT_EQ([image_rep_2 size].width, kWidth1x); + EXPECT_EQ([image_rep_2 size].height, kHeight1x); } // Cast to NSImage* should create a second representation. |