| Index: ui/gfx/color_profile_mac.mm
|
| diff --git a/ui/gfx/color_profile_mac.mm b/ui/gfx/color_profile_mac.mm
|
| index 9590e3e5816d38a47bf68c4a895c45bd8e8494e4..e8be1dfdc26d67cd7d00afef97d92160a30ad195 100644
|
| --- a/ui/gfx/color_profile_mac.mm
|
| +++ b/ui/gfx/color_profile_mac.mm
|
| @@ -11,79 +11,22 @@
|
| #include "base/mac/scoped_cftyperef.h"
|
| #include "ui/gfx/mac/coordinate_conversion.h"
|
|
|
| -namespace {
|
| -
|
| -NSScreen* GetNSScreenFromBounds(const gfx::Rect& bounds) {
|
| - NSScreen* screen = nil;
|
| - int overlap = 0;
|
| -
|
| - for (NSScreen* monitor in [NSScreen screens]) {
|
| - gfx::Rect monitor_rect = gfx::ScreenRectFromNSRect([monitor frame]);
|
| - gfx::Rect overlap_rect = gfx::IntersectRects(monitor_rect, bounds);
|
| - int overlap_size = overlap_rect.width() * overlap_rect.height();
|
| - if (overlap_size > overlap) {
|
| - overlap = overlap_size;
|
| - screen = monitor;
|
| - }
|
| - }
|
| -
|
| - return screen;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| namespace gfx {
|
|
|
| -bool GetDisplayColorProfile(const gfx::Rect& bounds,
|
| - std::vector<char>* profile) {
|
| - DCHECK(profile->empty());
|
| -
|
| - NSScreen* screen = GetNSScreenFromBounds(bounds);
|
| - if (!screen || bounds.IsEmpty())
|
| - return false;
|
| - NSColorSpace* color_space = [screen colorSpace];
|
| - if (!color_space)
|
| - return false;
|
| -
|
| - if ([color_space isEqual:[NSColorSpace sRGBColorSpace]])
|
| - return true;
|
| - NSData* profile_data = [color_space ICCProfileData];
|
| - const char* data = static_cast<const char*>([profile_data bytes]);
|
| - size_t length = [profile_data length];
|
| - if (data && !gfx::InvalidColorProfileLength(length))
|
| - profile->assign(data, data + length);
|
| - return true;
|
| -}
|
| -
|
| -GFX_EXPORT bool GetDisplayColorProfile(gfx::NativeWindow window,
|
| - std::vector<char>* profile) {
|
| - DCHECK(profile->empty());
|
| -
|
| - NSColorSpace* color_space = [window colorSpace];
|
| - if (!color_space || NSIsEmptyRect([window frame]))
|
| - return false;
|
| -
|
| - if ([color_space isEqual:[NSColorSpace sRGBColorSpace]])
|
| - return true;
|
| - NSData* profile_data = [color_space ICCProfileData];
|
| - const char* data = static_cast<const char*>([profile_data bytes]);
|
| - size_t length = [profile_data length];
|
| - if (data && !gfx::InvalidColorProfileLength(length))
|
| - profile->assign(data, data + length);
|
| - return true;
|
| -}
|
| -
|
| -void ReadColorProfile(std::vector<char>* profile) {
|
| +// static
|
| +ColorProfile ColorProfile::GetFromBestMonitor() {
|
| + ColorProfile profile;
|
| CGColorSpaceRef monitor_color_space(base::mac::GetSystemColorSpace());
|
| base::ScopedCFTypeRef<CFDataRef> icc_profile(
|
| CGColorSpaceCopyICCProfile(monitor_color_space));
|
| if (!icc_profile)
|
| - return;
|
| + return profile;
|
| size_t length = CFDataGetLength(icc_profile);
|
| - if (gfx::InvalidColorProfileLength(length))
|
| - return;
|
| + if (!IsValidProfileLength(length))
|
| + return profile;
|
| const unsigned char* data = CFDataGetBytePtr(icc_profile);
|
| - profile->assign(data, data + length);
|
| + profile.profile_.assign(data, data + length);
|
| + return profile;
|
| }
|
|
|
| } // namespace gfx
|
|
|