| 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> |
| 11 | 11 |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include "third_party/skia/include/core/SkBitmap.h" | 14 #include "third_party/skia/include/core/SkBitmap.h" |
| 15 #include "ui/gfx/codec/png_codec.h" | 15 #include "ui/gfx/codec/png_codec.h" |
| 16 #include "ui/gfx/image/image_skia.h" | 16 #include "ui/gfx/image/image_skia.h" |
| 17 | 17 |
| 18 #if defined(TOOLKIT_GTK) | 18 #if defined(OS_IOS) |
| 19 #include <gtk/gtk.h> | |
| 20 #include "ui/gfx/gtk_util.h" | |
| 21 #elif defined(OS_IOS) | |
| 22 #include "base/mac/foundation_util.h" | 19 #include "base/mac/foundation_util.h" |
| 23 #include "base/mac/scoped_cftyperef.h" | 20 #include "base/mac/scoped_cftyperef.h" |
| 24 #include "skia/ext/skia_utils_ios.h" | 21 #include "skia/ext/skia_utils_ios.h" |
| 25 #elif defined(OS_MACOSX) | 22 #elif defined(OS_MACOSX) |
| 26 #include "base/mac/mac_util.h" | 23 #include "base/mac/mac_util.h" |
| 27 #include "skia/ext/skia_utils_mac.h" | 24 #include "skia/ext/skia_utils_mac.h" |
| 28 #endif | 25 #endif |
| 29 | 26 |
| 30 namespace gfx { | 27 namespace gfx { |
| 31 namespace test { | 28 namespace test { |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 base::ScopedCFTypeRef<CGColorSpaceRef> color_space( | 182 base::ScopedCFTypeRef<CGColorSpaceRef> color_space( |
| 186 CGColorSpaceCreateDeviceRGB()); | 183 CGColorSpaceCreateDeviceRGB()); |
| 187 UIImage* image = | 184 UIImage* image = |
| 188 gfx::SkBitmapToUIImageWithColorSpace(bitmap, scale, color_space); | 185 gfx::SkBitmapToUIImageWithColorSpace(bitmap, scale, color_space); |
| 189 base::mac::NSObjectRetain(image); | 186 base::mac::NSObjectRetain(image); |
| 190 return image; | 187 return image; |
| 191 #elif defined(OS_MACOSX) | 188 #elif defined(OS_MACOSX) |
| 192 NSImage* image = gfx::SkBitmapToNSImage(bitmap); | 189 NSImage* image = gfx::SkBitmapToNSImage(bitmap); |
| 193 base::mac::NSObjectRetain(image); | 190 base::mac::NSObjectRetain(image); |
| 194 return image; | 191 return image; |
| 195 #elif defined(TOOLKIT_GTK) | |
| 196 return gfx::GdkPixbufFromSkBitmap(bitmap); | |
| 197 #else | 192 #else |
| 198 return gfx::ImageSkia::CreateFrom1xBitmap(bitmap); | 193 return gfx::ImageSkia::CreateFrom1xBitmap(bitmap); |
| 199 #endif | 194 #endif |
| 200 } | 195 } |
| 201 | 196 |
| 202 gfx::Image::RepresentationType GetPlatformRepresentationType() { | 197 gfx::Image::RepresentationType GetPlatformRepresentationType() { |
| 203 #if defined(OS_IOS) | 198 #if defined(OS_IOS) |
| 204 return gfx::Image::kImageRepCocoaTouch; | 199 return gfx::Image::kImageRepCocoaTouch; |
| 205 #elif defined(OS_MACOSX) | 200 #elif defined(OS_MACOSX) |
| 206 return gfx::Image::kImageRepCocoa; | 201 return gfx::Image::kImageRepCocoa; |
| 207 #elif defined(TOOLKIT_GTK) | |
| 208 return gfx::Image::kImageRepGdk; | |
| 209 #else | 202 #else |
| 210 return gfx::Image::kImageRepSkia; | 203 return gfx::Image::kImageRepSkia; |
| 211 #endif | 204 #endif |
| 212 } | 205 } |
| 213 | 206 |
| 214 PlatformImage ToPlatformType(const gfx::Image& image) { | 207 PlatformImage ToPlatformType(const gfx::Image& image) { |
| 215 #if defined(OS_IOS) | 208 #if defined(OS_IOS) |
| 216 return image.ToUIImage(); | 209 return image.ToUIImage(); |
| 217 #elif defined(OS_MACOSX) | 210 #elif defined(OS_MACOSX) |
| 218 return image.ToNSImage(); | 211 return image.ToNSImage(); |
| 219 #elif defined(TOOLKIT_GTK) | |
| 220 return image.ToGdkPixbuf(); | |
| 221 #else | 212 #else |
| 222 return image.AsImageSkia(); | 213 return image.AsImageSkia(); |
| 223 #endif | 214 #endif |
| 224 } | 215 } |
| 225 | 216 |
| 226 PlatformImage CopyPlatformType(const gfx::Image& image) { | 217 PlatformImage CopyPlatformType(const gfx::Image& image) { |
| 227 #if defined(OS_IOS) | 218 #if defined(OS_IOS) |
| 228 return image.CopyUIImage(); | 219 return image.CopyUIImage(); |
| 229 #elif defined(OS_MACOSX) | 220 #elif defined(OS_MACOSX) |
| 230 return image.CopyNSImage(); | 221 return image.CopyNSImage(); |
| 231 #elif defined(TOOLKIT_GTK) | |
| 232 return image.CopyGdkPixbuf(); | |
| 233 #else | 222 #else |
| 234 return image.AsImageSkia(); | 223 return image.AsImageSkia(); |
| 235 #endif | 224 #endif |
| 236 } | 225 } |
| 237 | 226 |
| 238 #if defined(OS_MACOSX) | 227 #if defined(OS_MACOSX) |
| 239 // Defined in image_unittest_util_mac.mm. | 228 // Defined in image_unittest_util_mac.mm. |
| 240 #elif defined(TOOLKIT_GTK) | |
| 241 SkColor GetPlatformImageColor(PlatformImage image, int x, int y) { | |
| 242 int n_channels = gdk_pixbuf_get_n_channels(image); | |
| 243 int rowstride = gdk_pixbuf_get_rowstride(image); | |
| 244 guchar* gdk_pixels = gdk_pixbuf_get_pixels(image); | |
| 245 | |
| 246 guchar* pixel = gdk_pixels + (y * rowstride) + (x * n_channels); | |
| 247 guchar alpha = gdk_pixbuf_get_has_alpha(image) ? pixel[3] : 255; | |
| 248 return SkColorSetARGB(alpha, pixel[0], pixel[1], pixel[2]); | |
| 249 } | |
| 250 #else | 229 #else |
| 251 SkColor GetPlatformImageColor(PlatformImage image, int x, int y) { | 230 SkColor GetPlatformImageColor(PlatformImage image, int x, int y) { |
| 252 SkBitmap bitmap = *image.bitmap(); | 231 SkBitmap bitmap = *image.bitmap(); |
| 253 SkAutoLockPixels auto_lock(bitmap); | 232 SkAutoLockPixels auto_lock(bitmap); |
| 254 return bitmap.getColor(x, y); | 233 return bitmap.getColor(x, y); |
| 255 } | 234 } |
| 256 #endif | 235 #endif |
| 257 | 236 |
| 258 void CheckColors(SkColor color1, SkColor color2) { | 237 void CheckColors(SkColor color1, SkColor color2) { |
| 259 EXPECT_TRUE(ColorsClose(color1, color2)); | 238 EXPECT_TRUE(ColorsClose(color1, color2)); |
| 260 } | 239 } |
| 261 | 240 |
| 262 void CheckIsTransparent(SkColor color) { | 241 void CheckIsTransparent(SkColor color) { |
| 263 EXPECT_LT(SkColorGetA(color) / 255.0, 0.05); | 242 EXPECT_LT(SkColorGetA(color) / 255.0, 0.05); |
| 264 } | 243 } |
| 265 | 244 |
| 266 bool IsPlatformImageValid(PlatformImage image) { | 245 bool IsPlatformImageValid(PlatformImage image) { |
| 267 #if defined(OS_MACOSX) || defined(TOOLKIT_GTK) | 246 #if defined(OS_MACOSX) |
| 268 return image != NULL; | 247 return image != NULL; |
| 269 #else | 248 #else |
| 270 return !image.isNull(); | 249 return !image.isNull(); |
| 271 #endif | 250 #endif |
| 272 } | 251 } |
| 273 | 252 |
| 274 bool PlatformImagesEqual(PlatformImage image1, PlatformImage image2) { | 253 bool PlatformImagesEqual(PlatformImage image1, PlatformImage image2) { |
| 275 #if defined(OS_MACOSX) || defined(TOOLKIT_GTK) | 254 #if defined(OS_MACOSX) |
| 276 return image1 == image2; | 255 return image1 == image2; |
| 277 #else | 256 #else |
| 278 return image1.BackedBySameObjectAs(image2); | 257 return image1.BackedBySameObjectAs(image2); |
| 279 #endif | 258 #endif |
| 280 } | 259 } |
| 281 | 260 |
| 282 } // namespace test | 261 } // namespace test |
| 283 } // namespace gfx | 262 } // namespace gfx |
| OLD | NEW |