2 * Copyright 2016 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 "SkColorCubeFilter.h"
9 #include "SkColorMatrixFilter.h"
10 #include "SkLumaColorFilter.h"
11 #include "SkTableColorFilter.h"
13 #include "xamarin/sk_x_colorfilter.h"
15 #include "../sk_types_priv.h"
16 #include "sk_x_types_priv.h"
18 void sk_colorfilter_unref(sk_colorfilter_t* filter) {
19 SkSafeUnref(AsColorFilter(filter));
22 sk_colorfilter_t* sk_colorfilter_new_mode(sk_color_t c, sk_xfermode_mode_t cmode) {
24 sk_sp<SkColorFilter> filter = SkColorFilter::MakeModeFilter(
26 (SkXfermode::Mode)cmode);
27 return ToColorFilter(filter.release());
30 sk_colorfilter_t* sk_colorfilter_new_lighting(sk_color_t mul, sk_color_t add) {
32 sk_sp<SkColorFilter> filter = SkColorMatrixFilter::MakeLightingFilter(
35 return ToColorFilter(filter.release());
38 sk_colorfilter_t* sk_colorfilter_new_compose(sk_colorfilter_t* outer, sk_colorfilter_t* inner) {
40 sk_sp<SkColorFilter> filter = SkColorFilter::MakeComposeFilter(
41 sk_ref_sp(AsColorFilter(outer)),
42 sk_ref_sp(AsColorFilter(inner)));
43 return ToColorFilter(filter.release());
46 sk_colorfilter_t* sk_colorfilter_new_color_cube(sk_data_t* cubeData, int cubeDimension) {
48 sk_sp<SkColorFilter> filter = SkColorCubeFilter::Make(
49 sk_ref_sp(AsData(cubeData)),
51 return ToColorFilter(filter.release());
54 sk_colorfilter_t* sk_colorfilter_new_color_matrix(const float array[20]) {
56 sk_sp<SkColorFilter> filter = SkColorFilter::MakeMatrixFilterRowMajor255(
58 return ToColorFilter(filter.release());
61 sk_colorfilter_t* sk_colorfilter_new_luma_color() {
63 sk_sp<SkColorFilter> filter = SkLumaColorFilter::Make();
64 return ToColorFilter(filter.release());
67 sk_colorfilter_t* sk_colorfilter_new_table(const uint8_t table[256]) {
69 sk_sp<SkColorFilter> filter = SkTableColorFilter::Make(table);
70 return ToColorFilter(filter.release());
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());