Merge pull request #1079 from esdrubal/webclient_cancel
[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                 [return: MarshalAs (UnmanagedType.U1)]
263                 internal static extern bool cairo_has_current_point (IntPtr cr);
264
265                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
266                 internal static extern void cairo_identity_matrix (IntPtr cr);
267                 
268                 // ImageSurface
269                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
270                 internal static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height);
271                 
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);
274
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);
277                 
278                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
279                 internal static extern IntPtr cairo_image_surface_create_from_png  (string filename);
280                 
281                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
282                 //internal static extern IntPtr cairo_image_surface_create_from_png_stream  (string filename);
283
284                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
285                 internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
286
287                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
288                 internal static extern Format cairo_image_surface_get_format (IntPtr surface);
289                 
290                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
291                 internal static extern int cairo_image_surface_get_height (IntPtr surface);
292
293                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
294                 internal static extern int cairo_image_surface_get_stride (IntPtr surface);
295                 
296                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
297                 internal static extern int cairo_image_surface_get_width  (IntPtr surface);
298
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);
302
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);
306                 
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);
310                 
311                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
312                 internal static extern void cairo_line_to (IntPtr cr, double x, double y);
313                 
314                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
315                 internal static extern void cairo_mask (IntPtr cr, IntPtr pattern);
316                 
317                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
318                 internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
319                 
320                 // Matrix
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);
323                 
324                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
325                 internal static extern void cairo_matrix_init_identity (Matrix matrix);
326                 
327                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
328                 internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
329                 
330                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
331                 internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
332                 
333                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
334                 internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
335                 
336                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
337                 internal static extern Status cairo_matrix_invert (Matrix matrix);
338                 
339                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
340                 internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
341                 
342                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
343                 internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
344                 
345                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
346                 internal static extern void cairo_matrix_rotate (Matrix matrix, double radians);
347                 
348                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
349                 internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
350                 
351                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
352                 internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
353                 
354                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
355                 internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
356                 
357                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
358                 internal static extern void cairo_move_to (IntPtr cr, double x, double y);
359                 
360                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
361                 internal static extern void cairo_new_path (IntPtr cr);
362
363                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
364                 internal static extern void cairo_new_sub_path (IntPtr cr);
365                 
366                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
367                 internal static extern void cairo_paint (IntPtr cr);
368                 
369                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
370                 internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
371                 
372                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
373                 internal static extern void cairo_path_destroy (IntPtr path);
374                 
375                 // Pattern
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);
378                 
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);
381
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);
386                 
387                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
388                 internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
389
390                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
391                 internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
392                 
393                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
394                 internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
395
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);
398                 
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);
401
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);
404                 
405                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
406                 internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
407                 
408                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
409                 internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
410
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);
413                 
414                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
415                 internal static extern void cairo_pattern_destroy (IntPtr pattern);
416                 
417                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
418                 internal static extern Extend cairo_pattern_get_extend (IntPtr pattern);
419                 
420                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
421                 internal static extern Filter cairo_pattern_get_filter (IntPtr pattern);
422                 
423                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
424                 internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
425
426                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
427                 internal static extern PatternType cairo_pattern_get_type (IntPtr pattern);
428                 
429                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
430                 internal static extern IntPtr cairo_pattern_reference (IntPtr pattern);
431                 
432                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
433                 internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
434                 
435                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
436                 internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
437                 
438                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
439                 internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
440                 
441                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
442                 internal static extern Status cairo_pattern_status (IntPtr pattern);
443         
444                 // PdfSurface
445                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
446                 internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
447                 
448                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
449                 //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
450                 
451                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
452                 internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
453                 
454                 // PostscriptSurface
455                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
456                 internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
457                 
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);
462                 
463                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
464                 internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
465                 
466                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
467                 internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
468                 
469                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
470                 internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
471
472                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
473                 internal static extern IntPtr cairo_pop_group (IntPtr cr);
474
475                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
476                 internal static extern void cairo_pop_group_to_source (IntPtr cr);
477
478                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
479                 internal static extern void cairo_push_group (IntPtr cr);
480
481                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
482                 internal static extern void cairo_push_group_with_content (IntPtr cr, Content content);
483
484                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
485                 internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
486
487                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
488                 internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
489                 
490                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
491                 internal static extern void cairo_reference (IntPtr cr);
492                 
493                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
494                 internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
495
496                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
497                 internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle);
498
499                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
500                 internal static extern IntPtr cairo_region_copy (IntPtr original);
501
502                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
503                 internal static extern IntPtr cairo_region_create ();
504
505                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
506                 internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect);
507
508                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
509                 internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count);
510
511                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
512                 internal static extern void cairo_region_destroy (IntPtr region);
513
514                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
515                 internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
516
517                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
518                 internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents);
519
520                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
521                 internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle);
522
523                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
524                 internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
525
526                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
527                 internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle);
528
529                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
530                 internal static extern bool cairo_region_is_empty (IntPtr region);
531
532                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
533                 internal static extern int cairo_region_num_rectangles (IntPtr region);
534
535                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
536                 internal static extern IntPtr cairo_region_reference (IntPtr region);
537
538                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
539                 internal static extern Status cairo_region_status (IntPtr region);
540
541                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
542                 internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
543
544                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
545                 internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle);
546
547                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
548                 internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
549
550                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
551                 internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
552
553                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
554                 internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle);
555
556                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
557                 internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
558
559                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
560                 internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle);
561
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);
564                 
565                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
566                 internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
567                 
568                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
569                 internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
570                 
571                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
572                 internal static extern void cairo_reset_clip (IntPtr cr);
573                 
574                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
575                 internal static extern void cairo_restore (IntPtr cr);
576                 
577                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
578                 internal static extern void cairo_rotate (IntPtr cr, double angle);
579                 
580                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
581                 internal static extern void cairo_save (IntPtr cr);
582                 
583                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
584                 internal static extern void cairo_scale (IntPtr cr, double sx, double sy);
585                 
586                 // ScaledFont
587                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
588                 internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
589                 
590                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
591                 internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
592                 
593                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
594                 internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
595
596                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
597                 internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
598
599                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
600                 internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
601
602                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
603                 internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
604
605                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
606                 internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
607
608                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
609                 internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
610
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);
613                 
614                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
615                 internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
616
617                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
618                 internal static extern Status cairo_scaled_font_status (IntPtr scaled_font);
619
620                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
621                 internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
622
623                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
624                 internal static extern IntPtr cairo_get_scaled_font (IntPtr cr);
625
626                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
627                 internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents);
628                 
629                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
630                 internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
631                 
632                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
633                 internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
634                 
635                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
636                 internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
637
638                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
639                 internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
640
641                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
642                 internal static extern int cairo_get_dash_count (IntPtr cr);
643                 
644                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
645                 internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule);
646                 
647                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
648                 internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
649                 
650                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
651                 internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
652                 
653                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
654                 internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
655                 
656                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
657                 internal static extern void cairo_set_font_size (IntPtr cr, double size);
658                 
659                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
660                 internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
661                 
662                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
663                 internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
664                 
665                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
666                 internal static extern void cairo_set_line_width (IntPtr cr, double width);
667                 
668                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
669                 internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
670                 
671                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
672                 internal static extern void cairo_set_miter_limit (IntPtr cr, double limit);
673                 
674                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
675                 internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op);
676                 
677                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
678                 internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
679                 
680                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
681                 internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
682
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);
685                 
686                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
687                 internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
688                 
689                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
690                 internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
691                 
692                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
693                 internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
694                 
695                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
696                 internal static extern void cairo_show_page (IntPtr cr);
697                 
698                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
699                 internal static extern void cairo_show_text (IntPtr cr, byte[] utf8);
700                 
701                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
702                 internal static extern Status cairo_status (IntPtr cr);
703                 
704                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
705                 internal static extern IntPtr cairo_status_to_string (Status status);
706                 
707                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
708                 internal static extern void cairo_stroke (IntPtr cr);
709                 
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);
712                 
713                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
714                 internal static extern void cairo_stroke_preserve (IntPtr cr);
715                 
716                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
717                 internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
718
719                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
720                 internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
721
722                 // Surface
723                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
724                 internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height);
725                 
726                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
727                 internal static extern void cairo_surface_destroy (IntPtr surface);
728                 
729                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
730                 internal static extern void cairo_surface_finish (IntPtr surface);
731                 
732                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
733                 internal static extern void cairo_surface_flush (IntPtr surface);
734
735                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
736                 internal static extern Content cairo_surface_get_content (IntPtr surface);
737                 
738                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
739                 internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
740
741                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
742                 internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
743
744                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
745                 internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
746
747                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
748                 internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
749                 
750                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
751                 internal static extern void cairo_surface_mark_dirty (IntPtr surface);
752                 
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);
755                 
756                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
757                 internal static extern IntPtr cairo_surface_reference (IntPtr surface);
758                 
759                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
760                 internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
761
762                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
763                 internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
764                 
765                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
766                 internal static extern Status cairo_surface_status (IntPtr surface);
767                 
768                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
769                 internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
770                 
771                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
772                 //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
773                 
774                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
775                 internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
776                 
777                 //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
778                 //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
779                 
780                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
781                 internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
782                 
783                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
784                 internal static extern void cairo_text_extents (IntPtr cr, byte[] utf8, out TextExtents extents);
785                 
786                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
787                 internal static extern void cairo_text_path (IntPtr ct, byte[] utf8);
788                 
789                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
790                 internal static extern void cairo_transform (IntPtr cr, Matrix matrix);
791                 
792                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
793                 internal static extern void cairo_translate (IntPtr cr, double tx, double ty);
794                 
795                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
796                 internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
797                 
798                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
799                 internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
800                 
801                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
802                 internal static extern int cairo_version ();
803                 
804                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
805                 internal static extern IntPtr cairo_version_string ();
806                 
807                 // DirectFBSurface
808                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
809                 internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
810                 
811                 // win32 fonts
812                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
813                 internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
814                 
815                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
816                 internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
817                 
818                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
819                 internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
820                 
821                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
822                 internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
823                 
824                 // win32 surface
825                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
826                 internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
827                 
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);
830
831                 // XcbSurface
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);
834                 
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);
837                 
838                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
839                 internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
840                 
841                 // XlibSurface
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);
844                 
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);
847                 
848                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
849                 internal static extern int cairo_xlib_surface_get_depth (IntPtr surface);
850
851                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
852                 internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
853
854                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
855                 internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
856
857                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
858                 internal static extern int cairo_xlib_surface_get_height (IntPtr surface);
859
860                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
861                 internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
862
863                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
864                 internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
865
866                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
867                 internal static extern int cairo_xlib_surface_get_width (IntPtr surface);
868                 
869                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
870                 internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
871                 
872                 [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
873                 internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);
874         }
875 }