Merge branch 'xamarin-mobile-bindings' into update-m59
[platform/upstream/libSkiaSharp.git] / src / c / sk_colorspace.cpp
1 /*
2  * Copyright 2017 Xamarin 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 #include "SkColorSpace.h"
9
10 #include "sk_colorspace.h"
11
12 #include "sk_types_priv.h"
13
14 void sk_colorspace_unref(sk_colorspace_t* cColorSpace) {
15     SkSafeUnref(AsColorSpace(cColorSpace));
16 }
17
18 sk_colorspace_t* sk_colorspace_new_srgb() {
19     return ToColorSpace(SkColorSpace::MakeSRGB().release());
20 }
21
22 sk_colorspace_t* sk_colorspace_new_srgb_linear() {
23     return ToColorSpace(SkColorSpace::MakeSRGBLinear().release());
24 }
25
26 sk_colorspace_t* sk_colorspace_new_icc(const void* input, size_t len) {
27     return ToColorSpace(SkColorSpace::MakeICC(input, len).release());
28 }
29
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());
32 }
33
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());
36 }
37
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());
40 }
41
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());
44 }
45
46 bool sk_colorspace_gamma_close_to_srgb(const sk_colorspace_t* cColorSpace) {
47     return AsColorSpace(cColorSpace)->gammaCloseToSRGB();
48 }
49
50 bool sk_colorspace_gamma_is_linear(const sk_colorspace_t* cColorSpace) {
51     return AsColorSpace(cColorSpace)->gammaIsLinear();
52 }
53
54 bool sk_colorspace_equals(const sk_colorspace_t* src, const sk_colorspace_t* dst) {
55     return SkColorSpace::Equals(AsColorSpace(src), AsColorSpace(dst));
56 }
57
58 bool sk_colorspace_to_xyzd50(const sk_colorspace_t* cColorSpace, sk_matrix44_t* toXYZD50) {
59     return AsColorSpace(cColorSpace)->toXYZD50(AsMatrix44(toXYZD50));
60 }
61
62 bool sk_colorspaceprimaries_to_xyzd50(const sk_colorspaceprimaries_t* primaries, sk_matrix44_t* toXYZD50) {
63     return AsColorSpacePrimaries(primaries)->toXYZD50(AsMatrix44(toXYZD50));
64 }