2010-01-20 Zoltan Varga <vargaz@gmail.com>
[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 these so it is easier to find what is missing
40         // http://www.cairographics.org/manual/ix01.html
41
42         internal static class NativeMethods
43         {
44                 const string cairo = "libcairo-2.dll";
45                 
46                 //[DllImport (cairo)]
47                 //internal static extern void cairo_append_path (IntPtr cr, Path path);
48                 
49                 [DllImport (cairo)]
50                 internal static extern void cairo_arc (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
51                 
52                 [DllImport (cairo)]
53                 internal static extern void cairo_arc_negative (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
54
55                 [DllImport (cairo)]
56                 internal static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id);
57                 
58                 [DllImport (cairo)]
59                 internal static extern void cairo_clip (IntPtr cr);
60                 
61                 [DllImport (cairo)]
62                 internal static extern void cairo_clip_preserve (IntPtr cr);
63
64                 [DllImport (cairo)]
65                 internal static extern void cairo_clip_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
66                 
67                 [DllImport (cairo)]
68                 internal static extern void cairo_close_path (IntPtr cr);
69                 
70                 [DllImport (cairo)]
71                 internal static extern void cairo_copy_page (IntPtr cr);
72                 
73                 [DllImport (cairo)]
74                 internal static extern IntPtr cairo_copy_path (IntPtr cr);
75                 
76                 [DllImport (cairo)]
77                 internal static extern IntPtr cairo_copy_path_flat (IntPtr cr);
78
79                 [DllImport (cairo)]
80                 internal static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path);
81                 
82                 [DllImport (cairo)]
83                 internal static extern IntPtr cairo_create (IntPtr target);
84
85                 [DllImport (cairo)]
86                 internal static extern uint cairo_get_reference_count (IntPtr surface);
87                 
88                 [DllImport (cairo)]
89                 internal static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3);
90                 
91                 [DllImport (cairo)]
92                 internal static extern void cairo_debug_reset_static_data ();
93                 
94                 [DllImport (cairo)]
95                 internal static extern void cairo_destroy (IntPtr cr);
96                 
97                 [DllImport (cairo)]
98                 internal static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y);
99                 
100                 [DllImport (cairo)]
101                 internal static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy);
102
103                 [DllImport (cairo)]
104                 internal static extern void cairo_fill (IntPtr cr);
105                 
106                 [DllImport (cairo)]
107                 internal static extern void cairo_fill_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
108                 
109                 [DllImport (cairo)]
110                 internal static extern void cairo_fill_preserve (IntPtr cr);
111                 
112                 [DllImport (cairo)]
113                 internal static extern void cairo_font_extents (IntPtr cr, out FontExtents extents);
114                 
115                 // FontFace
116                 [DllImport (cairo)]
117                 internal static extern void cairo_font_face_destroy (IntPtr font_face);
118
119                 [DllImport (cairo)]
120                 internal static extern FontType cairo_font_face_get_type (IntPtr font_face);
121
122                 //[DllImport (cairo)]
123                 //internal static extern void cairo_font_face_get_user_data (IntPtr font_face);
124                 
125                 //[DllImport (cairo)]
126                 //internal static extern void cairo_font_face_set_user_data (IntPtr font_face);
127                 
128                 [DllImport (cairo)]
129                 internal static extern IntPtr cairo_font_face_reference (IntPtr font_face);
130                 
131                 [DllImport (cairo)]
132                 internal static extern Status cairo_font_face_status (IntPtr font_face);
133
134                 [DllImport (cairo)]
135                 internal static extern uint cairo_font_face_get_reference_count (IntPtr surface);
136                 
137                 // FontOptions
138                 [DllImport (cairo)]
139                 internal static extern IntPtr cairo_font_options_copy (IntPtr original);
140                 
141                 [DllImport (cairo)]
142                 internal static extern IntPtr cairo_font_options_create ();
143                 
144                 [DllImport (cairo)]
145                 internal static extern void cairo_font_options_destroy (IntPtr options);
146                 
147                 [DllImport (cairo)]
148                 [return: MarshalAs (UnmanagedType.U1)]
149                 internal static extern bool cairo_font_options_equal (IntPtr options, IntPtr other);
150                 
151                 [DllImport (cairo)]
152                 internal static extern Antialias cairo_font_options_get_antialias (IntPtr options);
153                 
154                 [DllImport (cairo)]
155                 internal static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options);
156                 
157                 [DllImport (cairo)]
158                 internal static extern HintStyle cairo_font_options_get_hint_style (IntPtr options);
159                 
160                 [DllImport (cairo)]
161                 internal static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options);
162                 
163                 [DllImport (cairo)]
164                 internal static extern long cairo_font_options_hash (IntPtr options);
165                 
166                 [DllImport (cairo)]
167                 internal static extern void cairo_font_options_merge (IntPtr options, IntPtr other);
168                 
169                 [DllImport (cairo)]
170                 internal static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa);
171                 
172                 [DllImport (cairo)]
173                 internal static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics);
174                 
175                 [DllImport (cairo)]
176                 internal static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style);
177                 
178                 [DllImport (cairo)]
179                 internal static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order);
180                 
181                 [DllImport (cairo)]
182                 internal static extern Status cairo_font_options_status (IntPtr options);
183                 
184                 // Freetype / FontConfig 
185                 [DllImport (cairo)]
186                 internal static extern IntPtr cairo_ft_font_face_create_for_ft_face (IntPtr face, int load_flags);
187                 
188                 [DllImport (cairo)]
189                 internal static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern);
190                 
191                 [DllImport (cairo)]
192                 internal static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern);
193                 
194                 [DllImport (cairo)]
195                 internal static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font);
196                 
197                 [DllImport (cairo)]
198                 internal static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font);
199                 
200                 [DllImport (cairo)]
201                 internal static extern Antialias cairo_get_antialias (IntPtr cr);
202                 
203                 [DllImport (cairo)]
204                 internal static extern void cairo_get_current_point (IntPtr cr, out double x, out double y);
205                 
206                 [DllImport (cairo)]
207                 internal static extern FillRule cairo_get_fill_rule (IntPtr cr);
208                 
209                 [DllImport (cairo)]
210                 internal static extern IntPtr cairo_get_font_face (IntPtr cr);
211                 
212                 [DllImport (cairo)]
213                 internal static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix);
214                 
215                 [DllImport (cairo)]
216                 internal static extern void cairo_get_font_options (IntPtr cr, IntPtr options);
217
218                 [DllImport (cairo)]
219                 internal static extern IntPtr cairo_get_group_target (IntPtr cr);
220                 
221                 [DllImport (cairo)]
222                 internal static extern LineCap cairo_get_line_cap (IntPtr cr);
223                 
224                 [DllImport (cairo)]
225                 internal static extern LineJoin cairo_get_line_join (IntPtr cr);
226                 
227                 [DllImport (cairo)]
228                 internal static extern double cairo_get_line_width (IntPtr cr);
229                 
230                 [DllImport (cairo)]
231                 internal static extern void cairo_get_matrix (IntPtr cr, Matrix matrix);
232                 
233                 [DllImport (cairo)]
234                 internal static extern double cairo_get_miter_limit (IntPtr cr);
235                 
236                 [DllImport (cairo)]
237                 internal static extern Operator cairo_get_operator (IntPtr cr);
238                 
239                 [DllImport (cairo)]
240                 internal static extern IntPtr cairo_get_source (IntPtr cr);
241                 
242                 [DllImport (cairo)]
243                 internal static extern IntPtr cairo_get_target (IntPtr cr);
244                 
245                 [DllImport (cairo)]
246                 internal static extern double cairo_get_tolerance (IntPtr cr);
247                 
248                 [DllImport (cairo)]
249                 internal static extern IntPtr cairo_glitz_surface_create (IntPtr surface);
250
251                 [DllImport (cairo)]
252                 internal static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents);
253                 
254                 [DllImport (cairo)]
255                 internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
256                 
257                 [DllImport (cairo)]
258                 internal static extern void cairo_identity_matrix (IntPtr cr);
259                 
260                 // ImageSurface
261                 [DllImport (cairo)]
262                 internal static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height);
263                 
264                 [DllImport (cairo)]
265                 internal static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Cairo.Format format, int width, int height, int stride);
266
267                 [DllImport (cairo)]
268                 internal static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Cairo.Format format, int width, int height, int stride);
269                 
270                 [DllImport (cairo)]
271                 internal static extern IntPtr cairo_image_surface_create_from_png  (string filename);
272                 
273                 //[DllImport (cairo)]
274                 //internal static extern IntPtr cairo_image_surface_create_from_png_stream  (string filename);
275
276                 [DllImport (cairo)]
277                 internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
278
279                 [DllImport (cairo)]
280                 internal static extern Format cairo_image_surface_get_format (IntPtr surface);
281                 
282                 [DllImport (cairo)]
283                 internal static extern int cairo_image_surface_get_height (IntPtr surface);
284
285                 [DllImport (cairo)]
286                 internal static extern int cairo_image_surface_get_stride (IntPtr surface);
287                 
288                 [DllImport (cairo)]
289                 internal static extern int cairo_image_surface_get_width  (IntPtr surface);
290
291                 [DllImport (cairo)]
292                 internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
293                 
294                 [DllImport (cairo)]
295                 [return: MarshalAs (UnmanagedType.U1)]
296                 internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
297                 
298                 [DllImport (cairo)]
299                 [return: MarshalAs (UnmanagedType.U1)]
300                 internal static extern bool cairo_in_stroke (IntPtr cr, double x, double y);
301                 
302                 [DllImport (cairo)]
303                 internal static extern void cairo_line_to (IntPtr cr, double x, double y);
304                 
305                 [DllImport (cairo)]
306                 internal static extern void cairo_mask (IntPtr cr, IntPtr pattern);
307                 
308                 [DllImport (cairo)]
309                 internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
310                 
311                 // Matrix
312                 [DllImport (cairo)]
313                 internal static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0);
314                 
315                 [DllImport (cairo)]
316                 internal static extern void cairo_matrix_init_identity (Matrix matrix);
317                 
318                 [DllImport (cairo)]
319                 internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
320                 
321                 [DllImport (cairo)]
322                 internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
323                 
324                 [DllImport (cairo)]
325                 internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
326                 
327                 [DllImport (cairo)]
328                 internal static extern Status cairo_matrix_invert (Matrix matrix);
329                 
330                 [DllImport (cairo)]
331                 internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
332                 
333                 [DllImport (cairo)]
334                 internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
335                 
336                 [DllImport (cairo)]
337                 internal static extern void cairo_matrix_rotate (Matrix matrix, double radians);
338                 
339                 [DllImport (cairo)]
340                 internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
341                 
342                 [DllImport (cairo)]
343                 internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
344                 
345                 [DllImport (cairo)]
346                 internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
347                 
348                 [DllImport (cairo)]
349                 internal static extern void cairo_move_to (IntPtr cr, double x, double y);
350                 
351                 [DllImport (cairo)]
352                 internal static extern void cairo_new_path (IntPtr cr);
353
354                 [DllImport (cairo)]
355                 internal static extern void cairo_new_sub_path (IntPtr cr);
356                 
357                 [DllImport (cairo)]
358                 internal static extern void cairo_paint (IntPtr cr);
359                 
360                 [DllImport (cairo)]
361                 internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
362                 
363                 [DllImport (cairo)]
364                 internal static extern void cairo_path_destroy (IntPtr path);
365                 
366                 // Pattern
367                 [DllImport (cairo)]
368                 internal static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue);
369                 
370                 [DllImport (cairo)]
371                 internal static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha);
372
373                 [DllImport (cairo)]
374                 internal static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count);
375                 [DllImport (cairo)]
376                 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);
377                 
378                 [DllImport (cairo)]
379                 internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
380
381                 [DllImport (cairo)]
382                 internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
383                 
384                 [DllImport (cairo)]
385                 internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
386
387                 [DllImport (cairo)]
388                 internal static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1);
389                 
390                 [DllImport (cairo)]
391                 internal static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
392
393                 [DllImport (cairo)]
394                 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);
395                 
396                 [DllImport (cairo)]
397                 internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
398                 
399                 [DllImport (cairo)]
400                 internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
401
402                 [DllImport (cairo)]
403                 internal static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha);
404                 
405                 [DllImport (cairo)]
406                 internal static extern void cairo_pattern_destroy (IntPtr pattern);
407                 
408                 [DllImport (cairo)]
409                 internal static extern Extend cairo_pattern_get_extend (IntPtr pattern);
410                 
411                 [DllImport (cairo)]
412                 internal static extern Filter cairo_pattern_get_filter (IntPtr pattern);
413                 
414                 [DllImport (cairo)]
415                 internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
416
417                 [DllImport (cairo)]
418                 internal static extern PatternType cairo_pattern_get_type (IntPtr pattern);
419                 
420                 [DllImport (cairo)]
421                 internal static extern IntPtr cairo_pattern_reference (IntPtr pattern);
422                 
423                 [DllImport (cairo)]
424                 internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
425                 
426                 [DllImport (cairo)]
427                 internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
428                 
429                 [DllImport (cairo)]
430                 internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
431                 
432                 [DllImport (cairo)]
433                 internal static extern Status cairo_pattern_status (IntPtr pattern);
434         
435                 // PdfSurface
436                 [DllImport (cairo)]
437                 internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
438                 
439                 //[DllImport (cairo)]
440                 //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
441                 
442                 [DllImport (cairo)]
443                 internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
444                 
445                 // PostscriptSurface
446                 [DllImport (cairo)]
447                 internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
448                 
449                 //[DllImport (cairo)]
450                 //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
451                 [DllImport (cairo)]
452                 internal static extern void cairo_ps_surface_begin_page_setup (IntPtr surface);
453                 
454                 [DllImport (cairo)]
455                 internal static extern void cairo_ps_surface_begin_setup (IntPtr surface);
456                 
457                 [DllImport (cairo)]
458                 internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
459                 
460                 [DllImport (cairo)]
461                 internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
462
463                 [DllImport (cairo)]
464                 internal static extern IntPtr cairo_pop_group (IntPtr cr);
465
466                 [DllImport (cairo)]
467                 internal static extern void cairo_pop_group_to_source (IntPtr cr);
468
469                 [DllImport (cairo)]
470                 internal static extern void cairo_push_group (IntPtr cr);
471
472                 [DllImport (cairo)]
473                 internal static extern void cairo_push_group_with_content (IntPtr cr, Content content);
474
475                 [DllImport (cairo)]
476                 internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
477
478                 [DllImport (cairo)]
479                 internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
480                 
481                 [DllImport (cairo)]
482                 internal static extern void cairo_reference (IntPtr cr);
483                 
484                 [DllImport (cairo)]
485                 internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
486                 
487                 [DllImport (cairo)]
488                 internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
489                 
490                 [DllImport (cairo)]
491                 internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
492                 
493                 [DllImport (cairo)]
494                 internal static extern void cairo_reset_clip (IntPtr cr);
495                 
496                 [DllImport (cairo)]
497                 internal static extern void cairo_restore (IntPtr cr);
498                 
499                 [DllImport (cairo)]
500                 internal static extern void cairo_rotate (IntPtr cr, double angle);
501                 
502                 [DllImport (cairo)]
503                 internal static extern void cairo_save (IntPtr cr);
504                 
505                 [DllImport (cairo)]
506                 internal static extern void cairo_scale (IntPtr cr, double sx, double sy);
507                 
508                 // ScaledFont
509                 [DllImport (cairo)]
510                 internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
511                 
512                 [DllImport (cairo)]
513                 internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
514                 
515                 [DllImport (cairo)]
516                 internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
517
518                 [DllImport (cairo)]
519                 internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
520
521                 [DllImport (cairo)]
522                 internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
523
524                 [DllImport (cairo)]
525                 internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
526
527                 [DllImport (cairo)]
528                 internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
529
530                 [DllImport (cairo)]
531                 internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
532
533                 [DllImport (cairo)]
534                 internal static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents);
535                 
536                 [DllImport (cairo)]
537                 internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
538
539                 [DllImport (cairo)]
540                 internal static extern Status cairo_scaled_font_status (IntPtr scaled_font);
541
542                 [DllImport (cairo)]
543                 internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
544
545                 [DllImport (cairo)]
546                 internal static extern IntPtr cairo_get_scaled_font (IntPtr cr);
547
548                 [DllImport (cairo)]
549                 internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, string utf8, out TextExtents extents);
550                 
551                 [DllImport (cairo)]
552                 internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
553                 
554                 [DllImport (cairo)]
555                 internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
556                 
557                 [DllImport (cairo)]
558                 internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
559
560                 [DllImport (cairo)]
561                 internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
562
563                 [DllImport (cairo)]
564                 internal static extern int cairo_get_dash_count (IntPtr cr);
565                 
566                 [DllImport (cairo)]
567                 internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule);
568                 
569                 [DllImport (cairo)]
570                 internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
571                 
572                 [DllImport (cairo)]
573                 internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
574                 
575                 [DllImport (cairo)]
576                 internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
577                 
578                 [DllImport (cairo)]
579                 internal static extern void cairo_set_font_size (IntPtr cr, double size);
580                 
581                 [DllImport (cairo)]
582                 internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
583                 
584                 [DllImport (cairo)]
585                 internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
586                 
587                 [DllImport (cairo)]
588                 internal static extern void cairo_set_line_width (IntPtr cr, double width);
589                 
590                 [DllImport (cairo)]
591                 internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
592                 
593                 [DllImport (cairo)]
594                 internal static extern void cairo_set_miter_limit (IntPtr cr, double limit);
595                 
596                 [DllImport (cairo)]
597                 internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op);
598                 
599                 [DllImport (cairo)]
600                 internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
601                 
602                 [DllImport (cairo)]
603                 internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
604
605                 [DllImport (cairo)]
606                 internal static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha);
607                 
608                 [DllImport (cairo)]
609                 internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
610                 
611                 [DllImport (cairo)]
612                 internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
613                 
614                 [DllImport (cairo)]
615                 internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
616                 
617                 [DllImport (cairo)]
618                 internal static extern void cairo_show_page (IntPtr cr);
619                 
620                 [DllImport (cairo)]
621                 internal static extern void cairo_show_text (IntPtr cr, string utf8);
622                 
623                 [DllImport (cairo)]
624                 internal static extern Status cairo_status (IntPtr cr);
625                 
626                 [DllImport (cairo)]
627                 internal static extern IntPtr cairo_status_to_string (Status status);
628                 
629                 [DllImport (cairo)]
630                 internal static extern void cairo_stroke (IntPtr cr);
631                 
632                 [DllImport (cairo)]
633                 internal static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
634                 
635                 [DllImport (cairo)]
636                 internal static extern void cairo_stroke_preserve (IntPtr cr);
637                 
638                 [DllImport (cairo)]
639                 internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
640
641                 [DllImport (cairo)]
642                 internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
643
644                 // Surface
645                 [DllImport (cairo)]
646                 internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height);
647                 
648                 [DllImport (cairo)]
649                 internal static extern void cairo_surface_destroy (IntPtr surface);
650                 
651                 [DllImport (cairo)]
652                 internal static extern void cairo_surface_finish (IntPtr surface);
653                 
654                 [DllImport (cairo)]
655                 internal static extern void cairo_surface_flush (IntPtr surface);
656
657                 [DllImport (cairo)]
658                 internal static extern Content cairo_surface_get_content (IntPtr surface);
659                 
660                 [DllImport (cairo)]
661                 internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
662
663                 [DllImport (cairo)]
664                 internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
665
666                 [DllImport (cairo)]
667                 internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
668                 
669                 [DllImport (cairo)]
670                 internal static extern void cairo_surface_mark_dirty (IntPtr surface);
671                 
672                 [DllImport (cairo)]
673                 internal static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height);
674                 
675                 [DllImport (cairo)]
676                 internal static extern IntPtr cairo_surface_reference (IntPtr surface);
677                 
678                 [DllImport (cairo)]
679                 internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
680
681                 [DllImport (cairo)]
682                 internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
683                 
684                 [DllImport (cairo)]
685                 internal static extern Status cairo_surface_status (IntPtr surface);
686                 
687                 [DllImport (cairo)]
688                 internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
689                 
690                 //[DllImport (cairo)]
691                 //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
692                 
693                 [DllImport (cairo)]
694                 internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
695                 
696                 //[DllImport (cairo)]
697                 //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
698                 
699                 [DllImport (cairo)]
700                 internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
701                 
702                 [DllImport (cairo)]
703                 internal static extern void cairo_text_extents (IntPtr cr, string utf8, out TextExtents extents);
704                 
705                 [DllImport (cairo)]
706                 internal static extern void cairo_text_path (IntPtr ct, string utf8);
707                 
708                 [DllImport (cairo)]
709                 internal static extern void cairo_transform (IntPtr cr, Matrix matrix);
710                 
711                 [DllImport (cairo)]
712                 internal static extern void cairo_translate (IntPtr cr, double tx, double ty);
713                 
714                 [DllImport (cairo)]
715                 internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
716                 
717                 [DllImport (cairo)]
718                 internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
719                 
720                 [DllImport (cairo)]
721                 internal static extern int cairo_version ();
722                 
723                 [DllImport (cairo)]
724                 internal static extern IntPtr cairo_version_string ();
725                 
726                 // DirectFBSurface
727                 [DllImport (cairo)]
728                 internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
729                 
730                 // win32 fonts
731                 [DllImport (cairo)]
732                 internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
733                 
734                 [DllImport (cairo)]
735                 internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
736                 
737                 [DllImport (cairo)]
738                 internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
739                 
740                 [DllImport (cairo)]
741                 internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
742                 
743                 // win32 surface
744                 [DllImport (cairo)]
745                 internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
746                 
747                 [DllImport (cairo)]
748                 internal static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height);
749
750                 // XcbSurface
751                 [DllImport (cairo)]
752                 internal static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height);
753                 
754                 [DllImport (cairo)]
755                 internal static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height);
756                 
757                 [DllImport (cairo)]
758                 internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
759                 
760                 // XlibSurface
761                 [DllImport (cairo)]
762                 internal static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height);
763                 
764                 [DllImport (cairo)]
765                 internal static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height);
766                 
767                 [DllImport (cairo)]
768                 internal static extern int cairo_xlib_surface_get_depth (IntPtr surface);
769
770                 [DllImport (cairo)]
771                 internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
772
773                 [DllImport (cairo)]
774                 internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
775
776                 [DllImport (cairo)]
777                 internal static extern int cairo_xlib_surface_get_height (IntPtr surface);
778
779                 [DllImport (cairo)]
780                 internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
781
782                 [DllImport (cairo)]
783                 internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
784
785                 [DllImport (cairo)]
786                 internal static extern int cairo_xlib_surface_get_width (IntPtr surface);
787                 
788                 [DllImport (cairo)]
789                 internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
790                 
791                 [DllImport (cairo)]
792                 internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);
793         }
794 }