Merge pull request #823 from DavidKarlas/master
[mono.git] / mcs / class / Mono.Cairo / Mono.Cairo / NativeMethods.cs
1 //
2 // Cairo.cs - a simplistic binding of the Cairo API to C#.
3 //
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)
8 //
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
13 //
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:
21 // 
22 // The above copyright notice and this permission notice shall be
23 // included in all copies or substantial portions of the Software.
24 // 
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.
32 //
33
34 using System;
35 using System.Runtime.InteropServices;
36
37 namespace Cairo
38 {
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
41
42         internal static class NativeMethods
43         {
44 #if MONOTOUCH
45                 const string cairo = "__Internal";
46 #else
47                 const string cairo = "libcairo-2.dll";
48 #endif
49                 
50                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
51                 //internal static extern void cairo_append_path (IntPtr cr, Path path);
52                 
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);
55                 
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);
58
59                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
60                 internal static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id);
61                 
62                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
63                 internal static extern void cairo_clip (IntPtr cr);
64                 
65                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
66                 internal static extern void cairo_clip_preserve (IntPtr cr);
67
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);
70                 
71                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
72                 internal static extern void cairo_close_path (IntPtr cr);
73                 
74                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
75                 internal static extern void cairo_copy_page (IntPtr cr);
76                 
77                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
78                 internal static extern IntPtr cairo_copy_path (IntPtr cr);
79                 
80                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
81                 internal static extern IntPtr cairo_copy_path_flat (IntPtr cr);
82
83                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
84                 internal static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path);
85                 
86                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
87                 internal static extern IntPtr cairo_create (IntPtr target);
88
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);
91                 
92                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
93                 internal static extern void cairo_debug_reset_static_data ();
94                 
95                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
96                 internal static extern void cairo_destroy (IntPtr cr);
97                 
98                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
99                 internal static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y);
100                 
101                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
102                 internal static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy);
103
104                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
105                 internal static extern void cairo_fill (IntPtr cr);
106                 
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);
109                 
110                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
111                 internal static extern void cairo_fill_preserve (IntPtr cr);
112                 
113                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
114                 internal static extern void cairo_font_extents (IntPtr cr, out FontExtents extents);
115                 
116                 // FontFace
117                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
118                 internal static extern void cairo_font_face_destroy (IntPtr font_face);
119
120                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
121                 internal static extern FontType cairo_font_face_get_type (IntPtr font_face);
122
123                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
124                 //internal static extern void cairo_font_face_get_user_data (IntPtr font_face);
125                 
126                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
127                 //internal static extern void cairo_font_face_set_user_data (IntPtr font_face);
128                 
129                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
130                 internal static extern IntPtr cairo_font_face_reference (IntPtr font_face);
131                 
132                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
133                 internal static extern Status cairo_font_face_status (IntPtr font_face);
134
135                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
136                 internal static extern uint cairo_font_face_get_reference_count (IntPtr surface);
137                 
138                 // FontOptions
139                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
140                 internal static extern IntPtr cairo_font_options_copy (IntPtr original);
141                 
142                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
143                 internal static extern IntPtr cairo_font_options_create ();
144                 
145                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
146                 internal static extern void cairo_font_options_destroy (IntPtr options);
147                 
148                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
149                 [return: MarshalAs (UnmanagedType.U1)]
150                 internal static extern bool cairo_font_options_equal (IntPtr options, IntPtr other);
151                 
152                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
153                 internal static extern Antialias cairo_font_options_get_antialias (IntPtr options);
154                 
155                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
156                 internal static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options);
157                 
158                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
159                 internal static extern HintStyle cairo_font_options_get_hint_style (IntPtr options);
160                 
161                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
162                 internal static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options);
163                 
164                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
165                 internal static extern long cairo_font_options_hash (IntPtr options);
166                 
167                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
168                 internal static extern void cairo_font_options_merge (IntPtr options, IntPtr other);
169                 
170                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
171                 internal static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa);
172                 
173                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
174                 internal static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics);
175                 
176                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
177                 internal static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style);
178                 
179                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
180                 internal static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order);
181                 
182                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
183                 internal static extern Status cairo_font_options_status (IntPtr options);
184                 
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);
188                 
189                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
190                 internal static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern);
191                 
192                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
193                 internal static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern);
194                 
195                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
196                 internal static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font);
197                 
198                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
199                 internal static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font);
200                 
201                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
202                 internal static extern Antialias cairo_get_antialias (IntPtr cr);
203                 
204                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
205                 internal static extern void cairo_get_current_point (IntPtr cr, out double x, out double y);
206                 
207                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
208                 internal static extern FillRule cairo_get_fill_rule (IntPtr cr);
209                 
210                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
211                 internal static extern IntPtr cairo_get_font_face (IntPtr cr);
212                 
213                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
214                 internal static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix);
215                 
216                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
217                 internal static extern void cairo_get_font_options (IntPtr cr, IntPtr options);
218
219                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
220                 internal static extern IntPtr cairo_get_group_target (IntPtr cr);
221                 
222                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
223                 internal static extern LineCap cairo_get_line_cap (IntPtr cr);
224                 
225                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
226                 internal static extern LineJoin cairo_get_line_join (IntPtr cr);
227                 
228                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
229                 internal static extern double cairo_get_line_width (IntPtr cr);
230                 
231                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
232                 internal static extern void cairo_get_matrix (IntPtr cr, Matrix matrix);
233                 
234                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
235                 internal static extern double cairo_get_miter_limit (IntPtr cr);
236                 
237                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
238                 internal static extern Operator cairo_get_operator (IntPtr cr);
239                 
240                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
241                 internal static extern uint cairo_get_reference_count (IntPtr surface);
242
243                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
244                 internal static extern IntPtr cairo_get_source (IntPtr cr);
245                 
246                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
247                 internal static extern IntPtr cairo_get_target (IntPtr cr);
248                 
249                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
250                 internal static extern double cairo_get_tolerance (IntPtr cr);
251                 
252                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
253                 internal static extern IntPtr cairo_glitz_surface_create (IntPtr surface);
254
255                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
256                 internal static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents);
257                 
258                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
259                 internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
260                 
261                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
262                 internal static extern void cairo_identity_matrix (IntPtr cr);
263                 
264                 // ImageSurface
265                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
266                 internal static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height);
267                 
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);
270
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);
273                 
274                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
275                 internal static extern IntPtr cairo_image_surface_create_from_png  (string filename);
276                 
277                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
278                 //internal static extern IntPtr cairo_image_surface_create_from_png_stream  (string filename);
279
280                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
281                 internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
282
283                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
284                 internal static extern Format cairo_image_surface_get_format (IntPtr surface);
285                 
286                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
287                 internal static extern int cairo_image_surface_get_height (IntPtr surface);
288
289                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
290                 internal static extern int cairo_image_surface_get_stride (IntPtr surface);
291                 
292                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
293                 internal static extern int cairo_image_surface_get_width  (IntPtr surface);
294
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);
298                 
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);
302                 
303                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
304                 internal static extern void cairo_line_to (IntPtr cr, double x, double y);
305                 
306                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
307                 internal static extern void cairo_mask (IntPtr cr, IntPtr pattern);
308                 
309                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
310                 internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
311                 
312                 // Matrix
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);
315                 
316                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
317                 internal static extern void cairo_matrix_init_identity (Matrix matrix);
318                 
319                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
320                 internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
321                 
322                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
323                 internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
324                 
325                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
326                 internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
327                 
328                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
329                 internal static extern Status cairo_matrix_invert (Matrix matrix);
330                 
331                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
332                 internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
333                 
334                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
335                 internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
336                 
337                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
338                 internal static extern void cairo_matrix_rotate (Matrix matrix, double radians);
339                 
340                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
341                 internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
342                 
343                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
344                 internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
345                 
346                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
347                 internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
348                 
349                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
350                 internal static extern void cairo_move_to (IntPtr cr, double x, double y);
351                 
352                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
353                 internal static extern void cairo_new_path (IntPtr cr);
354
355                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
356                 internal static extern void cairo_new_sub_path (IntPtr cr);
357                 
358                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
359                 internal static extern void cairo_paint (IntPtr cr);
360                 
361                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
362                 internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
363                 
364                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
365                 internal static extern void cairo_path_destroy (IntPtr path);
366                 
367                 // Pattern
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);
370                 
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);
373
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);
378                 
379                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
380                 internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
381
382                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
383                 internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
384                 
385                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
386                 internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
387
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);
390                 
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);
393
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);
396                 
397                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
398                 internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
399                 
400                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
401                 internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
402
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);
405                 
406                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
407                 internal static extern void cairo_pattern_destroy (IntPtr pattern);
408                 
409                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
410                 internal static extern Extend cairo_pattern_get_extend (IntPtr pattern);
411                 
412                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
413                 internal static extern Filter cairo_pattern_get_filter (IntPtr pattern);
414                 
415                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
416                 internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
417
418                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
419                 internal static extern PatternType cairo_pattern_get_type (IntPtr pattern);
420                 
421                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
422                 internal static extern IntPtr cairo_pattern_reference (IntPtr pattern);
423                 
424                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
425                 internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
426                 
427                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
428                 internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
429                 
430                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
431                 internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
432                 
433                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
434                 internal static extern Status cairo_pattern_status (IntPtr pattern);
435         
436                 // PdfSurface
437                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
438                 internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
439                 
440                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
441                 //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
442                 
443                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
444                 internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
445                 
446                 // PostscriptSurface
447                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
448                 internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
449                 
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);
454                 
455                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
456                 internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
457                 
458                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
459                 internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
460                 
461                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
462                 internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
463
464                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
465                 internal static extern IntPtr cairo_pop_group (IntPtr cr);
466
467                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
468                 internal static extern void cairo_pop_group_to_source (IntPtr cr);
469
470                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
471                 internal static extern void cairo_push_group (IntPtr cr);
472
473                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
474                 internal static extern void cairo_push_group_with_content (IntPtr cr, Content content);
475
476                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
477                 internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
478
479                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
480                 internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
481                 
482                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
483                 internal static extern void cairo_reference (IntPtr cr);
484                 
485                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
486                 internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
487
488                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
489                 internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle);
490
491                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
492                 internal static extern IntPtr cairo_region_copy (IntPtr original);
493
494                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
495                 internal static extern IntPtr cairo_region_create ();
496
497                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
498                 internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect);
499
500                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
501                 internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count);
502
503                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
504                 internal static extern void cairo_region_destroy (IntPtr region);
505
506                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
507                 internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
508
509                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
510                 internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents);
511
512                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
513                 internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle);
514
515                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
516                 internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
517
518                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
519                 internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle);
520
521                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
522                 internal static extern bool cairo_region_is_empty (IntPtr region);
523
524                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
525                 internal static extern int cairo_region_num_rectangles (IntPtr region);
526
527                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
528                 internal static extern IntPtr cairo_region_reference (IntPtr region);
529
530                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
531                 internal static extern Status cairo_region_status (IntPtr region);
532
533                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
534                 internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
535
536                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
537                 internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle);
538
539                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
540                 internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
541
542                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
543                 internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
544
545                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
546                 internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle);
547
548                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
549                 internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
550
551                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
552                 internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle);
553
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);
556                 
557                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
558                 internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
559                 
560                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
561                 internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
562                 
563                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
564                 internal static extern void cairo_reset_clip (IntPtr cr);
565                 
566                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
567                 internal static extern void cairo_restore (IntPtr cr);
568                 
569                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
570                 internal static extern void cairo_rotate (IntPtr cr, double angle);
571                 
572                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
573                 internal static extern void cairo_save (IntPtr cr);
574                 
575                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
576                 internal static extern void cairo_scale (IntPtr cr, double sx, double sy);
577                 
578                 // ScaledFont
579                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
580                 internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
581                 
582                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
583                 internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
584                 
585                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
586                 internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
587
588                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
589                 internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
590
591                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
592                 internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
593
594                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
595                 internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
596
597                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
598                 internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
599
600                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
601                 internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
602
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);
605                 
606                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
607                 internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
608
609                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
610                 internal static extern Status cairo_scaled_font_status (IntPtr scaled_font);
611
612                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
613                 internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
614
615                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
616                 internal static extern IntPtr cairo_get_scaled_font (IntPtr cr);
617
618                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
619                 internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents);
620                 
621                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
622                 internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
623                 
624                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
625                 internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
626                 
627                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
628                 internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
629
630                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
631                 internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
632
633                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
634                 internal static extern int cairo_get_dash_count (IntPtr cr);
635                 
636                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
637                 internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule);
638                 
639                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
640                 internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
641                 
642                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
643                 internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
644                 
645                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
646                 internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
647                 
648                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
649                 internal static extern void cairo_set_font_size (IntPtr cr, double size);
650                 
651                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
652                 internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
653                 
654                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
655                 internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
656                 
657                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
658                 internal static extern void cairo_set_line_width (IntPtr cr, double width);
659                 
660                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
661                 internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
662                 
663                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
664                 internal static extern void cairo_set_miter_limit (IntPtr cr, double limit);
665                 
666                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
667                 internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op);
668                 
669                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
670                 internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
671                 
672                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
673                 internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
674
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);
677                 
678                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
679                 internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
680                 
681                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
682                 internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
683                 
684                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
685                 internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
686                 
687                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
688                 internal static extern void cairo_show_page (IntPtr cr);
689                 
690                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
691                 internal static extern void cairo_show_text (IntPtr cr, byte[] utf8);
692                 
693                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
694                 internal static extern Status cairo_status (IntPtr cr);
695                 
696                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
697                 internal static extern IntPtr cairo_status_to_string (Status status);
698                 
699                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
700                 internal static extern void cairo_stroke (IntPtr cr);
701                 
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);
704                 
705                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
706                 internal static extern void cairo_stroke_preserve (IntPtr cr);
707                 
708                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
709                 internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
710
711                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
712                 internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
713
714                 // Surface
715                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
716                 internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height);
717                 
718                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
719                 internal static extern void cairo_surface_destroy (IntPtr surface);
720                 
721                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
722                 internal static extern void cairo_surface_finish (IntPtr surface);
723                 
724                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
725                 internal static extern void cairo_surface_flush (IntPtr surface);
726
727                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
728                 internal static extern Content cairo_surface_get_content (IntPtr surface);
729                 
730                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
731                 internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
732
733                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
734                 internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
735
736                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
737                 internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
738
739                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
740                 internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
741                 
742                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
743                 internal static extern void cairo_surface_mark_dirty (IntPtr surface);
744                 
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);
747                 
748                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
749                 internal static extern IntPtr cairo_surface_reference (IntPtr surface);
750                 
751                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
752                 internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
753
754                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
755                 internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
756                 
757                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
758                 internal static extern Status cairo_surface_status (IntPtr surface);
759                 
760                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
761                 internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
762                 
763                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
764                 //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
765                 
766                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
767                 internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
768                 
769                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
770                 //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
771                 
772                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
773                 internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
774                 
775                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
776                 internal static extern void cairo_text_extents (IntPtr cr, byte[] utf8, out TextExtents extents);
777                 
778                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
779                 internal static extern void cairo_text_path (IntPtr ct, byte[] utf8);
780                 
781                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
782                 internal static extern void cairo_transform (IntPtr cr, Matrix matrix);
783                 
784                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
785                 internal static extern void cairo_translate (IntPtr cr, double tx, double ty);
786                 
787                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
788                 internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
789                 
790                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
791                 internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
792                 
793                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
794                 internal static extern int cairo_version ();
795                 
796                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
797                 internal static extern IntPtr cairo_version_string ();
798                 
799                 // DirectFBSurface
800                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
801                 internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
802                 
803                 // win32 fonts
804                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
805                 internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
806                 
807                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
808                 internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
809                 
810                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
811                 internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
812                 
813                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
814                 internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
815                 
816                 // win32 surface
817                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
818                 internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
819                 
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);
822
823                 // XcbSurface
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);
826                 
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);
829                 
830                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
831                 internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
832                 
833                 // XlibSurface
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);
836                 
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);
839                 
840                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
841                 internal static extern int cairo_xlib_surface_get_depth (IntPtr surface);
842
843                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
844                 internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
845
846                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
847                 internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
848
849                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
850                 internal static extern int cairo_xlib_surface_get_height (IntPtr surface);
851
852                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
853                 internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
854
855                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
856                 internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
857
858                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
859                 internal static extern int cairo_xlib_surface_get_width (IntPtr surface);
860                 
861                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
862                 internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
863                 
864                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
865                 internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);
866         }
867 }