A few changes to reduce the diff
[platform/upstream/libSkiaSharp.git] / src / c / xamarin / sk_x_colorfilter.cpp
1 /*
2  * Copyright 2016 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 "SkColorCubeFilter.h"
9 #include "SkColorMatrixFilter.h"
10 #include "SkLumaColorFilter.h"
11 #include "SkTableColorFilter.h"
12
13 #include "xamarin/sk_x_colorfilter.h"
14
15 #include "../sk_types_priv.h"
16 #include "sk_x_types_priv.h"
17
18 void sk_colorfilter_unref(sk_colorfilter_t* filter) {
19     SkSafeUnref(AsColorFilter(filter));
20 }
21
22 sk_colorfilter_t* sk_colorfilter_new_mode(sk_color_t c, sk_xfermode_mode_t cmode) {
23
24     sk_sp<SkColorFilter> filter = SkColorFilter::MakeModeFilter(
25         c,
26         (SkXfermode::Mode)cmode);
27     return ToColorFilter(filter.release());
28 }
29
30 sk_colorfilter_t* sk_colorfilter_new_lighting(sk_color_t mul, sk_color_t add) {
31
32     sk_sp<SkColorFilter> filter = SkColorMatrixFilter::MakeLightingFilter(
33         mul,
34         add);
35     return ToColorFilter(filter.release());
36 }
37
38 sk_colorfilter_t* sk_colorfilter_new_compose(sk_colorfilter_t* outer, sk_colorfilter_t* inner) {
39
40     sk_sp<SkColorFilter> filter = SkColorFilter::MakeComposeFilter(
41         sk_ref_sp(AsColorFilter(outer)),
42         sk_ref_sp(AsColorFilter(inner)));
43     return ToColorFilter(filter.release());
44 }
45
46 sk_colorfilter_t* sk_colorfilter_new_color_cube(sk_data_t* cubeData, int cubeDimension) {
47
48     sk_sp<SkColorFilter> filter = SkColorCubeFilter::Make(
49         sk_ref_sp(AsData(cubeData)),
50         cubeDimension);
51     return ToColorFilter(filter.release());
52 }
53
54 sk_colorfilter_t* sk_colorfilter_new_color_matrix(const float array[20]) {
55
56     sk_sp<SkColorFilter> filter = SkColorFilter::MakeMatrixFilterRowMajor255(
57         array);
58     return ToColorFilter(filter.release());
59 }
60
61 sk_colorfilter_t* sk_colorfilter_new_luma_color() {
62
63     sk_sp<SkColorFilter> filter = SkLumaColorFilter::Make();
64     return ToColorFilter(filter.release());
65 }
66
67 sk_colorfilter_t* sk_colorfilter_new_table(const uint8_t table[256]) {
68
69     sk_sp<SkColorFilter> filter = SkTableColorFilter::Make(table);
70     return ToColorFilter(filter.release());
71 }
72
73 sk_colorfilter_t* sk_colorfilter_new_table_argb(const uint8_t tableA[256], const uint8_t tableR[256], const uint8_t tableG[256], const uint8_t tableB[256]) {
74     sk_sp<SkColorFilter> filter = SkTableColorFilter::MakeARGB(tableA, tableR, tableG, tableB);
75     return ToColorFilter(filter.release());
76 }