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 [return: MarshalAs (UnmanagedType.U1)]
263 internal static extern bool cairo_has_current_point (IntPtr cr);
265 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
266 internal static extern void cairo_identity_matrix (IntPtr cr);
269 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
270 internal static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height);
272 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
273 internal static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Cairo.Format format, int width, int height, int stride);
275 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
276 internal static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Cairo.Format format, int width, int height, int stride);
278 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
279 internal static extern IntPtr cairo_image_surface_create_from_png (string filename);
281 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
282 //internal static extern IntPtr cairo_image_surface_create_from_png_stream (string filename);
284 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
285 internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
287 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
288 internal static extern Format cairo_image_surface_get_format (IntPtr surface);
290 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
291 internal static extern int cairo_image_surface_get_height (IntPtr surface);
293 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
294 internal static extern int cairo_image_surface_get_stride (IntPtr surface);
296 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
297 internal static extern int cairo_image_surface_get_width (IntPtr surface);
299 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
300 [return: MarshalAs (UnmanagedType.U1)]
301 internal static extern bool cairo_in_clip (IntPtr cr, double x, double y);
303 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
304 [return: MarshalAs (UnmanagedType.U1)]
305 internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
307 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
308 [return: MarshalAs (UnmanagedType.U1)]
309 internal static extern bool cairo_in_stroke (IntPtr cr, double x, double y);
311 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
312 internal static extern void cairo_line_to (IntPtr cr, double x, double y);
314 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
315 internal static extern void cairo_mask (IntPtr cr, IntPtr pattern);
317 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
318 internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
321 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
322 internal static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0);
324 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
325 internal static extern void cairo_matrix_init_identity (Matrix matrix);
327 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
328 internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
330 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
331 internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
333 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
334 internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
336 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
337 internal static extern Status cairo_matrix_invert (Matrix matrix);
339 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
340 internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
342 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
343 internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
345 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
346 internal static extern void cairo_matrix_rotate (Matrix matrix, double radians);
348 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
349 internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
351 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
352 internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
354 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
355 internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
357 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
358 internal static extern void cairo_move_to (IntPtr cr, double x, double y);
360 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
361 internal static extern void cairo_new_path (IntPtr cr);
363 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
364 internal static extern void cairo_new_sub_path (IntPtr cr);
366 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
367 internal static extern void cairo_paint (IntPtr cr);
369 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
370 internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
372 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
373 internal static extern void cairo_path_destroy (IntPtr path);
376 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
377 internal static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue);
379 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
380 internal static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha);
382 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
383 internal static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count);
384 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
385 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);
387 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
388 internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
390 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
391 internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
393 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
394 internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
396 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
397 internal static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1);
399 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
400 internal static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
402 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
403 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);
405 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
406 internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
408 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
409 internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
411 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
412 internal static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha);
414 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
415 internal static extern void cairo_pattern_destroy (IntPtr pattern);
417 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
418 internal static extern Extend cairo_pattern_get_extend (IntPtr pattern);
420 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
421 internal static extern Filter cairo_pattern_get_filter (IntPtr pattern);
423 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
424 internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
426 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
427 internal static extern PatternType cairo_pattern_get_type (IntPtr pattern);
429 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
430 internal static extern IntPtr cairo_pattern_reference (IntPtr pattern);
432 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
433 internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
435 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
436 internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
438 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
439 internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
441 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
442 internal static extern Status cairo_pattern_status (IntPtr pattern);
445 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
446 internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
448 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
449 //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
451 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
452 internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
455 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
456 internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
458 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
459 //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
460 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
461 internal static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface);
463 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
464 internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
466 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
467 internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
469 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
470 internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
472 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
473 internal static extern IntPtr cairo_pop_group (IntPtr cr);
475 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
476 internal static extern void cairo_pop_group_to_source (IntPtr cr);
478 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
479 internal static extern void cairo_push_group (IntPtr cr);
481 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
482 internal static extern void cairo_push_group_with_content (IntPtr cr, Content content);
484 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
485 internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
487 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
488 internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
490 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
491 internal static extern void cairo_reference (IntPtr cr);
493 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
494 internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
496 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
497 internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle);
499 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
500 internal static extern IntPtr cairo_region_copy (IntPtr original);
502 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
503 internal static extern IntPtr cairo_region_create ();
505 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
506 internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect);
508 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
509 internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count);
511 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
512 internal static extern void cairo_region_destroy (IntPtr region);
514 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
515 internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
517 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
518 internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents);
520 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
521 internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle);
523 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
524 internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
526 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
527 internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle);
529 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
530 internal static extern bool cairo_region_is_empty (IntPtr region);
532 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
533 internal static extern int cairo_region_num_rectangles (IntPtr region);
535 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
536 internal static extern IntPtr cairo_region_reference (IntPtr region);
538 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
539 internal static extern Status cairo_region_status (IntPtr region);
541 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
542 internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
544 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
545 internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle);
547 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
548 internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
550 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
551 internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
553 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
554 internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle);
556 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
557 internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
559 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
560 internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle);
562 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
563 internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
565 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
566 internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
568 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
569 internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
571 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
572 internal static extern void cairo_reset_clip (IntPtr cr);
574 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
575 internal static extern void cairo_restore (IntPtr cr);
577 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
578 internal static extern void cairo_rotate (IntPtr cr, double angle);
580 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
581 internal static extern void cairo_save (IntPtr cr);
583 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
584 internal static extern void cairo_scale (IntPtr cr, double sx, double sy);
587 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
588 internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
590 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
591 internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
593 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
594 internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
596 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
597 internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
599 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
600 internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
602 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
603 internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
605 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
606 internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
608 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
609 internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
611 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
612 internal static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents);
614 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
615 internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
617 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
618 internal static extern Status cairo_scaled_font_status (IntPtr scaled_font);
620 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
621 internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
623 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
624 internal static extern IntPtr cairo_get_scaled_font (IntPtr cr);
626 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
627 internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents);
629 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
630 internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
632 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
633 internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
635 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
636 internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
638 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
639 internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
641 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
642 internal static extern int cairo_get_dash_count (IntPtr cr);
644 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
645 internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule);
647 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
648 internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
650 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
651 internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
653 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
654 internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
656 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
657 internal static extern void cairo_set_font_size (IntPtr cr, double size);
659 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
660 internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
662 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
663 internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
665 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
666 internal static extern void cairo_set_line_width (IntPtr cr, double width);
668 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
669 internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
671 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
672 internal static extern void cairo_set_miter_limit (IntPtr cr, double limit);
674 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
675 internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op);
677 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
678 internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
680 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
681 internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
683 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
684 internal static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha);
686 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
687 internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
689 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
690 internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
692 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
693 internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
695 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
696 internal static extern void cairo_show_page (IntPtr cr);
698 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
699 internal static extern void cairo_show_text (IntPtr cr, byte[] utf8);
701 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
702 internal static extern Status cairo_status (IntPtr cr);
704 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
705 internal static extern IntPtr cairo_status_to_string (Status status);
707 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
708 internal static extern void cairo_stroke (IntPtr cr);
710 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
711 internal static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
713 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
714 internal static extern void cairo_stroke_preserve (IntPtr cr);
716 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
717 internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
719 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
720 internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
723 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
724 internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height);
726 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
727 internal static extern void cairo_surface_destroy (IntPtr surface);
729 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
730 internal static extern void cairo_surface_finish (IntPtr surface);
732 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
733 internal static extern void cairo_surface_flush (IntPtr surface);
735 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
736 internal static extern Content cairo_surface_get_content (IntPtr surface);
738 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
739 internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
741 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
742 internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
744 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
745 internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
747 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
748 internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
750 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
751 internal static extern void cairo_surface_mark_dirty (IntPtr surface);
753 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
754 internal static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height);
756 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
757 internal static extern IntPtr cairo_surface_reference (IntPtr surface);
759 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
760 internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
762 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
763 internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
765 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
766 internal static extern Status cairo_surface_status (IntPtr surface);
768 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
769 internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
771 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
772 //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
774 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
775 internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
777 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
778 //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
780 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
781 internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
783 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
784 internal static extern void cairo_text_extents (IntPtr cr, byte[] utf8, out TextExtents extents);
786 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
787 internal static extern void cairo_text_path (IntPtr ct, byte[] utf8);
789 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
790 internal static extern void cairo_transform (IntPtr cr, Matrix matrix);
792 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
793 internal static extern void cairo_translate (IntPtr cr, double tx, double ty);
795 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
796 internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
798 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
799 internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
801 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
802 internal static extern int cairo_version ();
804 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
805 internal static extern IntPtr cairo_version_string ();
808 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
809 internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
812 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
813 internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
815 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
816 internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
818 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
819 internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
821 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
822 internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
825 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
826 internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
828 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
829 internal static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height);
832 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
833 internal static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height);
835 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
836 internal static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height);
838 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
839 internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
842 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
843 internal static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height);
845 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
846 internal static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height);
848 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
849 internal static extern int cairo_xlib_surface_get_depth (IntPtr surface);
851 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
852 internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
854 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
855 internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
857 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
858 internal static extern int cairo_xlib_surface_get_height (IntPtr surface);
860 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
861 internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
863 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
864 internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
866 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
867 internal static extern int cairo_xlib_surface_get_width (IntPtr surface);
869 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
870 internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
872 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
873 internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);