1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/gfx/color_profile.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/mac/mac_util.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace gfx { 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool GetDisplayColorProfile(const gfx::Rect& bounds, 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::vector<char>* profile) { 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (bounds.IsEmpty()) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return false; 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // TODO(noel): implement. 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return false; 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void ReadColorProfile(std::vector<char>* profile) { 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CGColorSpaceRef monitor_color_space(base::mac::GetSystemColorSpace()); 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::ScopedCFTypeRef<CFDataRef> icc_profile( 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CGColorSpaceCopyICCProfile(monitor_color_space)); 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!icc_profile) 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return; 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) size_t length = CFDataGetLength(icc_profile); 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (gfx::InvalidColorProfileLength(length)) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return; 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const unsigned char* data = CFDataGetBytePtr(icc_profile); 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) profile->assign(data, data + length); 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace gfx 33