2 * Copyright 2014 Google Inc.
3 * Copyright 2015 Xamarin Inc.
4 * Copyright 2017 Microsoft Corporation. All rights reserved.
6 * Use of this source code is governed by a BSD-style license that can be
7 * found in the LICENSE file.
10 #ifndef sk_imagefilter_DEFINED
11 #define sk_imagefilter_DEFINED
15 SK_C_PLUS_PLUS_BEGIN_GUARD
17 SK_C_API sk_imagefilter_croprect_t* sk_imagefilter_croprect_new(void);
18 SK_C_API sk_imagefilter_croprect_t* sk_imagefilter_croprect_new_with_rect(const sk_rect_t* rect, uint32_t flags);
19 SK_C_API void sk_imagefilter_croprect_destructor(sk_imagefilter_croprect_t* cropRect);
20 SK_C_API void sk_imagefilter_croprect_get_rect(sk_imagefilter_croprect_t* cropRect, sk_rect_t* rect);
21 SK_C_API uint32_t sk_imagefilter_croprect_get_flags(sk_imagefilter_croprect_t* cropRect);
22 SK_C_API void sk_imagefilter_unref(sk_imagefilter_t*);
23 SK_C_API sk_imagefilter_t* sk_imagefilter_new_matrix(
24 const sk_matrix_t* matrix,
25 sk_filter_quality_t quality,
26 sk_imagefilter_t* input /*NULL*/);
27 SK_C_API sk_imagefilter_t* sk_imagefilter_new_alpha_threshold(
28 const sk_irect_t* region,
31 sk_imagefilter_t* input /*NULL*/);
32 SK_C_API sk_imagefilter_t* sk_imagefilter_new_blur(
35 sk_imagefilter_t* input /*NULL*/,
36 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
37 SK_C_API sk_imagefilter_t* sk_imagefilter_new_color_filter(
39 sk_imagefilter_t* input /*NULL*/,
40 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
41 SK_C_API sk_imagefilter_t* sk_imagefilter_new_compose(
42 sk_imagefilter_t* outer,
43 sk_imagefilter_t* inner);
44 SK_C_API sk_imagefilter_t* sk_imagefilter_new_displacement_map_effect(
45 sk_displacement_map_effect_channel_selector_type_t xChannelSelector,
46 sk_displacement_map_effect_channel_selector_type_t yChannelSelector,
48 sk_imagefilter_t* displacement,
49 sk_imagefilter_t* color /*NULL*/,
50 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
51 SK_C_API sk_imagefilter_t* sk_imagefilter_new_drop_shadow(
57 sk_drop_shadow_image_filter_shadow_mode_t shadowMode,
58 sk_imagefilter_t* input /*NULL*/,
59 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
60 SK_C_API sk_imagefilter_t* sk_imagefilter_new_distant_lit_diffuse(
61 const sk_point3_t* direction,
62 sk_color_t lightColor,
65 sk_imagefilter_t* input /*NULL*/,
66 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
67 SK_C_API sk_imagefilter_t* sk_imagefilter_new_point_lit_diffuse(
68 const sk_point3_t* location,
69 sk_color_t lightColor,
72 sk_imagefilter_t* input /*NULL*/,
73 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
74 SK_C_API sk_imagefilter_t* sk_imagefilter_new_spot_lit_diffuse(
75 const sk_point3_t* location,
76 const sk_point3_t* target,
77 float specularExponent,
79 sk_color_t lightColor,
82 sk_imagefilter_t* input /*NULL*/,
83 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
84 SK_C_API sk_imagefilter_t* sk_imagefilter_new_distant_lit_specular(
85 const sk_point3_t* direction,
86 sk_color_t lightColor,
90 sk_imagefilter_t* input /*NULL*/,
91 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
92 SK_C_API sk_imagefilter_t* sk_imagefilter_new_point_lit_specular(
93 const sk_point3_t* location,
94 sk_color_t lightColor,
98 sk_imagefilter_t* input /*NULL*/,
99 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
100 SK_C_API sk_imagefilter_t* sk_imagefilter_new_spot_lit_specular(
101 const sk_point3_t* location,
102 const sk_point3_t* target,
103 float specularExponent,
105 sk_color_t lightColor,
109 sk_imagefilter_t* input /*NULL*/,
110 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
111 SK_C_API sk_imagefilter_t* sk_imagefilter_new_magnifier(
112 const sk_rect_t* src,
114 sk_imagefilter_t* input, /*NULL*/
115 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
116 SK_C_API sk_imagefilter_t* sk_imagefilter_new_matrix_convolution(
117 const sk_isize_t* kernelSize,
118 const float kernel[],
121 const sk_ipoint_t* kernelOffset,
122 sk_matrix_convolution_tilemode_t tileMode,
124 sk_imagefilter_t* input /*NULL*/,
125 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
126 SK_C_API sk_imagefilter_t* sk_imagefilter_new_merge(
127 sk_imagefilter_t* filters[],
129 const sk_blendmode_t modes[] /*NULL*/,
130 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
131 SK_C_API sk_imagefilter_t* sk_imagefilter_new_dilate(
134 sk_imagefilter_t* input /*NULL*/,
135 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
136 SK_C_API sk_imagefilter_t* sk_imagefilter_new_erode(
139 sk_imagefilter_t* input /*NULL*/,
140 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
141 SK_C_API sk_imagefilter_t* sk_imagefilter_new_offset(
144 sk_imagefilter_t* input /*NULL*/,
145 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
146 SK_C_API sk_imagefilter_t* sk_imagefilter_new_picture(
147 sk_picture_t* picture);
148 SK_C_API sk_imagefilter_t* sk_imagefilter_new_picture_with_croprect(
149 sk_picture_t* picture,
150 const sk_rect_t* cropRect);
151 SK_C_API sk_imagefilter_t* sk_imagefilter_new_picture_for_localspace(
152 sk_picture_t* picture,
153 const sk_rect_t* cropRect,
154 sk_filter_quality_t filterQuality);
155 SK_C_API sk_imagefilter_t* sk_imagefilter_new_tile(
156 const sk_rect_t* src,
157 const sk_rect_t* dst,
158 sk_imagefilter_t* input);
159 SK_C_API sk_imagefilter_t* sk_imagefilter_new_xfermode(
161 sk_imagefilter_t* background,
162 sk_imagefilter_t* foreground /*NULL*/,
163 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
164 SK_C_API sk_imagefilter_t* sk_imagefilter_new_arithmetic(
165 float k1, float k2, float k3, float k4,
167 sk_imagefilter_t* background,
168 sk_imagefilter_t* foreground /*NULL*/,
169 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
170 SK_C_API sk_imagefilter_t* sk_imagefilter_new_image_source(
172 const sk_rect_t* srcRect,
173 const sk_rect_t* dstRect,
174 sk_filter_quality_t filterQuality);
175 SK_C_API sk_imagefilter_t* sk_imagefilter_new_image_source_default(
177 SK_C_API sk_imagefilter_t* sk_imagefilter_new_paint(
178 const sk_paint_t* paint,
179 const sk_imagefilter_croprect_t* cropRect /*NULL*/);
181 SK_C_PLUS_PLUS_END_GUARD