| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Because the unit tests for gfx::Image are spread across multiple | 5 // Because the unit tests for gfx::Image are spread across multiple |
| 6 // implementation files, this header contains the reusable components. | 6 // implementation files, this header contains the reusable components. |
| 7 | 7 |
| 8 #include "ui/gfx/image/image_unittest_util.h" | 8 #include "ui/gfx/image/image_unittest_util.h" |
| 9 | 9 |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 bool ColorsClose(SkColor color1, SkColor color2) { | 41 bool ColorsClose(SkColor color1, SkColor color2) { |
| 42 // Be tolerant of floating point rounding and lossy color space conversions. | 42 // Be tolerant of floating point rounding and lossy color space conversions. |
| 43 return ColorComponentsClose(SkColorGetR(color1), SkColorGetR(color2)) && | 43 return ColorComponentsClose(SkColorGetR(color1), SkColorGetR(color2)) && |
| 44 ColorComponentsClose(SkColorGetG(color1), SkColorGetG(color2)) && | 44 ColorComponentsClose(SkColorGetG(color1), SkColorGetG(color2)) && |
| 45 ColorComponentsClose(SkColorGetB(color1), SkColorGetB(color2)) && | 45 ColorComponentsClose(SkColorGetB(color1), SkColorGetB(color2)) && |
| 46 ColorComponentsClose(SkColorGetA(color1), SkColorGetA(color2)); | 46 ColorComponentsClose(SkColorGetA(color1), SkColorGetA(color2)); |
| 47 } | 47 } |
| 48 | 48 |
| 49 } // namespace | 49 } // namespace |
| 50 | 50 |
| 51 std::vector<float> Get1xAnd2xScales() { | 51 std::vector<ui::ScaleFactor> Get1xAnd2xScaleFactors() { |
| 52 std::vector<float> scales; | 52 std::vector<ui::ScaleFactor> scale_factors; |
| 53 scales.push_back(1.0f); | 53 scale_factors.push_back(ui::SCALE_FACTOR_100P); |
| 54 scales.push_back(2.0f); | 54 scale_factors.push_back(ui::SCALE_FACTOR_200P); |
| 55 return scales; | 55 return scale_factors; |
| 56 } | 56 } |
| 57 | 57 |
| 58 const SkBitmap CreateBitmap(int width, int height) { | 58 const SkBitmap CreateBitmap(int width, int height) { |
| 59 SkBitmap bitmap; | 59 SkBitmap bitmap; |
| 60 bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); | 60 bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); |
| 61 bitmap.allocPixels(); | 61 bitmap.allocPixels(); |
| 62 bitmap.eraseRGB(0, 255, 0); | 62 bitmap.eraseRGB(0, 255, 0); |
| 63 return bitmap; | 63 return bitmap; |
| 64 } | 64 } |
| 65 | 65 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 82 return gfx::Image::CreateFrom1xBitmap(CreateBitmap(width, height)); | 82 return gfx::Image::CreateFrom1xBitmap(CreateBitmap(width, height)); |
| 83 } | 83 } |
| 84 | 84 |
| 85 bool IsEqual(const gfx::Image& img1, const gfx::Image& img2) { | 85 bool IsEqual(const gfx::Image& img1, const gfx::Image& img2) { |
| 86 std::vector<gfx::ImageSkiaRep> img1_reps = img1.AsImageSkia().image_reps(); | 86 std::vector<gfx::ImageSkiaRep> img1_reps = img1.AsImageSkia().image_reps(); |
| 87 gfx::ImageSkia image_skia2 = img2.AsImageSkia(); | 87 gfx::ImageSkia image_skia2 = img2.AsImageSkia(); |
| 88 if (image_skia2.image_reps().size() != img1_reps.size()) | 88 if (image_skia2.image_reps().size() != img1_reps.size()) |
| 89 return false; | 89 return false; |
| 90 | 90 |
| 91 for (size_t i = 0; i < img1_reps.size(); ++i) { | 91 for (size_t i = 0; i < img1_reps.size(); ++i) { |
| 92 float scale = img1_reps[i].scale(); | 92 ui::ScaleFactor scale_factor = img1_reps[i].scale_factor(); |
| 93 const gfx::ImageSkiaRep& image_rep2 = image_skia2.GetRepresentation(scale); | 93 const gfx::ImageSkiaRep& image_rep2 = image_skia2.GetRepresentation( |
| 94 if (image_rep2.scale() != scale || | 94 scale_factor); |
| 95 if (image_rep2.scale_factor() != scale_factor || |
| 95 !IsEqual(img1_reps[i].sk_bitmap(), image_rep2.sk_bitmap())) { | 96 !IsEqual(img1_reps[i].sk_bitmap(), image_rep2.sk_bitmap())) { |
| 96 return false; | 97 return false; |
| 97 } | 98 } |
| 98 } | 99 } |
| 99 return true; | 100 return true; |
| 100 } | 101 } |
| 101 | 102 |
| 102 bool IsEqual(const SkBitmap& bmp1, const SkBitmap& bmp2) { | 103 bool IsEqual(const SkBitmap& bmp1, const SkBitmap& bmp2) { |
| 103 if (bmp1.isNull() && bmp2.isNull()) | 104 if (bmp1.isNull() && bmp2.isNull()) |
| 104 return true; | 105 return true; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 EXPECT_LE(16, bitmap.width()); | 143 EXPECT_LE(16, bitmap.width()); |
| 143 EXPECT_LE(16, bitmap.height()); | 144 EXPECT_LE(16, bitmap.height()); |
| 144 SkAutoLockPixels auto_lock(bitmap); | 145 SkAutoLockPixels auto_lock(bitmap); |
| 145 CheckColors(bitmap.getColor(10, 10), SK_ColorRED); | 146 CheckColors(bitmap.getColor(10, 10), SK_ColorRED); |
| 146 } | 147 } |
| 147 | 148 |
| 148 bool ImageSkiaStructureMatches( | 149 bool ImageSkiaStructureMatches( |
| 149 const gfx::ImageSkia& image_skia, | 150 const gfx::ImageSkia& image_skia, |
| 150 int width, | 151 int width, |
| 151 int height, | 152 int height, |
| 152 const std::vector<float>& scales) { | 153 const std::vector<ui::ScaleFactor>& scale_factors) { |
| 153 if (image_skia.isNull() || | 154 if (image_skia.isNull() || |
| 154 image_skia.width() != width || | 155 image_skia.width() != width || |
| 155 image_skia.height() != height || | 156 image_skia.height() != height || |
| 156 image_skia.image_reps().size() != scales.size()) { | 157 image_skia.image_reps().size() != scale_factors.size()) { |
| 157 return false; | 158 return false; |
| 158 } | 159 } |
| 159 | 160 |
| 160 for (size_t i = 0; i < scales.size(); ++i) { | 161 for (size_t i = 0; i < scale_factors.size(); ++i) { |
| 161 gfx::ImageSkiaRep image_rep = | 162 gfx::ImageSkiaRep image_rep = |
| 162 image_skia.GetRepresentation(scales[i]); | 163 image_skia.GetRepresentation(scale_factors[i]); |
| 163 if (image_rep.is_null() || image_rep.scale() != scales[i]) | 164 if (image_rep.is_null() || |
| 165 image_rep.scale_factor() != scale_factors[i]) |
| 164 return false; | 166 return false; |
| 165 | 167 |
| 166 if (image_rep.pixel_width() != static_cast<int>(width * scales[i]) || | 168 float scale = ui::GetScaleFactorScale(scale_factors[i]); |
| 167 image_rep.pixel_height() != static_cast<int>(height * scales[i])) { | 169 if (image_rep.pixel_width() != static_cast<int>(width * scale) || |
| 170 image_rep.pixel_height() != static_cast<int>(height * scale)) { |
| 168 return false; | 171 return false; |
| 169 } | 172 } |
| 170 } | 173 } |
| 171 return true; | 174 return true; |
| 172 } | 175 } |
| 173 | 176 |
| 174 bool IsEmpty(const gfx::Image& image) { | 177 bool IsEmpty(const gfx::Image& image) { |
| 175 const SkBitmap& bmp = *image.ToSkBitmap(); | 178 const SkBitmap& bmp = *image.ToSkBitmap(); |
| 176 return bmp.isNull() || | 179 return bmp.isNull() || |
| 177 (bmp.width() == 0 && bmp.height() == 0); | 180 (bmp.width() == 0 && bmp.height() == 0); |
| 178 } | 181 } |
| 179 | 182 |
| 180 PlatformImage CreatePlatformImage() { | 183 PlatformImage CreatePlatformImage() { |
| 181 const SkBitmap bitmap(CreateBitmap(25, 25)); | 184 const SkBitmap bitmap(CreateBitmap(25, 25)); |
| 182 #if defined(OS_IOS) | 185 #if defined(OS_IOS) |
| 183 float scale = ImageSkia::GetMaxSupportedScale(); | 186 ui::ScaleFactor scale_factor = ui::GetMaxScaleFactor(); |
| 187 float scale = ui::GetScaleFactorScale(scale_factor); |
| 184 | 188 |
| 185 base::ScopedCFTypeRef<CGColorSpaceRef> color_space( | 189 base::ScopedCFTypeRef<CGColorSpaceRef> color_space( |
| 186 CGColorSpaceCreateDeviceRGB()); | 190 CGColorSpaceCreateDeviceRGB()); |
| 187 UIImage* image = | 191 UIImage* image = |
| 188 gfx::SkBitmapToUIImageWithColorSpace(bitmap, scale, color_space); | 192 gfx::SkBitmapToUIImageWithColorSpace(bitmap, scale, color_space); |
| 189 base::mac::NSObjectRetain(image); | 193 base::mac::NSObjectRetain(image); |
| 190 return image; | 194 return image; |
| 191 #elif defined(OS_MACOSX) | 195 #elif defined(OS_MACOSX) |
| 192 NSImage* image = gfx::SkBitmapToNSImage(bitmap); | 196 NSImage* image = gfx::SkBitmapToNSImage(bitmap); |
| 193 base::mac::NSObjectRetain(image); | 197 base::mac::NSObjectRetain(image); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 bool PlatformImagesEqual(PlatformImage image1, PlatformImage image2) { | 278 bool PlatformImagesEqual(PlatformImage image1, PlatformImage image2) { |
| 275 #if defined(OS_MACOSX) || defined(TOOLKIT_GTK) | 279 #if defined(OS_MACOSX) || defined(TOOLKIT_GTK) |
| 276 return image1 == image2; | 280 return image1 == image2; |
| 277 #else | 281 #else |
| 278 return image1.BackedBySameObjectAs(image2); | 282 return image1.BackedBySameObjectAs(image2); |
| 279 #endif | 283 #endif |
| 280 } | 284 } |
| 281 | 285 |
| 282 } // namespace test | 286 } // namespace test |
| 283 } // namespace gfx | 287 } // namespace gfx |
| OLD | NEW |