Chromium Code Reviews| Index: ui/gfx/icc_profile.h |
| diff --git a/ui/gfx/icc_profile.h b/ui/gfx/icc_profile.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5578febfc2385c066b9b3355cd083d4af62c6c83 |
| --- /dev/null |
| +++ b/ui/gfx/icc_profile.h |
| @@ -0,0 +1,69 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef UI_GFX_ICC_PROFILE_H_ |
| +#define UI_GFX_ICC_PROFILE_H_ |
| + |
| +#include <stdint.h> |
| +#include <vector> |
| + |
| +#include "ui/gfx/color_space.h" |
| + |
| +#if defined(OS_MACOSX) |
| +#include <CoreGraphics/CGColorSpace.h> |
| +#endif |
| + |
| +namespace gfx { |
| + |
| +// Used to represent a full ICC profile, usually retrieved from a monitor. It |
| +// can be lossily compressed into a ColorSpace object. |
| +class GFX_EXPORT ICCProfile { |
| + public: |
| + ICCProfile(); |
| + ICCProfile(ICCProfile&& other); |
| + ICCProfile(const ICCProfile& other); |
| + ICCProfile& operator=(const ICCProfile& other); |
| + ~ICCProfile(); |
| + bool operator==(const ICCProfile& other) const; |
| + |
| + // Returns the color profile of the monitor that can best represent color. |
| + // This profile should be used for creating content that does not know on |
| + // which monitor it will be displayed. |
| + static ICCProfile FromBestMonitor(); |
| +#if defined(OS_MACOSX) |
| + static ICCProfile FromCGColorSpace(CGColorSpaceRef cg_color_space); |
| +#endif |
| + |
| + // This will recover a ICCProfile from a compact ColorSpace representation. |
| + // Internally, this will make an effort to create an identical ICCProfile |
| + // to the one that created |color_space|, but this is not guaranteed. |
| + static ICCProfile FromColorSpace(const gfx::ColorSpace& color_space); |
| + |
| + // This will perform a potentially-lossy conversion to a more compact color |
| + // space representation. |
| + ColorSpace GetColorSpace() const; |
| + |
| + const std::vector<char>& GetData() const; |
| + |
| +#if defined(OS_WIN) |
| + // This will read monitor ICC profiles from disk and cache the results for the |
| + // other functions to read. This should not be called on the UI or IO thread. |
| + static void UpdateCachedProfilesOnBackgroundThread(); |
| + static bool CachedProfilesNeedUpdate(); |
| +#endif |
| + |
| + private: |
| + static ICCProfile FromData(const std::vector<char>& icc_profile); |
| + static bool IsValidProfileLength(size_t length); |
| + |
| + bool valid_ = false; |
| + std::vector<char> data_; |
| + uint64_t id_ = 0; |
|
hubbe
2016/07/21 22:08:54
id_ sees to be completely unused right now.
Either
ccameron
2016/07/22 00:59:17
This is now used in the fleshed-out version.
|
| + |
| + friend struct IPC::ParamTraits<gfx::ICCProfile>; |
| +}; |
| + |
| +} // namespace gfx |
| + |
| +#endif // UI_GFX_ICC_PROFILE_H_ |