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