2 // Cairo.cs - a simplistic binding of the Cairo API to C#.
4 // Authors: Duncan Mak (duncan@ximian.com)
5 // Hisham Mardam Bey (hisham.mardambey@gmail.com)
6 // John Luke (john.luke@gmail.com)
7 // Alp Toker (alp@atoker.com)
9 // (C) Ximian, Inc. 2003
10 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
11 // Copyright (C) 2005 John Luke
12 // Copyright (C) 2006 Alp Toker
14 // Permission is hereby granted, free of charge, to any person obtaining
15 // a copy of this software and associated documentation files (the
16 // "Software"), to deal in the Software without restriction, including
17 // without limitation the rights to use, copy, modify, merge, publish,
18 // distribute, sublicense, and/or sell copies of the Software, and to
19 // permit persons to whom the Software is furnished to do so, subject to
20 // the following conditions:
22 // The above copyright notice and this permission notice shall be
23 // included in all copies or substantial portions of the Software.
25 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35 using System.Runtime.InteropServices;
39 // sort the functions like in the following page so it is easier to find what is missing
40 // http://cairographics.org/manual/index-all.html
42 internal static class NativeMethods
45 const string cairo = "__Internal";
47 const string cairo = "libcairo-2.dll";
50 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
51 //internal static extern void cairo_append_path (IntPtr cr, Path path);
53 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
54 internal static extern void cairo_arc (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
56 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
57 internal static extern void cairo_arc_negative (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
59 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
60 internal static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id);
62 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
63 internal static extern void cairo_clip (IntPtr cr);
65 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
66 internal static extern void cairo_clip_preserve (IntPtr cr);
68 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
69 internal static extern void cairo_clip_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
71 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
72 internal static extern void cairo_close_path (IntPtr cr);
74 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
75 internal static extern void cairo_copy_page (IntPtr cr);
77 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
78 internal static extern IntPtr cairo_copy_path (IntPtr cr);
80 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
81 internal static extern IntPtr cairo_copy_path_flat (IntPtr cr);
83 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
84 internal static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path);
86 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
87 internal static extern IntPtr cairo_create (IntPtr target);
89 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
90 internal static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3);
92 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
93 internal static extern void cairo_debug_reset_static_data ();
95 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
96 internal static extern void cairo_destroy (IntPtr cr);
98 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
99 internal static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y);
101 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
102 internal static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy);
104 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
105 internal static extern void cairo_fill (IntPtr cr);
107 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
108 internal static extern void cairo_fill_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
110 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
111 internal static extern void cairo_fill_preserve (IntPtr cr);
113 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
114 internal static extern void cairo_font_extents (IntPtr cr, out FontExtents extents);
117 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
118 internal static extern void cairo_font_face_destroy (IntPtr font_face);
120 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
121 internal static extern FontType cairo_font_face_get_type (IntPtr font_face);
123 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
124 //internal static extern void cairo_font_face_get_user_data (IntPtr font_face);
126 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
127 //internal static extern void cairo_font_face_set_user_data (IntPtr font_face);
129 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
130 internal static extern IntPtr cairo_font_face_reference (IntPtr font_face);
132 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
133 internal static extern Status cairo_font_face_status (IntPtr font_face);
135 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
136 internal static extern uint cairo_font_face_get_reference_count (IntPtr surface);
139 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
140 internal static extern IntPtr cairo_font_options_copy (IntPtr original);
142 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
143 internal static extern IntPtr cairo_font_options_create ();
145 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
146 internal static extern void cairo_font_options_destroy (IntPtr options);
148 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
149 [return: MarshalAs (UnmanagedType.U1)]
150 internal static extern bool cairo_font_options_equal (IntPtr options, IntPtr other);
152 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
153 internal static extern Antialias cairo_font_options_get_antialias (IntPtr options);
155 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
156 internal static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options);
158 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
159 internal static extern HintStyle cairo_font_options_get_hint_style (IntPtr options);
161 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
162 internal static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options);
164 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
165 internal static extern long cairo_font_options_hash (IntPtr options);
167 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
168 internal static extern void cairo_font_options_merge (IntPtr options, IntPtr other);
170 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
171 internal static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa);
173 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
174 internal static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics);
176 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
177 internal static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style);
179 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
180 internal static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order);
182 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
183 internal static extern Status cairo_font_options_status (IntPtr options);
185 // Freetype / FontConfig
186 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
187 internal static extern IntPtr cairo_ft_font_face_create_for_ft_face (IntPtr face, int load_flags);
189 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
190 internal static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern);
192 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
193 internal static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern);
195 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
196 internal static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font);
198 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
199 internal static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font);
201 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
202 internal static extern Antialias cairo_get_antialias (IntPtr cr);
204 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
205 internal static extern void cairo_get_current_point (IntPtr cr, out double x, out double y);
207 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
208 internal static extern FillRule cairo_get_fill_rule (IntPtr cr);
210 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
211 internal static extern IntPtr cairo_get_font_face (IntPtr cr);
213 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
214 internal static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix);
216 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
217 internal static extern void cairo_get_font_options (IntPtr cr, IntPtr options);
219 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
220 internal static extern IntPtr cairo_get_group_target (IntPtr cr);
222 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
223 internal static extern LineCap cairo_get_line_cap (IntPtr cr);
225 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
226 internal static extern LineJoin cairo_get_line_join (IntPtr cr);
228 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
229 internal static extern double cairo_get_line_width (IntPtr cr);
231 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
232 internal static extern void cairo_get_matrix (IntPtr cr, Matrix matrix);
234 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
235 internal static extern double cairo_get_miter_limit (IntPtr cr);
237 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
238 internal static extern Operator cairo_get_operator (IntPtr cr);
240 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
241 internal static extern uint cairo_get_reference_count (IntPtr surface);
243 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
244 internal static extern IntPtr cairo_get_source (IntPtr cr);
246 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
247 internal static extern IntPtr cairo_get_target (IntPtr cr);
249 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
250 internal static extern double cairo_get_tolerance (IntPtr cr);
252 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
253 internal static extern IntPtr cairo_glitz_surface_create (IntPtr surface);
255 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
256 internal static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents);
258 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
259 internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
261 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
262 internal static extern void cairo_identity_matrix (IntPtr cr);
265 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
266 internal static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height);
268 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
269 internal static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Cairo.Format format, int width, int height, int stride);
271 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
272 internal static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Cairo.Format format, int width, int height, int stride);
274 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
275 internal static extern IntPtr cairo_image_surface_create_from_png (string filename);
277 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
278 //internal static extern IntPtr cairo_image_surface_create_from_png_stream (string filename);
280 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
281 internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
283 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
284 internal static extern Format cairo_image_surface_get_format (IntPtr surface);
286 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
287 internal static extern int cairo_image_surface_get_height (IntPtr surface);
289 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
290 internal static extern int cairo_image_surface_get_stride (IntPtr surface);
292 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
293 internal static extern int cairo_image_surface_get_width (IntPtr surface);
295 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
296 [return: MarshalAs (UnmanagedType.U1)]
297 internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
299 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
300 [return: MarshalAs (UnmanagedType.U1)]
301 internal static extern bool cairo_in_stroke (IntPtr cr, double x, double y);
303 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
304 internal static extern void cairo_line_to (IntPtr cr, double x, double y);
306 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
307 internal static extern void cairo_mask (IntPtr cr, IntPtr pattern);
309 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
310 internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
313 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
314 internal static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0);
316 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
317 internal static extern void cairo_matrix_init_identity (Matrix matrix);
319 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
320 internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
322 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
323 internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
325 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
326 internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
328 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
329 internal static extern Status cairo_matrix_invert (Matrix matrix);
331 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
332 internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
334 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
335 internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
337 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
338 internal static extern void cairo_matrix_rotate (Matrix matrix, double radians);
340 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
341 internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
343 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
344 internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
346 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
347 internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
349 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
350 internal static extern void cairo_move_to (IntPtr cr, double x, double y);
352 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
353 internal static extern void cairo_new_path (IntPtr cr);
355 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
356 internal static extern void cairo_new_sub_path (IntPtr cr);
358 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
359 internal static extern void cairo_paint (IntPtr cr);
361 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
362 internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
364 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
365 internal static extern void cairo_path_destroy (IntPtr path);
368 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
369 internal static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue);
371 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
372 internal static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha);
374 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
375 internal static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count);
376 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
377 internal static extern Status cairo_pattern_get_color_stop_rgba (IntPtr pattern, int index, out double offset, out double red, out double green, out double blue, out double alpha);
379 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
380 internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
382 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
383 internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
385 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
386 internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
388 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
389 internal static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1);
391 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
392 internal static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
394 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
395 internal static extern Status cairo_pattern_get_radial_circles (IntPtr pattern, out double x0, out double y0, out double r0, out double x1, out double y1, out double r1);
397 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
398 internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
400 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
401 internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
403 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
404 internal static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha);
406 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
407 internal static extern void cairo_pattern_destroy (IntPtr pattern);
409 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
410 internal static extern Extend cairo_pattern_get_extend (IntPtr pattern);
412 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
413 internal static extern Filter cairo_pattern_get_filter (IntPtr pattern);
415 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
416 internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
418 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
419 internal static extern PatternType cairo_pattern_get_type (IntPtr pattern);
421 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
422 internal static extern IntPtr cairo_pattern_reference (IntPtr pattern);
424 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
425 internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
427 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
428 internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
430 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
431 internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
433 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
434 internal static extern Status cairo_pattern_status (IntPtr pattern);
437 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
438 internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
440 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
441 //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
443 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
444 internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
447 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
448 internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
450 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
451 //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
452 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
453 internal static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface);
455 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
456 internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
458 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
459 internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
461 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
462 internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
464 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
465 internal static extern IntPtr cairo_pop_group (IntPtr cr);
467 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
468 internal static extern void cairo_pop_group_to_source (IntPtr cr);
470 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
471 internal static extern void cairo_push_group (IntPtr cr);
473 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
474 internal static extern void cairo_push_group_with_content (IntPtr cr, Content content);
476 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
477 internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
479 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
480 internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
482 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
483 internal static extern void cairo_reference (IntPtr cr);
485 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
486 internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
488 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
489 internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle);
491 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
492 internal static extern IntPtr cairo_region_copy (IntPtr original);
494 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
495 internal static extern IntPtr cairo_region_create ();
497 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
498 internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect);
500 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
501 internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count);
503 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
504 internal static extern void cairo_region_destroy (IntPtr region);
506 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
507 internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
509 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
510 internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents);
512 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
513 internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle);
515 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
516 internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
518 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
519 internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle);
521 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
522 internal static extern bool cairo_region_is_empty (IntPtr region);
524 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
525 internal static extern int cairo_region_num_rectangles (IntPtr region);
527 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
528 internal static extern IntPtr cairo_region_reference (IntPtr region);
530 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
531 internal static extern Status cairo_region_status (IntPtr region);
533 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
534 internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
536 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
537 internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle);
539 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
540 internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
542 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
543 internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
545 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
546 internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle);
548 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
549 internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
551 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
552 internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle);
554 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
555 internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
557 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
558 internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
560 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
561 internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
563 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
564 internal static extern void cairo_reset_clip (IntPtr cr);
566 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
567 internal static extern void cairo_restore (IntPtr cr);
569 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
570 internal static extern void cairo_rotate (IntPtr cr, double angle);
572 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
573 internal static extern void cairo_save (IntPtr cr);
575 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
576 internal static extern void cairo_scale (IntPtr cr, double sx, double sy);
579 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
580 internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
582 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
583 internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
585 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
586 internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
588 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
589 internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
591 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
592 internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
594 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
595 internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
597 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
598 internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
600 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
601 internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
603 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
604 internal static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents);
606 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
607 internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
609 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
610 internal static extern Status cairo_scaled_font_status (IntPtr scaled_font);
612 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
613 internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
615 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
616 internal static extern IntPtr cairo_get_scaled_font (IntPtr cr);
618 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
619 internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents);
621 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
622 internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
624 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
625 internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
627 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
628 internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
630 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
631 internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
633 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
634 internal static extern int cairo_get_dash_count (IntPtr cr);
636 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
637 internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule);
639 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
640 internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
642 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
643 internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
645 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
646 internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
648 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
649 internal static extern void cairo_set_font_size (IntPtr cr, double size);
651 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
652 internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
654 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
655 internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
657 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
658 internal static extern void cairo_set_line_width (IntPtr cr, double width);
660 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
661 internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
663 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
664 internal static extern void cairo_set_miter_limit (IntPtr cr, double limit);
666 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
667 internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op);
669 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
670 internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
672 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
673 internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
675 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
676 internal static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha);
678 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
679 internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
681 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
682 internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
684 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
685 internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
687 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
688 internal static extern void cairo_show_page (IntPtr cr);
690 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
691 internal static extern void cairo_show_text (IntPtr cr, byte[] utf8);
693 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
694 internal static extern Status cairo_status (IntPtr cr);
696 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
697 internal static extern IntPtr cairo_status_to_string (Status status);
699 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
700 internal static extern void cairo_stroke (IntPtr cr);
702 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
703 internal static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
705 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
706 internal static extern void cairo_stroke_preserve (IntPtr cr);
708 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
709 internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
711 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
712 internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
715 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
716 internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height);
718 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
719 internal static extern void cairo_surface_destroy (IntPtr surface);
721 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
722 internal static extern void cairo_surface_finish (IntPtr surface);
724 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
725 internal static extern void cairo_surface_flush (IntPtr surface);
727 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
728 internal static extern Content cairo_surface_get_content (IntPtr surface);
730 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
731 internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
733 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
734 internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
736 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
737 internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
739 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
740 internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
742 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
743 internal static extern void cairo_surface_mark_dirty (IntPtr surface);
745 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
746 internal static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height);
748 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
749 internal static extern IntPtr cairo_surface_reference (IntPtr surface);
751 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
752 internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
754 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
755 internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
757 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
758 internal static extern Status cairo_surface_status (IntPtr surface);
760 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
761 internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
763 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
764 //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
766 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
767 internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
769 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
770 //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
772 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
773 internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
775 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
776 internal static extern void cairo_text_extents (IntPtr cr, byte[] utf8, out TextExtents extents);
778 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
779 internal static extern void cairo_text_path (IntPtr ct, byte[] utf8);
781 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
782 internal static extern void cairo_transform (IntPtr cr, Matrix matrix);
784 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
785 internal static extern void cairo_translate (IntPtr cr, double tx, double ty);
787 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
788 internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
790 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
791 internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
793 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
794 internal static extern int cairo_version ();
796 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
797 internal static extern IntPtr cairo_version_string ();
800 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
801 internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
804 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
805 internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
807 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
808 internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
810 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
811 internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
813 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
814 internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
817 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
818 internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
820 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
821 internal static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height);
824 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
825 internal static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height);
827 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
828 internal static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height);
830 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
831 internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
834 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
835 internal static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height);
837 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
838 internal static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height);
840 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
841 internal static extern int cairo_xlib_surface_get_depth (IntPtr surface);
843 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
844 internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
846 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
847 internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
849 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
850 internal static extern int cairo_xlib_surface_get_height (IntPtr surface);
852 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
853 internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
855 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
856 internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
858 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
859 internal static extern int cairo_xlib_surface_get_width (IntPtr surface);
861 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
862 internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
864 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
865 internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);