1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19  
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion alities on the wrap.utils pakage
23 
24 
25 module cairo.c.functions;
26 
27 private import std.stdio;
28 private import cairo.c.types;
29 
30 version (Windows)
31 	static immutable LIBRARY_CAIRO = ["libcairo-2.dll"];
32 else version (OSX)
33 	static immutable LIBRARY_CAIRO = ["libcairo.dylib"];
34 else
35 	static immutable LIBRARY_CAIRO = ["libcairo.so.2"];
36 
37 __gshared extern(C)
38 {
39 	// cairo.Context
40 
41 	cairo_t* cairo_create(cairo_surface_t* target);
42 	cairo_t* cairo_reference(cairo_t* cr);
43 	void cairo_destroy(cairo_t* cr);
44 	cairo_status_t cairo_status(cairo_t* cr);
45 	void cairo_save(cairo_t* cr);
46 	void cairo_restore(cairo_t* cr);
47 	cairo_surface_t* cairo_get_target(cairo_t* cr);
48 	void cairo_push_group(cairo_t* cr);
49 	void cairo_push_group_with_content(cairo_t* cr, cairo_content_t content);
50 	cairo_pattern_t* cairo_pop_group(cairo_t* cr);
51 	void cairo_pop_group_to_source(cairo_t* cr);
52 	cairo_surface_t* cairo_get_group_target(cairo_t* cr);
53 	void cairo_set_source_rgb(cairo_t* cr, double red, double green, double blue);
54 	void cairo_set_source_rgba(cairo_t* cr, double red, double green, double blue, double alpha);
55 	void cairo_set_source(cairo_t* cr, cairo_pattern_t* source);
56 	void cairo_set_source_surface(cairo_t* cr, cairo_surface_t* surface, double x, double y);
57 	cairo_pattern_t* cairo_get_source(cairo_t* cr);
58 	void cairo_set_antialias(cairo_t* cr, cairo_antialias_t antialias);
59 	cairo_antialias_t cairo_get_antialias(cairo_t* cr);
60 	void cairo_set_dash(cairo_t* cr, double* dashes, int numDashes, double offset);
61 	int cairo_get_dash_count(cairo_t* cr);
62 	void cairo_get_dash(cairo_t* cr, double* dashes, double* offset);
63 	void cairo_set_fill_rule(cairo_t* cr, cairo_fill_rule_t fillRule);
64 	cairo_fill_rule_t cairo_get_fill_rule(cairo_t* cr);
65 	void cairo_set_line_cap(cairo_t* cr, cairo_line_cap_t lineCap);
66 	cairo_line_cap_t cairo_get_line_cap(cairo_t* cr);
67 	void cairo_set_line_join(cairo_t* cr, cairo_line_join_t lineJoin);
68 	cairo_line_join_t cairo_get_line_join(cairo_t* cr);
69 	void cairo_set_line_width(cairo_t* cr, double width);
70 	double cairo_get_line_width(cairo_t* cr);
71 	void cairo_set_miter_limit(cairo_t* cr, double limit);
72 	double cairo_get_miter_limit(cairo_t* cr);
73 	void cairo_set_operator(cairo_t* cr, cairo_operator_t op);
74 	cairo_operator_t cairo_get_operator(cairo_t* cr);
75 	void cairo_set_tolerance(cairo_t* cr, double tolerance);
76 	double cairo_get_tolerance(cairo_t* cr);
77 	void cairo_clip(cairo_t* cr);
78 	void cairo_clip_preserve(cairo_t* cr);
79 	void cairo_clip_extents(cairo_t* cr, double* x1, double* y1, double* x2, double* y2);
80 	cairo_bool_t cairo_in_clip(cairo_t* cr, double x, double y);
81 	void cairo_reset_clip(cairo_t* cr);
82 	void cairo_rectangle_list_destroy(cairo_rectangle_list_t* rectangleList);
83 	cairo_rectangle_list_t* cairo_copy_clip_rectangle_list(cairo_t* cr);
84 	void cairo_fill(cairo_t* cr);
85 	void cairo_fill_preserve(cairo_t* cr);
86 	void cairo_fill_extents(cairo_t* cr, double* x1, double* y1, double* x2, double* y2);
87 	cairo_bool_t cairo_in_fill(cairo_t* cr, double x, double y);
88 	void cairo_mask(cairo_t* cr, cairo_pattern_t* pattern);
89 	void cairo_mask_surface(cairo_t* cr, cairo_surface_t* surface, double surfaceX, double surfaceY);
90 	void cairo_paint(cairo_t* cr);
91 	void cairo_paint_with_alpha(cairo_t* cr, double alpha);
92 	void cairo_stroke(cairo_t* cr);
93 	void cairo_stroke_preserve(cairo_t* cr);
94 	void cairo_stroke_extents(cairo_t* cr, double* x1, double* y1, double* x2, double* y2);
95 	cairo_bool_t cairo_in_stroke(cairo_t* cr, double x, double y);
96 	void cairo_copy_page(cairo_t* cr);
97 	void cairo_show_page(cairo_t* cr);
98 	uint cairo_get_reference_count(cairo_t* cr);
99 	cairo_status_t cairo_set_user_data(cairo_t* cr, cairo_user_data_key_t* key, void* userData, cairo_destroy_func_t destroy);
100 	void* cairo_get_user_data(cairo_t* cr, cairo_user_data_key_t* key);
101 	cairo_path_t* cairo_copy_path(cairo_t* cr);
102 	cairo_path_t* cairo_copy_path_flat(cairo_t* cr);
103 	void cairo_path_destroy(cairo_path_t* path);
104 	void cairo_append_path(cairo_t* cr, cairo_path_t* path);
105 	cairo_bool_t cairo_has_current_point(cairo_t* cr);
106 	void cairo_get_current_point(cairo_t* cr, double* x, double* y);
107 	void cairo_new_path(cairo_t* cr);
108 	void cairo_new_sub_path(cairo_t* cr);
109 	void cairo_close_path(cairo_t* cr);
110 	void cairo_arc(cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2);
111 	void cairo_arc_negative(cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2);
112 	void cairo_curve_to(cairo_t* cr, double x1, double y1, double x2, double y2, double x3, double y3);
113 	void cairo_line_to(cairo_t* cr, double x, double y);
114 	void cairo_move_to(cairo_t* cr, double x, double y);
115 	void cairo_rectangle(cairo_t* cr, double x, double y, double width, double height);
116 	void cairo_glyph_path(cairo_t* cr, cairo_glyph_t* glyphs, int numGlyphs);
117 	void cairo_text_path(cairo_t* cr, char* utf8);
118 	void cairo_rel_curve_to(cairo_t* cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
119 	void cairo_rel_line_to(cairo_t* cr, double dx, double dy);
120 	void cairo_rel_move_to(cairo_t* cr, double dx, double dy);
121 	void cairo_path_extents(cairo_t* cr, double* x1, double* y1, double* x2, double* y2);
122 	void cairo_translate(cairo_t* cr, double tx, double ty);
123 	void cairo_scale(cairo_t* cr, double sx, double sy);
124 	void cairo_rotate(cairo_t* cr, double angle);
125 	void cairo_transform(cairo_t* cr, cairo_matrix_t* matrix);
126 	void cairo_set_matrix(cairo_t* cr, cairo_matrix_t* matrix);
127 	void cairo_get_matrix(cairo_t* cr, cairo_matrix_t* matrix);
128 	void cairo_identity_matrix(cairo_t* cr);
129 	void cairo_user_to_device(cairo_t* cr, double* x, double* y);
130 	void cairo_user_to_device_distance(cairo_t* cr, double* dx, double* dy);
131 	void cairo_device_to_user(cairo_t* cr, double* x, double* y);
132 	void cairo_device_to_user_distance(cairo_t* cr, double* dx, double* dy);
133 	void cairo_select_font_face(cairo_t* cr, char* family, cairo_font_slant_t slant, cairo_font_weight_t weight);
134 	void cairo_set_font_size(cairo_t* cr, double size);
135 	void cairo_set_font_matrix(cairo_t* cr, cairo_matrix_t* matrix);
136 	void cairo_get_font_matrix(cairo_t* cr, cairo_matrix_t* matrix);
137 	void cairo_set_font_options(cairo_t* cr, cairo_font_options_t* options);
138 	void cairo_get_font_options(cairo_t* cr, cairo_font_options_t* options);
139 	void cairo_set_font_face(cairo_t* cr, cairo_font_face_t* fontFace);
140 	cairo_font_face_t* cairo_get_font_face(cairo_t* cr);
141 	void cairo_set_scaled_font(cairo_t* cr, cairo_scaled_font_t* scaledFont);
142 	cairo_scaled_font_t* cairo_get_scaled_font(cairo_t* cr);
143 	void cairo_show_text(cairo_t* cr, char* utf8);
144 	void cairo_show_glyphs(cairo_t* cr, cairo_glyph_t* glyphs, int numGlyphs);
145 	void cairo_show_text_glyphs(cairo_t* cr, char* utf8, int utf8_Len, cairo_glyph_t* glyphs, int numGlyphs, cairo_text_cluster_t* clusters, int numClusters, cairo_text_cluster_flags_t clusterFlags);
146 	void cairo_font_extents(cairo_t* cr, cairo_font_extents_t* extents);
147 	void cairo_text_extents(cairo_t* cr, char* utf8, cairo_text_extents_t* extents);
148 	void cairo_glyph_extents(cairo_t* cr, cairo_glyph_t* glyphs, int numGlyphs, cairo_text_extents_t* extents);
149 	cairo_font_face_t* cairo_toy_font_face_create(char* family, cairo_font_slant_t slant, cairo_font_weight_t weight);
150 	char* cairo_toy_font_face_get_family(cairo_font_face_t* fontFace);
151 	cairo_font_slant_t cairo_toy_font_face_get_slant(cairo_font_face_t* fontFace);
152 	cairo_font_weight_t cairo_toy_font_face_get_weight(cairo_font_face_t* fontFace);
153 	cairo_glyph_t* cairo_glyph_allocate(int numGlyphs);
154 	void cairo_glyph_free(cairo_glyph_t* glyphs);
155 	cairo_text_cluster_t* cairo_text_cluster_allocate(int numClusters);
156 	void cairo_text_cluster_free(cairo_text_cluster_t* clusters);
157 
158 	// cairo.Pattern
159 
160 	void cairo_pattern_add_color_stop_rgb(cairo_pattern_t* pattern, double offset, double red, double green, double blue);
161 	void cairo_pattern_add_color_stop_rgba(cairo_pattern_t* pattern, double offset, double red, double green, double blue, double alpha);
162 	cairo_status_t cairo_pattern_get_color_stop_count(cairo_pattern_t* pattern, int* count);
163 	cairo_status_t cairo_pattern_get_color_stop_rgba(cairo_pattern_t* pattern, int index, double* offset, double* red, double* green, double* blue, double* alpha);
164 	cairo_pattern_t* cairo_pattern_create_rgb(double red, double green, double blue);
165 	cairo_pattern_t* cairo_pattern_create_rgba(double red, double green, double blue, double alpha);
166 	cairo_status_t cairo_pattern_get_rgba(cairo_pattern_t* pattern, double* red, double* green, double* blue, double* alpha);
167 	cairo_pattern_t* cairo_pattern_create_for_surface(cairo_surface_t* surface);
168 	cairo_status_t cairo_pattern_get_surface(cairo_pattern_t* pattern, cairo_surface_t** surface);
169 	cairo_pattern_t* cairo_pattern_create_linear(double x0, double y0, double x1, double y1);
170 	cairo_status_t cairo_pattern_get_linear_points(cairo_pattern_t* pattern, double* x0, double* y0, double* x1, double* y1);
171 	cairo_pattern_t* cairo_pattern_create_radial(double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
172 	cairo_status_t cairo_pattern_get_radial_circles(cairo_pattern_t* pattern, double* x0, double* y0, double* r0, double* x1, double* y1, double* r1);
173 	cairo_pattern_t* cairo_pattern_create_mesh();
174 	cairo_pattern_t* cairo_pattern_reference(cairo_pattern_t* pattern);
175 	void cairo_pattern_destroy(cairo_pattern_t* pattern);
176 	cairo_status_t cairo_pattern_status(cairo_pattern_t* pattern);
177 	void cairo_pattern_set_extend(cairo_pattern_t* pattern, cairo_extend_t extend);
178 	cairo_extend_t cairo_pattern_get_extend(cairo_pattern_t* pattern);
179 	void cairo_pattern_set_filter(cairo_pattern_t* pattern, cairo_filter_t filter);
180 	cairo_filter_t cairo_pattern_get_filter(cairo_pattern_t* pattern);
181 	void cairo_pattern_set_matrix(cairo_pattern_t* pattern, cairo_matrix_t* matrix);
182 	void cairo_pattern_get_matrix(cairo_pattern_t* pattern, cairo_matrix_t* matrix);
183 	cairo_pattern_type_t cairo_pattern_get_type(cairo_pattern_t* pattern);
184 	uint cairo_pattern_get_reference_count(cairo_pattern_t* pattern);
185 	cairo_status_t cairo_pattern_set_user_data(cairo_pattern_t* pattern, cairo_user_data_key_t* key, void* userData, cairo_destroy_func_t destroy);
186 	void* cairo_pattern_get_user_data(cairo_pattern_t* pattern, cairo_user_data_key_t* key);
187 
188 	// cairo.MeshPattern
189 
190 	void cairo_mesh_pattern_begin_patch(cairo_pattern_t* pattern);
191 	void cairo_mesh_pattern_end_patch(cairo_pattern_t* pattern);
192 	void cairo_mesh_pattern_move_to(cairo_pattern_t* pattern, double x, double y);
193 	void cairo_mesh_pattern_line_to(cairo_pattern_t* pattern, double x, double y);
194 	void cairo_mesh_pattern_curve_to(cairo_pattern_t* pattern, double x1, double y1, double x2, double y2, double x3, double y3);
195 	void cairo_mesh_pattern_set_control_point(cairo_pattern_t* pattern, uint pointNum, double x, double y);
196 	void cairo_mesh_pattern_set_corner_color_rgb(cairo_pattern_t* pattern, uint cornerNum, double red, double green, double blue);
197 	void cairo_mesh_pattern_set_corner_color_rgba(cairo_pattern_t* pattern, uint cornerNum, double red, double green, double blue, double alpha);
198 	cairo_status_t cairo_mesh_pattern_get_patch_count(cairo_pattern_t* pattern, uint* count);
199 	cairo_path_t* cairo_mesh_pattern_get_path(cairo_pattern_t* pattern, uint patchNum);
200 	cairo_status_t cairo_mesh_pattern_get_control_point(cairo_pattern_t* pattern, uint patchNum, uint pointNum, double* x, double* y);
201 	cairo_status_t cairo_mesh_pattern_get_corner_color_rgba(cairo_pattern_t* pattern, uint patchNum, uint cornerNum, double* red, double* green, double* blue, double* alpha);
202 
203 	// cairo.Region
204 
205 	cairo_region_t* cairo_region_create();
206 	cairo_region_t* cairo_region_create_rectangle(cairo_rectangle_int_t* rectangle);
207 	cairo_region_t* cairo_region_create_rectangles(cairo_rectangle_int_t* rects, int count);
208 	cairo_region_t* cairo_region_copy(cairo_region_t* original);
209 	cairo_region_t* cairo_region_reference(cairo_region_t* region);
210 	void cairo_region_destroy(cairo_region_t* region);
211 	cairo_status_t cairo_region_status(cairo_region_t* region);
212 	void cairo_region_get_extents(cairo_region_t* region, cairo_rectangle_int_t* extents);
213 	int cairo_region_num_rectangles(cairo_region_t* region);
214 	void cairo_region_get_rectangle(cairo_region_t* region, int nth, cairo_rectangle_int_t* rectangle);
215 	cairo_bool_t cairo_region_is_empty(cairo_region_t* region);
216 	cairo_bool_t cairo_region_contains_point(cairo_region_t* region, int x, int y);
217 	cairo_region_overlap_t cairo_region_contains_rectangle(cairo_region_t* region, cairo_rectangle_int_t* rectangle);
218 	cairo_bool_t cairo_region_equal(cairo_region_t* a, cairo_region_t* b);
219 	void cairo_region_translate(cairo_region_t* region, int dx, int dy);
220 	cairo_status_t cairo_region_intersect(cairo_region_t* dst, cairo_region_t* other);
221 	cairo_status_t cairo_region_intersect_rectangle(cairo_region_t* dst, cairo_rectangle_int_t* rectangle);
222 	cairo_status_t cairo_region_subtract(cairo_region_t* dst, cairo_region_t* other);
223 	cairo_status_t cairo_region_subtract_rectangle(cairo_region_t* dst, cairo_rectangle_int_t* rectangle);
224 	cairo_status_t cairo_region_union(cairo_region_t* dst, cairo_region_t* other);
225 	cairo_status_t cairo_region_union_rectangle(cairo_region_t* dst, cairo_rectangle_int_t* rectangle);
226 	cairo_status_t cairo_region_xor(cairo_region_t* dst, cairo_region_t* other);
227 	cairo_status_t cairo_region_xor_rectangle(cairo_region_t* dst, cairo_rectangle_int_t* rectangle);
228 
229 	// cairo.RasterSource
230 
231 	cairo_pattern_t* cairo_pattern_create_raster_source(void* userData, cairo_content_t content, int width, int height);
232 	void cairo_raster_source_pattern_set_callback_data(cairo_pattern_t* pattern, void* data);
233 	void* cairo_raster_source_pattern_get_callback_data(cairo_pattern_t* pattern);
234 	void cairo_raster_source_pattern_set_acquire(cairo_pattern_t* pattern, cairo_raster_source_acquire_func_t acquire, cairo_raster_source_release_func_t release);
235 	void cairo_raster_source_pattern_get_acquire(cairo_pattern_t* pattern, cairo_raster_source_acquire_func_t* acquire, cairo_raster_source_release_func_t* release);
236 	void cairo_raster_source_pattern_set_snapshot(cairo_pattern_t* pattern, cairo_raster_source_snapshot_func_t snapshot);
237 	cairo_raster_source_snapshot_func_t cairo_raster_source_pattern_get_snapshot(cairo_pattern_t* pattern);
238 	void cairo_raster_source_pattern_set_copy(cairo_pattern_t* pattern, cairo_raster_source_copy_func_t copy);
239 	cairo_raster_source_copy_func_t cairo_raster_source_pattern_get_copy(cairo_pattern_t* pattern);
240 	void cairo_raster_source_pattern_set_finish(cairo_pattern_t* pattern, cairo_raster_source_finish_func_t finish);
241 	cairo_raster_source_finish_func_t cairo_raster_source_pattern_get_finish(cairo_pattern_t* pattern);
242 
243 	// cairo.FontFace
244 
245 	cairo_font_face_t* cairo_font_face_reference(cairo_font_face_t* fontFace);
246 	void cairo_font_face_destroy(cairo_font_face_t* fontFace);
247 	cairo_status_t cairo_font_face_status(cairo_font_face_t* fontFace);
248 	cairo_font_type_t cairo_font_face_get_type(cairo_font_face_t* fontFace);
249 	uint cairo_font_face_get_reference_count(cairo_font_face_t* fontFace);
250 	cairo_status_t cairo_font_face_set_user_data(cairo_font_face_t* fontFace, cairo_user_data_key_t* key, void* userData, cairo_destroy_func_t destroy);
251 	void* cairo_font_face_get_user_data(cairo_font_face_t* fontFace, cairo_user_data_key_t* key);
252 
253 	// cairo.ScaledFont
254 
255 	cairo_scaled_font_t* cairo_scaled_font_create(cairo_font_face_t* fontFace, cairo_matrix_t* fontMatrix, cairo_matrix_t* ctm, cairo_font_options_t* options);
256 	cairo_scaled_font_t* cairo_scaled_font_reference(cairo_scaled_font_t* scaledFont);
257 	void cairo_scaled_font_destroy(cairo_scaled_font_t* scaledFont);
258 	cairo_status_t cairo_scaled_font_status(cairo_scaled_font_t* scaledFont);
259 	void cairo_scaled_font_extents(cairo_scaled_font_t* scaledFont, cairo_font_extents_t* extents);
260 	void cairo_scaled_font_text_extents(cairo_scaled_font_t* scaledFont, char* utf8, cairo_text_extents_t* extents);
261 	void cairo_scaled_font_glyph_extents(cairo_scaled_font_t* scaledFont, cairo_glyph_t* glyphs, int numGlyphs, cairo_text_extents_t* extents);
262 	cairo_status_t cairo_scaled_font_text_to_glyphs(cairo_scaled_font_t* scaledFont, double x, double y, char* utf8, int utf8_Len, cairo_glyph_t** glyphs, int* numGlyphs, cairo_text_cluster_t** clusters, int* numClusters, cairo_text_cluster_flags_t* clusterFlags);
263 	cairo_font_face_t* cairo_scaled_font_get_font_face(cairo_scaled_font_t* scaledFont);
264 	void cairo_scaled_font_get_font_options(cairo_scaled_font_t* scaledFont, cairo_font_options_t* options);
265 	void cairo_scaled_font_get_font_matrix(cairo_scaled_font_t* scaledFont, cairo_matrix_t* fontMatrix);
266 	void cairo_scaled_font_get_ctm(cairo_scaled_font_t* scaledFont, cairo_matrix_t* ctm);
267 	void cairo_scaled_font_get_scale_matrix(cairo_scaled_font_t* scaledFont, cairo_matrix_t* scaleMatrix);
268 	cairo_font_type_t cairo_scaled_font_get_type(cairo_scaled_font_t* scaledFont);
269 	uint cairo_scaled_font_get_reference_count(cairo_scaled_font_t* scaledFont);
270 	cairo_status_t cairo_scaled_font_set_user_data(cairo_scaled_font_t* scaledFont, cairo_user_data_key_t* key, void* userData, cairo_destroy_func_t destroy);
271 	void* cairo_scaled_font_get_user_data(cairo_scaled_font_t* scaledFont, cairo_user_data_key_t* key);
272 
273 	// cairo.FontOption
274 
275 	cairo_font_options_t* cairo_font_options_create();
276 	cairo_font_options_t* cairo_font_options_copy(cairo_font_options_t* original);
277 	void cairo_font_options_destroy(cairo_font_options_t* options);
278 	cairo_status_t cairo_font_options_status(cairo_font_options_t* options);
279 	void cairo_font_options_merge(cairo_font_options_t* options, cairo_font_options_t* other);
280 	ulong cairo_font_options_hash(cairo_font_options_t* options);
281 	cairo_bool_t cairo_font_options_equal(cairo_font_options_t* options, cairo_font_options_t* other);
282 	void cairo_font_options_set_antialias(cairo_font_options_t* options, cairo_antialias_t antialias);
283 	cairo_antialias_t cairo_font_options_get_antialias(cairo_font_options_t* options);
284 	void cairo_font_options_set_subpixel_order(cairo_font_options_t* options, cairo_subpixel_order_t subpixelOrder);
285 	cairo_subpixel_order_t cairo_font_options_get_subpixel_order(cairo_font_options_t* options);
286 	void cairo_font_options_set_hint_style(cairo_font_options_t* options, cairo_hint_style_t hintStyle);
287 	cairo_hint_style_t cairo_font_options_get_hint_style(cairo_font_options_t* options);
288 	void cairo_font_options_set_hint_metrics(cairo_font_options_t* options, cairo_hint_metrics_t hintMetrics);
289 	cairo_hint_metrics_t cairo_font_options_get_hint_metrics(cairo_font_options_t* options);
290 
291 	// cairo.UserFontFace
292 
293 	cairo_font_face_t* cairo_user_font_face_create();
294 	void cairo_user_font_face_set_init_func(cairo_font_face_t* fontFace, cairo_user_scaled_font_init_func_t initFunc);
295 	cairo_user_scaled_font_init_func_t cairo_user_font_face_get_init_func(cairo_font_face_t* fontFace);
296 	void cairo_user_font_face_set_render_glyph_func(cairo_font_face_t* fontFace, cairo_user_scaled_font_render_glyph_func_t renderGlyphFunc);
297 	cairo_user_scaled_font_render_glyph_func_t cairo_user_font_face_get_render_glyph_func(cairo_font_face_t* fontFace);
298 	void cairo_user_font_face_set_unicode_to_glyph_func(cairo_font_face_t* fontFace, cairo_user_scaled_font_unicode_to_glyph_func_t unicodeToGlyphFunc);
299 	cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_get_unicode_to_glyph_func(cairo_font_face_t* fontFace);
300 	void cairo_user_font_face_set_text_to_glyphs_func(cairo_font_face_t* fontFace, cairo_user_scaled_font_text_to_glyphs_func_t textToGlyphsFunc);
301 	cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_font_face_get_text_to_glyphs_func(cairo_font_face_t* fontFace);
302 
303 	// cairo.Device
304 
305 	cairo_device_t* cairo_device_reference(cairo_device_t* device);
306 	void cairo_device_destroy(cairo_device_t* device);
307 	cairo_status_t cairo_device_status(cairo_device_t* device);
308 	void cairo_device_finish(cairo_device_t* device);
309 	void cairo_device_flush(cairo_device_t* device);
310 	cairo_device_type_t cairo_device_get_type(cairo_device_t* device);
311 	uint cairo_device_get_reference_count(cairo_device_t* device);
312 	cairo_status_t cairo_device_set_user_data(cairo_device_t* device, cairo_user_data_key_t* key, void* userData, cairo_destroy_func_t destroy);
313 	void* cairo_device_get_user_data(cairo_device_t* device, cairo_user_data_key_t* key);
314 	cairo_status_t cairo_device_acquire(cairo_device_t* device);
315 	void cairo_device_release(cairo_device_t* device);
316 
317 	// cairo.Surface
318 
319 	cairo_surface_t* cairo_surface_create_similar(cairo_surface_t* other, cairo_content_t content, int width, int height);
320 	cairo_surface_t* cairo_surface_create_similar_image(cairo_surface_t* other, cairo_format_t format, int width, int height);
321 	cairo_surface_t* cairo_surface_create_for_rectangle(cairo_surface_t* target, double x, double y, double width, double height);
322 	cairo_surface_t* cairo_surface_reference(cairo_surface_t* surface);
323 	void cairo_surface_destroy(cairo_surface_t* surface);
324 	cairo_status_t cairo_surface_status(cairo_surface_t* surface);
325 	void cairo_surface_finish(cairo_surface_t* surface);
326 	void cairo_surface_flush(cairo_surface_t* surface);
327 	cairo_device_t* cairo_surface_get_device(cairo_surface_t* surface);
328 	void cairo_surface_get_font_options(cairo_surface_t* surface, cairo_font_options_t* options);
329 	cairo_content_t cairo_surface_get_content(cairo_surface_t* surface);
330 	void cairo_surface_mark_dirty(cairo_surface_t* surface);
331 	void cairo_surface_mark_dirty_rectangle(cairo_surface_t* surface, int x, int y, int width, int height);
332 	void cairo_surface_set_device_offset(cairo_surface_t* surface, double xOffset, double yOffset);
333 	void cairo_surface_get_device_offset(cairo_surface_t* surface, double* xOffset, double* yOffset);
334 	void cairo_surface_set_fallback_resolution(cairo_surface_t* surface, double xPixelsPerInch, double yPixelsPerInch);
335 	void cairo_surface_get_fallback_resolution(cairo_surface_t* surface, double* xPixelsPerInch, double* yPixelsPerInch);
336 	cairo_surface_type_t cairo_surface_get_type(cairo_surface_t* surface);
337 	uint cairo_surface_get_reference_count(cairo_surface_t* surface);
338 	cairo_status_t cairo_surface_set_user_data(cairo_surface_t* surface, cairo_user_data_key_t* key, void* userData, cairo_destroy_func_t destroy);
339 	void* cairo_surface_get_user_data(cairo_surface_t* surface, cairo_user_data_key_t* key);
340 	void cairo_surface_copy_page(cairo_surface_t* surface);
341 	void cairo_surface_show_page(cairo_surface_t* surface);
342 	cairo_bool_t cairo_surface_has_show_text_glyphs(cairo_surface_t* surface);
343 	cairo_status_t cairo_surface_set_mime_data(cairo_surface_t* surface, char* mimeType, uchar* data, ulong length, cairo_destroy_func_t destroy, void* closure);
344 	void cairo_surface_get_mime_data(cairo_surface_t* surface, char* mimeType, uchar** data, ulong* length);
345 	cairo_bool_t cairo_surface_supports_mime_type(cairo_surface_t* surface, char* mimeType);
346 	cairo_surface_t* cairo_surface_map_to_image(cairo_surface_t* surface, cairo_rectangle_int_t* extents);
347 	void cairo_surface_unmap_image(cairo_surface_t* surface, cairo_surface_t* image);
348 
349 	// cairo.ImageSurface
350 
351 	int cairo_format_stride_for_width(cairo_format_t format, int width);
352 	cairo_surface_t* cairo_image_surface_create(cairo_format_t format, int width, int height);
353 	cairo_surface_t* cairo_image_surface_create_for_data(uchar* data, cairo_format_t format, int width, int height, int stride);
354 	uchar* cairo_image_surface_get_data(cairo_surface_t* surface);
355 	cairo_format_t cairo_image_surface_get_format(cairo_surface_t* surface);
356 	int cairo_image_surface_get_width(cairo_surface_t* surface);
357 	int cairo_image_surface_get_height(cairo_surface_t* surface);
358 	int cairo_image_surface_get_stride(cairo_surface_t* surface);
359 	cairo_surface_t* cairo_image_surface_create_from_png(char* filename);
360 	cairo_surface_t* cairo_image_surface_create_from_png_stream(cairo_read_func_t readFunc, void* closure);
361 	cairo_status_t cairo_surface_write_to_png(cairo_surface_t* surface, char* filename);
362 	cairo_status_t cairo_surface_write_to_png_stream(cairo_surface_t* surface, cairo_write_func_t writeFunc, void* closure);
363 
364 	// cairo.PdfSurface
365 
366 	cairo_surface_t* cairo_pdf_surface_create(char* filename, double widthInPoints, double heightInPoints);
367 	cairo_surface_t* cairo_pdf_surface_create_for_stream(cairo_write_func_t writeFunc, void* closure, double widthInPoints, double heightInPoints);
368 	void cairo_pdf_surface_restrict_to_version(cairo_surface_t* surface, cairo_pdf_version_t versio);
369 	void cairo_pdf_get_versions(cairo_pdf_version_t** versions, int* numVersions);
370 	char* cairo_pdf_version_to_string(cairo_pdf_version_t versio);
371 	void cairo_pdf_surface_set_size(cairo_surface_t* surface, double widthInPoints, double heightInPoints);
372 
373 	// cairo.PostScriptSurface
374 
375 	cairo_surface_t* cairo_ps_surface_create(char* filename, double widthInPoints, double heightInPoints);
376 	cairo_surface_t* cairo_ps_surface_create_for_stream(cairo_write_func_t writeFunc, void* closure, double widthInPoints, double heightInPoints);
377 	void cairo_ps_surface_restrict_to_level(cairo_surface_t* surface, cairo_ps_level_t level);
378 	void cairo_ps_get_levels(cairo_ps_level_t** levels, int* numLevels);
379 	char* cairo_ps_level_to_string(cairo_ps_level_t level);
380 	void cairo_ps_surface_set_eps(cairo_surface_t* surface, cairo_bool_t eps);
381 	cairo_bool_t cairo_ps_surface_get_eps(cairo_surface_t* surface);
382 	void cairo_ps_surface_set_size(cairo_surface_t* surface, double widthInPoints, double heightInPoints);
383 	void cairo_ps_surface_dsc_begin_setup(cairo_surface_t* surface);
384 	void cairo_ps_surface_dsc_begin_page_setup(cairo_surface_t* surface);
385 	void cairo_ps_surface_dsc_comment(cairo_surface_t* surface, char* comment);
386 
387 	// cairo.RecordingSurface
388 
389 	cairo_surface_t* cairo_recording_surface_create(cairo_content_t content, cairo_rectangle_t* extents);
390 	void cairo_recording_surface_ink_extents(cairo_surface_t* surface, double* x0, double* y0, double* width, double* height);
391 	cairo_bool_t cairo_recording_surface_get_extents(cairo_surface_t* surface, cairo_rectangle_t* extents);
392 
393 	// cairo.SvgSurface
394 
395 	cairo_surface_t* cairo_svg_surface_create(char* filename, double widthInPoints, double heightInPoints);
396 	cairo_surface_t* cairo_svg_surface_create_for_stream(cairo_write_func_t writeFunc, void* closure, double widthInPoints, double heightInPoints);
397 	void cairo_svg_surface_restrict_to_version(cairo_surface_t* surface, cairo_svg_version_t versio);
398 	void cairo_svg_get_versions(cairo_svg_version_t** versions, int* numVersions);
399 	char* cairo_svg_version_to_string(cairo_svg_version_t versio);
400 
401 	// cairo.Script
402 
403 	cairo_device_t* cairo_script_create(char* filename);
404 	cairo_device_t* cairo_script_create_for_stream(cairo_write_func_t writeFunc, void* closure);
405 	cairo_status_t cairo_script_from_recording_surface(cairo_device_t* script, cairo_surface_t* recordingSurface);
406 	cairo_script_mode_t cairo_script_get_mode(cairo_device_t* script);
407 	void cairo_script_set_mode(cairo_device_t* script, cairo_script_mode_t mode);
408 	void cairo_script_write_comment(cairo_device_t* script, char* comment, int len);
409 
410 	// cairo.ScriptSurface
411 
412 	cairo_surface_t* cairo_script_surface_create(cairo_device_t* script, cairo_content_t content, double width, double height);
413 	cairo_surface_t* cairo_script_surface_create_for_target(cairo_device_t* script, cairo_surface_t* target);
414 
415 	// cairo.Matrix
416 
417 	void cairo_matrix_init(cairo_matrix_t* matrix, double xx, double yx, double xy, double yy, double x0, double y0);
418 	void cairo_matrix_init_identity(cairo_matrix_t* matrix);
419 	void cairo_matrix_init_translate(cairo_matrix_t* matrix, double tx, double ty);
420 	void cairo_matrix_init_scale(cairo_matrix_t* matrix, double sx, double sy);
421 	void cairo_matrix_init_rotate(cairo_matrix_t* matrix, double radians);
422 	void cairo_matrix_translate(cairo_matrix_t* matrix, double tx, double ty);
423 	void cairo_matrix_scale(cairo_matrix_t* matrix, double sx, double sy);
424 	void cairo_matrix_rotate(cairo_matrix_t* matrix, double radians);
425 	cairo_status_t cairo_matrix_invert(cairo_matrix_t* matrix);
426 	void cairo_matrix_multiply(cairo_matrix_t* result, cairo_matrix_t* a, cairo_matrix_t* b);
427 	void cairo_matrix_transform_distance(cairo_matrix_t* matrix, double* dx, double* dy);
428 	void cairo_matrix_transform_point(cairo_matrix_t* matrix, double* x, double* y);
429 
430 	// cairo.Status
431 
432 	char* cairo_status_to_string(cairo_status_t status);
433 	void cairo_debug_reset_static_data();
434 
435 	// cairo.Version
436 
437 	int cairo_version();
438 	char* cairo_version_string();
439 
440 	// cairo.
441 
442 }