2 * Copyright 2017 Xamarin Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #include "SkColorSpace.h"
10 #include "sk_colorspace.h"
12 #include "sk_types_priv.h"
14 void sk_colorspace_unref(sk_colorspace_t* cColorSpace) {
15 SkSafeUnref(AsColorSpace(cColorSpace));
18 sk_colorspace_t* sk_colorspace_new_srgb() {
19 return ToColorSpace(SkColorSpace::MakeSRGB().release());
22 sk_colorspace_t* sk_colorspace_new_srgb_linear() {
23 return ToColorSpace(SkColorSpace::MakeSRGBLinear().release());
26 sk_colorspace_t* sk_colorspace_new_icc(const void* input, size_t len) {
27 return ToColorSpace(SkColorSpace::MakeICC(input, len).release());
30 sk_colorspace_t* sk_colorspace_new_rgb_with_gamma(sk_colorspace_render_target_gamma_t gamma, const sk_matrix44_t* toXYZD50) {
31 return ToColorSpace(SkColorSpace::MakeRGB((SkColorSpace::RenderTargetGamma)gamma, AsMatrix44(*toXYZD50)).release());
34 sk_colorspace_t* sk_colorspace_new_rgb_with_gamma_and_gamut(sk_colorspace_render_target_gamma_t gamma, sk_colorspace_gamut_t gamut) {
35 return ToColorSpace(SkColorSpace::MakeRGB((SkColorSpace::RenderTargetGamma)gamma, (SkColorSpace::Gamut)gamut).release());
38 sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs(const sk_colorspace_transfer_fn_t* coeffs, const sk_matrix44_t* toXYZD50) {
39 return ToColorSpace(SkColorSpace::MakeRGB(AsColorSpaceTransferFn(*coeffs), AsMatrix44(*toXYZD50)).release());
42 sk_colorspace_t* sk_colorspace_new_rgb_with_coeffs_and_gamut(const sk_colorspace_transfer_fn_t* coeffs, sk_colorspace_gamut_t gamut) {
43 return ToColorSpace(SkColorSpace::MakeRGB(AsColorSpaceTransferFn(*coeffs), (SkColorSpace::Gamut)gamut).release());
46 bool sk_colorspace_gamma_close_to_srgb(const sk_colorspace_t* cColorSpace) {
47 return AsColorSpace(cColorSpace)->gammaCloseToSRGB();
50 bool sk_colorspace_gamma_is_linear(const sk_colorspace_t* cColorSpace) {
51 return AsColorSpace(cColorSpace)->gammaIsLinear();
54 bool sk_colorspace_equals(const sk_colorspace_t* src, const sk_colorspace_t* dst) {
55 return SkColorSpace::Equals(AsColorSpace(src), AsColorSpace(dst));
58 bool sk_colorspace_to_xyzd50(const sk_colorspace_t* cColorSpace, sk_matrix44_t* toXYZD50) {
59 return AsColorSpace(cColorSpace)->toXYZD50(AsMatrix44(toXYZD50));
62 bool sk_colorspaceprimaries_to_xyzd50(const sk_colorspaceprimaries_t* primaries, sk_matrix44_t* toXYZD50) {
63 return AsColorSpacePrimaries(primaries)->toXYZD50(AsMatrix44(toXYZD50));