diff --git a/cairo/Context.cs b/cairo/Context.cs index 8be45624f..8e2a3349d 100644 --- a/cairo/Context.cs +++ b/cairo/Context.cs @@ -186,7 +186,7 @@ namespace Cairo { public Context (IntPtr state) { - this.state = state; + this.state = NativeMethods.cairo_reference (state); } ~Context () @@ -359,6 +359,10 @@ namespace Cairo { } } + public bool HasCurrentPoint { + get { return NativeMethods.cairo_has_current_point (state); } + } + public Cairo.Surface Target { set { if (state != IntPtr.Zero) @@ -530,6 +534,11 @@ namespace Cairo { NativeMethods.cairo_append_path (state, path.handle); } + public void PathExtents (out double x1, out double y1, out double x2, out double y2) + { + NativeMethods.cairo_path_extents (state, out x1, out y1, out x2, out y2); + } + #endregion #region Painting Methods @@ -609,6 +618,11 @@ namespace Cairo { return NativeMethods.cairo_in_stroke (state, x, y); } + public bool InClip (double x, double y) + { + return NativeMethods.cairo_in_clip (state, x, y); + } + public bool InFill (double x, double y) { return NativeMethods.cairo_in_fill (state, x, y); @@ -898,5 +912,10 @@ namespace Cairo { return extents; } + + public static int FormatStrideForWidth (Format format, int width) + { + return NativeMethods.cairo_format_stride_for_width (format, width); + } } } diff --git a/cairo/Device.cs b/cairo/Device.cs new file mode 100644 index 000000000..06d31c523 --- /dev/null +++ b/cairo/Device.cs @@ -0,0 +1,85 @@ +// Copyright (c) 2011 Novell, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; + +namespace Cairo +{ + + public enum DeviceType { + Drm, + GL, + Script, + Xcb, + Xlib, + Xml, + } + + public class Device : IDisposable + { + + IntPtr handle; + + internal Device (IntPtr handle) + { + this.handle = NativeMethods.cairo_device_reference (handle); + } + + public Status Acquire () + { + return NativeMethods.cairo_device_acquire (handle); + } + + public void Dispose () + { + if (handle != IntPtr.Zero) + NativeMethods.cairo_device_destroy (handle); + handle = IntPtr.Zero; + GC.SuppressFinalize (this); + } + + public void Finish () + { + NativeMethods.cairo_device_finish (handle); + } + + public void Flush () + { + NativeMethods.cairo_device_flush (handle); + } + + public void Release () + { + NativeMethods.cairo_device_release (handle); + } + + public Status Status { + get { return NativeMethods.cairo_device_status (handle); } + } + + public DeviceType Type { + get { return NativeMethods.cairo_device_get_type (handle); } + } + + } +} + diff --git a/cairo/FontFace.cs b/cairo/FontFace.cs index c2944b84b..efa479b6d 100644 --- a/cairo/FontFace.cs +++ b/cairo/FontFace.cs @@ -51,13 +51,13 @@ namespace Cairo ~FontFace () { // Since Cairo is not thread safe, we can not unref the - // font_face here, the programmer must do this with IDisposable.Dispose + // font_face here, the programmer must do this with Dispose Console.Error.WriteLine ("Programmer forgot to call Dispose on the FontFace"); Dispose (false); } - void IDisposable.Dispose () + public void Dispose () { Dispose (true); } diff --git a/cairo/ImageSurface.cs b/cairo/ImageSurface.cs index bea56baf1..d8c14a373 100644 --- a/cairo/ImageSurface.cs +++ b/cairo/ImageSurface.cs @@ -51,7 +51,10 @@ namespace Cairo { } } - public ImageSurface (ref byte[] data, Cairo.Format format, int width, int height, int stride) + [Obsolete ("Replaced by ctor (byte[] data, Cairo.Format format, int width, int height, int stride)")] + public ImageSurface (ref byte[] data, Cairo.Format format, int width, int height, int stride) : this (data, format, width, height, stride) {} + + public ImageSurface (byte[] data, Cairo.Format format, int width, int height, int stride) { surface = NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride); lock (surfaces.SyncRoot){ diff --git a/cairo/Makefile.am b/cairo/Makefile.am index 16e815f42..65d49638e 100644 --- a/cairo/Makefile.am +++ b/cairo/Makefile.am @@ -14,6 +14,7 @@ sources = \ Cairo.cs \ Content.cs \ Context.cs \ + Device.cs \ DirectFBSurface.cs \ Extend.cs \ FillRule.cs \ diff --git a/cairo/NativeMethods.cs b/cairo/NativeMethods.cs index eb929a5b7..d51790657 100644 --- a/cairo/NativeMethods.cs +++ b/cairo/NativeMethods.cs @@ -39,759 +39,1063 @@ namespace Cairo // sort these so it is easier to find what is missing // http://www.cairographics.org/manual/ix01.html - public class NativeMethods + internal static class NativeMethods { - private NativeMethods () {} - const string cairo = "libcairo-2.dll"; - //[DllImport (cairo)] - //internal static extern void cairo_append_path (IntPtr cr, Path path); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_append_path (IntPtr cr, IntPtr path); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_arc (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_arc_negative (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_clip (IntPtr cr); - [DllImport (cairo)] - internal static extern void cairo_clip_preserve (IntPtr cr); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_clip_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_clip_preserve (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_close_path (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_copy_page (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_copy_path (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_copy_path_flat (IntPtr cr); - [DllImport (cairo)] - internal static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_create (IntPtr target); - [DllImport (cairo)] - internal static extern uint cairo_get_reference_count (IntPtr surface); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_debug_reset_static_data (); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_destroy (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_device_acquire (IntPtr device); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_device_destroy (IntPtr device); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_device_finish (IntPtr device); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_device_flush (IntPtr device); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern uint cairo_device_get_reference_count (IntPtr device); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern DeviceType cairo_device_get_type (IntPtr device); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_device_get_user_data (IntPtr device, IntPtr key); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_device_reference (IntPtr device); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_device_release (IntPtr device); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern int cairo_device_set_user_data (IntPtr device, IntPtr key, IntPtr user_data, IntPtr destroy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_device_status (IntPtr device); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_fill (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_fill_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_fill_preserve (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_extents (IntPtr cr, out FontExtents extents); - // FontFace - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_face_destroy (IntPtr font_face); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern uint cairo_font_face_get_reference_count (IntPtr font_face); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern FontType cairo_font_face_get_type (IntPtr font_face); - //[DllImport (cairo)] - //internal static extern void cairo_font_face_get_user_data (IntPtr font_face); + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_font_face_get_user_data (IntPtr font_face, IntPtr key); - //[DllImport (cairo)] - //internal static extern void cairo_font_face_set_user_data (IntPtr font_face); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_font_face_reference (IntPtr font_face); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_font_face_set_user_data (IntPtr font_face, IntPtr key, IntPtr user_data, DestroyFunc destroy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_font_face_status (IntPtr font_face); - [DllImport (cairo)] - internal static extern uint cairo_font_face_get_reference_count (IntPtr surface); - - // FontOptions - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_font_options_copy (IntPtr original); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_font_options_create (); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_options_destroy (IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] [return: MarshalAs (UnmanagedType.U1)] internal static extern bool cairo_font_options_equal (IntPtr options, IntPtr other); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Antialias cairo_font_options_get_antialias (IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern HintStyle cairo_font_options_get_hint_style (IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern long cairo_font_options_hash (IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_options_merge (IntPtr options, IntPtr other); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_font_options_status (IntPtr options); - // Freetype / FontConfig - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern int cairo_format_stride_for_width (Format format, int width); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_ft_font_face_create_for_ft_face (IntPtr face, int load_flags); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Antialias cairo_get_antialias (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_get_current_point (IntPtr cr, out double x, out double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern int cairo_get_dash_count (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern FillRule cairo_get_fill_rule (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_get_font_face (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_get_font_options (IntPtr cr, IntPtr options); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_get_group_target (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern LineCap cairo_get_line_cap (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern LineJoin cairo_get_line_join (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern double cairo_get_line_width (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_get_matrix (IntPtr cr, Matrix matrix); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern double cairo_get_miter_limit (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Operator cairo_get_operator (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern uint cairo_get_reference_count (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_get_scaled_font (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_get_source (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_get_target (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern double cairo_get_tolerance (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_get_user_data (IntPtr cr, IntPtr key); + + // this isn't in the 1.10 doc index + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_glitz_surface_create (IntPtr surface); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_glyph_allocate (int num_glyphs); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_glyph_free (IntPtr glyphs); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + [return: MarshalAs (UnmanagedType.U1)] + internal static extern bool cairo_has_current_point (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_identity_matrix (IntPtr cr); - // ImageSurface - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Cairo.Format format, int width, int height, int stride); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Cairo.Format format, int width, int height, int stride); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_image_surface_create_from_png (string filename); - //[DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] //internal static extern IntPtr cairo_image_surface_create_from_png_stream (string filename); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Format cairo_image_surface_get_format (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_image_surface_get_height (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_image_surface_get_stride (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_image_surface_get_width (IntPtr surface); - [DllImport (cairo)] - internal static extern uint cairo_surface_get_reference_count (IntPtr surface); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + [return: MarshalAs (UnmanagedType.U1)] + internal static extern bool cairo_in_clip (IntPtr cr, double x, double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] [return: MarshalAs (UnmanagedType.U1)] internal static extern bool cairo_in_fill (IntPtr cr, double x, double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] [return: MarshalAs (UnmanagedType.U1)] internal static extern bool cairo_in_stroke (IntPtr cr, double x, double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_line_to (IntPtr cr, double x, double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_mask (IntPtr cr, IntPtr pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y); - // Matrix - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_init_identity (Matrix matrix); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_matrix_invert (Matrix matrix); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b); - [DllImport (cairo)] - internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_rotate (Matrix matrix, double radians); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_move_to (IntPtr cr, double x, double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_new_path (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_new_sub_path (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_paint (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_path_destroy (IntPtr path); - // Pattern - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_path_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha); - [DllImport (cairo)] - internal static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count); - [DllImport (cairo)] - 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); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface); - [DllImport (cairo)] - internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1); - [DllImport (cairo)] - internal static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1); - [DllImport (cairo)] - 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); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a); - [DllImport (cairo)] - internal static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_destroy (IntPtr pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + 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); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Extend cairo_pattern_get_extend (IntPtr pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Filter cairo_pattern_get_filter (IntPtr pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + 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); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern uint cairo_pattern_get_reference_count (IntPtr pattern); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern PatternType cairo_pattern_get_type (IntPtr pattern); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_pattern_get_user_data (IntPtr pattern, IntPtr key); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pattern_reference (IntPtr pattern); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_pattern_set_user_data (IntPtr pattern, IntPtr key, IntPtr user_data, DestroyFunc destroy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_pattern_status (IntPtr pattern); - // PdfSurface - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_pdf_get_versions (IntPtr versions, out int num_versions); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height); - //[DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_pdf_surface_restrict_to_version (IntPtr surface, PdfVersion version); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y); - // PostscriptSurface - [DllImport (cairo)] - internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height); + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_pdf_version_to_string (PdfVersion version); - //[DllImport (cairo)] - //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height); - [DllImport (cairo)] - internal static extern void cairo_ps_surface_begin_page_setup (IntPtr surface); - - [DllImport (cairo)] - internal static extern void cairo_ps_surface_begin_setup (IntPtr surface); - - [DllImport (cairo)] - internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment); - - [DllImport (cairo)] - internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_pop_group (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_pop_group_to_source (IntPtr cr); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_ps_get_levels (IntPtr levels, out int num_levels); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_ps_level_to_string (PSLevel version); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //[return: MarshalAs (UnmanagedType.U1)] + //internal static extern bool cairo_ps_surface_get_eps (IntPtr surface); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_ps_surface_restrict_to_level (IntPtr surface, PSLevel level); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_ps_surface_set_eps (IntPtr surface, bool eps); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_push_group (IntPtr cr); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_push_group_with_content (IntPtr cr, Content content); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_quartz_font_face_create_for_atsui_font_id (int font_id); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_quartz_font_face_create_for_cgfont (IntPtr font); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_quartz_surface_create_for_cg_context (IntPtr context, uint width, uint height); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_quartz_surface_get_cg_context (IntPtr surface); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_recording_surface_create (Content content, IntPtr extents); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_recording_surface_ink_extents (IntPtr surface, out double x, out double y, out double width, out double height); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height); - [DllImport (cairo)] - internal static extern void cairo_reference (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3); - - [DllImport (cairo)] - internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy); - - [DllImport (cairo)] - internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy); - - [DllImport (cairo)] - internal static extern void cairo_reset_clip (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_restore (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_rotate (IntPtr cr, double angle); - - [DllImport (cairo)] - internal static extern void cairo_save (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_scale (IntPtr cr, double sx, double sy); - - // ScaledFont - [DllImport (cairo)] - internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options); - - [DllImport (cairo)] - internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents); - - [DllImport (cairo)] - internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix); - - [DllImport (cairo)] - internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix); - - [DllImport (cairo)] - internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents); - - [DllImport (cairo)] - internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern Status cairo_scaled_font_status (IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font); - - [DllImport (cairo)] - internal static extern IntPtr cairo_get_scaled_font (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, string utf8, out TextExtents extents); - - [DllImport (cairo)] - internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight); - - [DllImport (cairo)] - internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias); - - [DllImport (cairo)] - internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset); - - [DllImport (cairo)] - internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset); - - [DllImport (cairo)] - internal static extern int cairo_get_dash_count (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule); - - [DllImport (cairo)] - internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace); - - [DllImport (cairo)] - internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix); - - [DllImport (cairo)] - internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options); - - [DllImport (cairo)] - internal static extern void cairo_set_font_size (IntPtr cr, double size); - - [DllImport (cairo)] - internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap); - - [DllImport (cairo)] - internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join); - - [DllImport (cairo)] - internal static extern void cairo_set_line_width (IntPtr cr, double width); - - [DllImport (cairo)] - internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix); - - [DllImport (cairo)] - internal static extern void cairo_set_miter_limit (IntPtr cr, double limit); - - [DllImport (cairo)] - internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op); - - [DllImport (cairo)] - internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern); - - [DllImport (cairo)] - internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue); - - [DllImport (cairo)] - internal static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha); - - [DllImport (cairo)] - internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y); - - [DllImport (cairo)] - internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance); - - [DllImport (cairo)] - internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs); - - [DllImport (cairo)] - internal static extern void cairo_show_page (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_show_text (IntPtr cr, string utf8); - - [DllImport (cairo)] - internal static extern Status cairo_status (IntPtr cr); - - [DllImport (cairo)] - internal static extern IntPtr cairo_status_to_string (Status status); - - [DllImport (cairo)] - internal static extern void cairo_stroke (IntPtr cr); - - [DllImport (cairo)] - internal static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); - - [DllImport (cairo)] - internal static extern void cairo_stroke_preserve (IntPtr cr); - - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list); - [DllImport (cairo)] - internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr); + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_reference (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y); - // Surface - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_region_copy (IntPtr original); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_region_create (); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_region_destroy (IntPtr region); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern bool cairo_region_equal (IntPtr a, IntPtr b); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern bool cairo_region_is_empty (IntPtr region); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern int cairo_region_num_rectangles (IntPtr region); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_region_reference (IntPtr region); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_status (IntPtr region); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_region_translate (IntPtr region, int dx, int dy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_union (IntPtr dst, IntPtr other); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_reset_clip (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_restore (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_rotate (IntPtr cr, double angle); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_save (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_scale (IntPtr cr, double sx, double sy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern uint cairo_scaled_font_get_reference_count (IntPtr scaled_font); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_scaled_font_get_scale_matrix (IntPtr scaled_font, out Matrix matrix); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_scaled_font_get_user_data (IntPtr scaled_font, IntPtr key); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_scaled_font_set_user_data (IntPtr scaled_font, IntPtr key, IntPtr user_data, DestroyFunc destroy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_scaled_font_status (IntPtr scaled_font); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, string utf8, out TextExtents extents); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_scaled_font_text_to_glyphs (IntPtr scaled_font, double x, double y, IntPtr utf8, IntPtr glyphs, out int num_glyphs, IntPtr clusters, out int num_clusters, IntPtr cluster_flags); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_font_size (IntPtr cr, double size); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_line_width (IntPtr cr, double width); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_miter_limit (IntPtr cr, double limit); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance); + + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_set_user_data (IntPtr cr, IntPtr key, IntPtr user_data, DestroyFunc destroy); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_show_page (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_show_text (IntPtr cr, string utf8); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_show_text_glyphs (IntPtr cr, IntPtr utf8, int utf8_len, IntPtr glyphs, int num_glyphs, IntPtr clusters, int num_clusters, ClusterFlags cluster_flags); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern Status cairo_status (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_status_to_string (Status status); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_stroke (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern void cairo_stroke_preserve (IntPtr cr); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_surface_copy_page (IntPtr surface); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_surface_create_for_rectangle (IntPtr surface, double x, double y, double width, double height); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_destroy (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_finish (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_flush (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Content cairo_surface_get_content (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern IntPtr cairo_surface_get_device (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_surface_get_fallback_resolution (IntPtr surface, out double x_pixels_per_inch, out double y_pixels_per_inch); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_surface_get_mime_data (IntPtr surface, IntPtr mime_type, out IntPtr data, out IntPtr length); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + internal static extern uint cairo_surface_get_reference_count (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern SurfaceType cairo_surface_get_type (IntPtr surface); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_surface_get_user_data (IntPtr surface, IntPtr key); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //[return: MarshalAs (UnmanagedType.U1)] + //internal static extern bool cairo_surface_has_show_text_glyphs (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_mark_dirty (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_surface_reference (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y); - [DllImport (cairo)] + // DONTCARE + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern Status cairo_surface_set_user_data (IntPtr surface, IntPtr key, IntPtr user_data DestroyFunc destroy); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_surface_show_page (IntPtr surface); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_surface_status (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename); - //[DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_svg_get_versions (out IntPtr versions, out int num_versions); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height); - //[DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_svg_version_to_string (SvgVersion version); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_text_cluster_allocate (int num_clusters); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_text_cluster_free (IntPtr clusters); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_text_extents (IntPtr cr, string utf8, out TextExtents extents); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_text_path (IntPtr ct, string utf8); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_toy_font_face_create (IntPtr face, FontSlant slant, FontWeight weight); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_toy_font_face_get_family (IntPtr face); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern FontSlant cairo_toy_font_face_get_slant (IntPtr face); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern FontWeight cairo_toy_font_face_get_weight (IntPtr face); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_transform (IntPtr cr, Matrix matrix); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_translate (IntPtr cr, double tx, double ty); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_user_font_face_create (); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern ScaledFontInitFunc cairo_user_font_face_get_init_func (IntPtr face); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern ScaledFontRenderGlyphFunc cairo_user_font_face_get_render_glyph_func (IntPtr face); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern blah cairo_user_font_face_get_text_to_glyphs_func (blah) + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern blah cairo_user_font_face_get_unicode_to_glyph_func (blah) + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern blah cairo_user_font_face_set_init_func (blah) + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern blah cairo_user_font_face_set_render_glyph_func (blah) + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern blah cairo_user_font_face_set_text_to_glyphs_func (blah) + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern blah cairo_user_font_face_set_unicode_to_glyph_func (blah) + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_version (); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_version_string (); - // DirectFBSurface - [DllImport (cairo)] + // not in the 1.10 doc index + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface); - // win32 fonts - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_win32_font_face_create_for_hfont (IntPtr hfont); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_win32_font_face_create_for_logfontw_hfont (IntPtr logfontw, IntPtr hfont); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_win32_printing_surface_create (IntPtr hdc); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font); - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_win32_scaled_font_get_logical_to_device (IntPtr scaled_font, out IntPtr matrix); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern void cairo_win32_scaled_font_get_device_to_logical (IntPtr scaled_font, out IntPtr matrix); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc); - // win32 surface - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height); - // XcbSurface - [DllImport (cairo)] + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_win32_surface_create_with_dib (Format format, int width, int height); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_win32_surface_get_dc (IntPtr surface); + + //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + //internal static extern IntPtr cairo_win32_surface_get_image (IntPtr surface); + + // not in the 1.10 doc index + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height); - [DllImport (cairo)] + // not in the 1.10 doc index + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height); - [DllImport (cairo)] + // not in the 1.10 doc index + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height); - // XlibSurface - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_xlib_surface_get_depth (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_xlib_surface_get_height (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern int cairo_xlib_surface_get_width (IntPtr surface); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height); - [DllImport (cairo)] + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height); } } diff --git a/cairo/PSSurface.cs b/cairo/PSSurface.cs index 1304be623..87d1f11b2 100644 --- a/cairo/PSSurface.cs +++ b/cairo/PSSurface.cs @@ -46,12 +46,12 @@ namespace Cairo { public void BeginPageSetup () { - NativeMethods.cairo_ps_surface_begin_page_setup (surface); + NativeMethods.cairo_ps_surface_dsc_begin_page_setup (surface); } public void BeginSetup () { - NativeMethods.cairo_ps_surface_begin_setup (surface); + NativeMethods.cairo_ps_surface_dsc_begin_setup (surface); } public void DscComment (string comment) diff --git a/cairo/Path.cs b/cairo/Path.cs index 6afed4ef2..97cfb8e28 100644 --- a/cairo/Path.cs +++ b/cairo/Path.cs @@ -49,7 +49,7 @@ namespace Cairo { } - void IDisposable.Dispose () + public void Dispose () { Dispose (true); GC.SuppressFinalize (this); diff --git a/cairo/Pattern.cs b/cairo/Pattern.cs index 80a180ee3..a91a0aeda 100644 --- a/cairo/Pattern.cs +++ b/cairo/Pattern.cs @@ -89,7 +89,7 @@ namespace Cairo { NativeMethods.cairo_pattern_reference (pattern); } - void IDisposable.Dispose () + public void Dispose () { Dispose (true); } @@ -112,6 +112,11 @@ namespace Cairo { } } + public Extend Extend { + get { return NativeMethods.cairo_pattern_get_extend (pattern); } + set { NativeMethods.cairo_pattern_set_extend (pattern, value); } + } + public Status Status { get { return NativeMethods.cairo_pattern_status (pattern); } diff --git a/cairo/Region.cs b/cairo/Region.cs index a78541573..01a4523b3 100644 --- a/cairo/Region.cs +++ b/cairo/Region.cs @@ -42,8 +42,6 @@ namespace Cairo public class Region : IDisposable { - const string libname = "libcairo.dll"; - IntPtr handle; public IntPtr Handle { get { return handle; } @@ -51,202 +49,136 @@ namespace Cairo ~Region () { - Dispose (false); + Console.WriteLine ("Cairo.Region finalizer reached - developer must dispose regions manually to avoid leakage due to thread-safety concerns."); } - [DllImport (libname)] - static extern IntPtr cairo_region_reference (IntPtr region); + public Region (IntPtr handle) : this (handle, false) {} - public Region (IntPtr handle) + public Region (IntPtr handle, bool owned) { - handle = cairo_region_reference (handle); + this.handle = handle; + if (!owned) + NativeMethods.cairo_region_reference (handle); } - [DllImport (libname)] - static extern IntPtr cairo_region_create (); - public Region () { - handle = cairo_region_create (); + handle = NativeMethods.cairo_region_create (); } - [DllImport (libname)] - static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect); - public Region (RectangleInt rect) { - handle = cairo_region_create_rectangle (ref rect); + handle = NativeMethods.cairo_region_create_rectangle (ref rect); } - [DllImport (libname)] - static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count); - public Region (RectangleInt[] rects) { - handle = cairo_region_create_rectangles (rects, rects.Length); + handle = NativeMethods.cairo_region_create_rectangles (rects, rects.Length); } - [DllImport (libname)] - static extern IntPtr cairo_region_copy (IntPtr original); - public Region Copy () { - return new Region (cairo_region_copy (Handle)); + return new Region (NativeMethods.cairo_region_copy (Handle), true); } - [DllImport (libname)] - static extern void cairo_region_destroy (IntPtr region); - public void Dispose () - { - Dispose (true); - } - - void Dispose (bool disposing) { if (handle != IntPtr.Zero) - cairo_region_destroy (Handle); + NativeMethods.cairo_region_destroy (Handle); handle = IntPtr.Zero; - if (disposing) - GC.SuppressFinalize (this); + GC.SuppressFinalize (this); } - [DllImport (libname)] - static extern bool cairo_region_equal (IntPtr a, IntPtr b); - public override bool Equals (object obj) { - return (obj is Region) && cairo_region_equal (Handle, (obj as Region).Handle); + return (obj is Region) && NativeMethods.cairo_region_equal (Handle, (obj as Region).Handle); } - [DllImport (libname)] - static extern Status cairo_region_status (IntPtr region); + public override int GetHashCode () + { + return Handle.GetHashCode (); + } public Status Status { - get { return cairo_region_status (Handle); } + get { return NativeMethods.cairo_region_status (Handle); } } - [DllImport (libname)] - static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents); - public RectangleInt Extents { get { RectangleInt result; - cairo_region_get_extents (Handle, out result); + NativeMethods.cairo_region_get_extents (Handle, out result); return result; } } - [DllImport (libname)] - static extern int cairo_region_num_rectangles (IntPtr region); - public int NumRectangles { - get { return cairo_region_num_rectangles (Handle); } + get { return NativeMethods.cairo_region_num_rectangles (Handle); } } - [DllImport (libname)] - static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle); - public RectangleInt GetRectangle (int nth) { RectangleInt val; - cairo_region_get_rectangle (Handle, nth, out val); + NativeMethods.cairo_region_get_rectangle (Handle, nth, out val); return val; } - [DllImport (libname)] - static extern bool cairo_region_is_empty (IntPtr region); - public bool IsEmpty { - get { return cairo_region_is_empty (Handle); } + get { return NativeMethods.cairo_region_is_empty (Handle); } } - [DllImport (libname)] - static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle); - public RegionOverlap ContainsPoint (RectangleInt rectangle) { - return cairo_region_contains_rectangle (Handle, ref rectangle); + return NativeMethods.cairo_region_contains_rectangle (Handle, ref rectangle); } - [DllImport (libname)] - static extern bool cairo_region_contains_point (IntPtr region, int x, int y); - public bool ContainsPoint (int x, int y) { - return cairo_region_contains_point (Handle, x, y); + return NativeMethods.cairo_region_contains_point (Handle, x, y); } - [DllImport (libname)] - static extern void cairo_region_translate (IntPtr region, int dx, int dy); - public void Translate (int dx, int dy) { - cairo_region_translate (Handle, dx, dy); + NativeMethods.cairo_region_translate (Handle, dx, dy); } - [DllImport (libname)] - static extern Status cairo_region_subtract (IntPtr dst, IntPtr other); - public Status Subtract (Region other) { - return cairo_region_subtract (Handle, other.Handle); + return NativeMethods.cairo_region_subtract (Handle, other.Handle); } - [DllImport (libname)] - static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle); - public Status SubtractRectangle (RectangleInt rectangle) { - return cairo_region_subtract_rectangle (Handle, ref rectangle); + return NativeMethods.cairo_region_subtract_rectangle (Handle, ref rectangle); } - [DllImport (libname)] - static extern Status cairo_region_intersect (IntPtr dst, IntPtr other); - public Status Intersect (Region other) { - return cairo_region_intersect (Handle, other.Handle); + return NativeMethods.cairo_region_intersect (Handle, other.Handle); } - [DllImport (libname)] - static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle); - public Status IntersectRectangle (RectangleInt rectangle) { - return cairo_region_intersect_rectangle (Handle, ref rectangle); + return NativeMethods.cairo_region_intersect_rectangle (Handle, ref rectangle); } - [DllImport (libname)] - static extern Status cairo_region_union (IntPtr dst, IntPtr other); - public Status Union (Region other) { - return cairo_region_union (Handle, other.Handle); + return NativeMethods.cairo_region_union (Handle, other.Handle); } - [DllImport (libname)] - static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle); - public Status UnionRectangle (RectangleInt rectangle) { - return cairo_region_union_rectangle (Handle, ref rectangle); + return NativeMethods.cairo_region_union_rectangle (Handle, ref rectangle); } - [DllImport (libname)] - static extern Status cairo_region_xor (IntPtr dst, IntPtr other); - public Status Xor (Region other) { - return cairo_region_xor (Handle, other.Handle); + return NativeMethods.cairo_region_xor (Handle, other.Handle); } - [DllImport (libname)] - static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle); - public Status XorRectangle (RectangleInt rectangle) { - return cairo_region_xor_rectangle (Handle, ref rectangle); + return NativeMethods.cairo_region_xor_rectangle (Handle, ref rectangle); } } } diff --git a/cairo/ScaledFont.cs b/cairo/ScaledFont.cs index 8ac48f384..2b0f6cf0c 100644 --- a/cairo/ScaledFont.cs +++ b/cairo/ScaledFont.cs @@ -91,7 +91,7 @@ namespace Cairo { get { return NativeMethods.cairo_scaled_font_status (handle); } } - void IDisposable.Dispose () + public void Dispose () { Dispose (true); GC.SuppressFinalize (this); diff --git a/cairo/Surface.cs b/cairo/Surface.cs index 7a21b169a..52d0b4886 100644 --- a/cairo/Surface.cs +++ b/cairo/Surface.cs @@ -139,7 +139,7 @@ namespace Cairo { NativeMethods.cairo_paint (gr.Handle); } - void IDisposable.Dispose () + public void Dispose () { Dispose (true); GC.SuppressFinalize (this); @@ -184,6 +184,13 @@ namespace Cairo { } } + public Device Device { + get { + IntPtr dev = NativeMethods.cairo_surface_get_device (surface); + return dev == IntPtr.Zero ? null : new Device (dev); + } + } + public PointD DeviceOffset { get { double x, y; diff --git a/cairo/SurfacePattern.cs b/cairo/SurfacePattern.cs index f4f4298c5..569c55cfc 100644 --- a/cairo/SurfacePattern.cs +++ b/cairo/SurfacePattern.cs @@ -42,11 +42,6 @@ namespace Cairo { pattern = NativeMethods.cairo_pattern_create_for_surface (surface.Handle); } - public Extend Extend { - set { NativeMethods.cairo_pattern_set_extend (pattern, value); } - get { return NativeMethods.cairo_pattern_get_extend (pattern); } - } - public Filter Filter { set { NativeMethods.cairo_pattern_set_filter (pattern, value); } get { return NativeMethods.cairo_pattern_get_filter (pattern); }