Skia
2DGraphicsLibrary
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SkColorSpace.h
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkColorSpace_DEFINED
9 #define SkColorSpace_DEFINED
10 
11 #include "SkMatrix44.h"
12 #include "SkRefCnt.h"
13 
14 class SkData;
15 
16 class SK_API SkColorSpace : public SkRefCnt {
17 public:
18 
22  enum Named {
23  kUnknown_Named,
24  kSRGB_Named,
25  kAdobeRGB_Named,
26  };
27 
28  enum GammaNamed {
29  kLinear_GammaNamed,
30 
36 
42 
48 
53  };
54 
58  static sk_sp<SkColorSpace> NewRGB(GammaNamed gammaNamed, const SkMatrix44& toXYZD50);
59 
63  static sk_sp<SkColorSpace> NewNamed(Named);
64 
68  static sk_sp<SkColorSpace> NewICC(const void*, size_t);
69 
73  sk_sp<SkColorSpace> makeLinearGamma();
74 
75  GammaNamed gammaNamed() const { return fGammaNamed; }
76 
80  const SkMatrix44& xyz() const { return fToXYZD50; }
81 
85  bool gammaCloseToSRGB() const {
86  return kSRGB_GammaNamed == fGammaNamed || k2Dot2Curve_GammaNamed == fGammaNamed;
87  }
88 
92  bool gammasAreMatching() const;
93  bool gammasAreNamed() const;
94  bool gammasAreValues() const;
95  bool gammasAreTables() const;
96  bool gammasAreParams() const;
97 
102  sk_sp<SkData> serialize() const;
103 
108  size_t writeToMemory(void* memory) const;
109 
110  static sk_sp<SkColorSpace> Deserialize(const void* data, size_t length);
111 
116  static bool Equals(const SkColorSpace* src, const SkColorSpace* dst);
117 
118 protected:
119  SkColorSpace(GammaNamed gammaNamed, const SkMatrix44& toXYZD50, Named named);
120 
121  const GammaNamed fGammaNamed;
122  const SkMatrix44 fToXYZD50;
123  const Named fNamed;
124 };
125 
126 #endif
bool gammaCloseToSRGB() const
Returns true if the color space gamma is near enough to be approximated as sRGB.
Definition: SkColorSpace.h:85
Definition: SkColorSpace.h:16
Definition: SkMatrix44.h:129
Definition: SkRefCnt.h:135
const SkMatrix44 & xyz() const
Returns the matrix used to transform src gamut to XYZ D50.
Definition: SkColorSpace.h:80
SkData holds an immutable data buffer.
Definition: SkData.h:22
GammaNamed
Definition: SkColorSpace.h:28
Gamma is represented by a look-up table, a parametric curve, or an uncommon exponential curve...
Definition: SkColorSpace.h:47
To be used by UMA code only.
Definition: SkColorSpace.h:52
Gamma curve is a close match to the canonical sRGB curve, which has a short linear segment followed b...
Definition: SkColorSpace.h:35
Gamma curve is a close match to the 2.2f exponential curve.
Definition: SkColorSpace.h:41
Named
Common, named profiles that we can recognize.
Definition: SkColorSpace.h:22