Updating Xamarin/Microsoft file headers
[platform/upstream/libSkiaSharp.git] / include / c / sk_imagefilter.h
1 /*
2  * Copyright 2014 Google Inc.
3  * Copyright 2015 Xamarin Inc.
4  * Copyright 2017 Microsoft Corporation. All rights reserved.
5  *
6  * Use of this source code is governed by a BSD-style license that can be
7  * found in the LICENSE file.
8  */
9
10 #ifndef sk_imagefilter_DEFINED
11 #define sk_imagefilter_DEFINED
12
13 #include "sk_types.h"
14
15 SK_C_PLUS_PLUS_BEGIN_GUARD
16
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,
29     float innerThreshold,
30     float outerThreshold, 
31     sk_imagefilter_t* input /*NULL*/);
32 SK_C_API sk_imagefilter_t* sk_imagefilter_new_blur(
33     float sigmaX,
34     float sigmaY,
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(
38     sk_colorfilter_t* cf,
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,
47     float scale,
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(
52     float dx,
53     float dy,
54     float sigmaX,
55     float sigmaY,
56     sk_color_t color, 
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,
63     float surfaceScale,
64     float kd,
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,
70     float surfaceScale, 
71     float kd,
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,
78     float cutoffAngle,
79     sk_color_t lightColor, 
80     float surfaceScale,
81     float kd,
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, 
87     float surfaceScale,
88     float ks,
89     float shininess, 
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, 
95     float surfaceScale, 
96     float ks,
97     float shininess, 
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, 
104     float cutoffAngle,
105     sk_color_t lightColor, 
106     float surfaceScale,
107     float ks,
108     float shininess,
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, 
113     float inset,
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[],
119     float gain,
120     float bias,
121     const sk_ipoint_t* kernelOffset,
122     sk_matrix_convolution_tilemode_t tileMode,
123     bool convolveAlpha,
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[],
128     int count,
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(
132     int radiusX, 
133     int radiusY, 
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(
137     int radiusX,
138     int radiusY,
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(
142     float dx,
143     float dy,
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(
160     sk_blendmode_t mode,
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,
166     bool enforcePMColor,
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(
171     sk_image_t* image,
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(
176     sk_image_t* image);
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*/);
180
181 SK_C_PLUS_PLUS_END_GUARD
182
183 #endif