Index: include/core/SkColorSpace.h |
diff --git a/include/core/SkColorSpace.h b/include/core/SkColorSpace.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9630fe4c2508b3e49383685abb21fe972f8101a7 |
--- /dev/null |
+++ b/include/core/SkColorSpace.h |
@@ -0,0 +1,75 @@ |
+/* |
+ * Copyright 2016 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef SkColorSpace_DEFINED |
+#define SkColorSpace_DEFINED |
+ |
+#include "SkMatrix44.h" |
+#include "SkRefCnt.h" |
+#include "../private/SkTemplates.h" |
+ |
+class SkColorSpace : public SkRefCnt { |
+public: |
+ |
+ /** |
+ * Common, named profiles that we can recognize. |
+ */ |
+ enum Named { |
+ kUnknown_Named, |
+ kSRGB_Named, |
+ kAdobeRGB_Named, |
+ }; |
+ |
+ /** |
+ * Create an SkColorSpace from the src gamma and a transform from src gamut to D50 XYZ. |
+ */ |
+ static sk_sp<SkColorSpace> NewRGB(float gammas[3], const SkMatrix44& toXYZD50); |
+ |
+ /** |
+ * Create a common, named SkColorSpace. |
+ */ |
+ static sk_sp<SkColorSpace> NewNamed(Named); |
+ |
+ /** |
+ * Create an SkColorSpace from an ICC profile. |
+ */ |
+ static sk_sp<SkColorSpace> NewICC(const void*, size_t); |
+ |
+ enum GammaNamed { |
+ kLinear_GammaNamed, |
+ |
+ /** |
+ * Gamma curve is a close match to the 2.2f exponential curve. This is by far |
+ * the most common gamma, and is used by sRGB and Adobe RGB profiles. |
+ */ |
+ k2Dot2Curve_GammaNamed, |
+ |
+ /** |
+ * Gamma is represented by a look-up table, a parametric curve, or an uncommon |
+ * exponential curve. Or there is an additional pre-processing step before the |
+ * applying the gamma. |
+ */ |
+ kNonStandard_GammaNamed, |
+ }; |
+ |
+ GammaNamed gammaNamed() const { return fGammaNamed; } |
+ |
+ /** |
+ * Returns the matrix used to transform src gamut to XYZ D50. |
+ */ |
+ SkMatrix44 xyz() const { return fToXYZD50; } |
+ |
+protected: |
+ |
+ SkColorSpace(GammaNamed gammaNamed, const SkMatrix44& toXYZD50, Named named); |
+ |
+ const GammaNamed fGammaNamed; |
+ const SkMatrix44 fToXYZD50; |
+ const Named fNamed; |
+}; |
+ |
+#endif |