diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-12-06 17:36:21 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-12-06 17:36:21 +0100 |
| commit | 309945235a6bfd0c16cd64b8a0ad2501d7b62b50 (patch) | |
| tree | 42ca544a3b08175f2389709958fe860ba7d487fe /src | |
| parent | 78592468fe75f09299e12d8a8fbb94635a2befd6 (diff) | |
wip
Diffstat (limited to 'src')
| -rw-r--r-- | src/Cairo/CairoHelpers.cs | 2 | ||||
| -rw-r--r-- | src/Colors.cs | 10 | ||||
| -rw-r--r-- | src/CompilerServices/CompilerServices.cs | 2 | ||||
| -rw-r--r-- | src/ExtensionsMethods.cs | 3 | ||||
| -rw-r--r-- | src/GraphicObjects/DockStack.cs | 11 | ||||
| -rw-r--r-- | src/GraphicObjects/DockWindow.cs | 13 | ||||
| -rw-r--r-- | src/GraphicObjects/GraphicObject.cs | 58 | ||||
| -rw-r--r-- | src/GraphicObjects/TabItem.cs | 41 | ||||
| -rw-r--r-- | src/GraphicObjects/TemplatedGroup.cs | 2 | ||||
| -rw-r--r-- | src/GraphicObjects/TreeView.cs | 8 | ||||
| -rw-r--r-- | src/Interface.cs | 37 | ||||
| -rw-r--r-- | src/Mono.Cairo/Color.cs | 75 | ||||
| -rw-r--r-- | src/Mono.Cairo/Context.cs | 31 | ||||
| -rw-r--r-- | src/Mono.Cairo/Gradient.cs | 2 | ||||
| -rw-r--r-- | src/Mono.Cairo/NativeMethods-internal.cs | 1026 | ||||
| -rw-r--r-- | src/Mono.Cairo/NativeMethods.cs | 4 | ||||
| -rw-r--r-- | src/Mono.Cairo/Rectangle.cs | 99 | ||||
| -rw-r--r-- | src/Mono.Cairo/SolidPattern.cs | 2 | ||||
| -rw-r--r-- | src/debug/DebugLogViewer.cs | 2 |
19 files changed, 1138 insertions, 290 deletions
diff --git a/src/Cairo/CairoHelpers.cs b/src/Cairo/CairoHelpers.cs index 3b771c38..032980d0 100644 --- a/src/Cairo/CairoHelpers.cs +++ b/src/Cairo/CairoHelpers.cs @@ -73,7 +73,7 @@ namespace Crow if (stroke>0.0) { gr.LineWidth = stroke; double hsw = stroke / 2.0; - DrawRoundedRectangle (gr, r.X + hsw, r.Y + hsw, r.Width - stroke, r.Height - stroke, radius); + DrawRoundedRectangle (gr, hsw + r.X, hsw + r.Y, (double)r.Width - stroke, (double)r.Height - stroke, radius); gr.Stroke (); }else DrawRoundedRectangle(gr, r.X, r.Y, r.Width, r.Height, radius); diff --git a/src/Colors.cs b/src/Colors.cs index 8e501b33..1da99135 100644 --- a/src/Colors.cs +++ b/src/Colors.cs @@ -130,16 +130,6 @@ namespace Crow double.Parse(c[3])); } -// public static implicit operator OpenTK.Vector4(Color c) -// { -// return new OpenTK.Vector4 ((float)c.R, (float)c.G, (float)c.B, (float)c.A); -// } -// public static implicit operator Color(OpenTK.Vector4 v) -// { -// return new Color (v.X, v.Y, v.Z, v.W); -// } - - public static bool operator ==(Color left, Color right) { if (left.predefinied & right.predefinied) diff --git a/src/CompilerServices/CompilerServices.cs b/src/CompilerServices/CompilerServices.cs index e315f761..6ceff045 100644 --- a/src/CompilerServices/CompilerServices.cs +++ b/src/CompilerServices/CompilerServices.cs @@ -804,7 +804,7 @@ namespace Crow.IML il.Emit (OpCodes.Ldstr, operandes [1].Trim ()); } il.Emit (OpCodes.Callvirt, lopParseMi); - il.Emit (OpCodes.Unbox_Any, lopPI.PropertyType); + //il.Emit (OpCodes.Unbox_Any, lopPI.PropertyType); //emit left operand assignment il.Emit (OpCodes.Callvirt, lopPI.GetSetMethod()); } else {//tree parsing and propert gets diff --git a/src/ExtensionsMethods.cs b/src/ExtensionsMethods.cs index 340a8ceb..ecbc8a72 100644 --- a/src/ExtensionsMethods.cs +++ b/src/ExtensionsMethods.cs @@ -153,13 +153,14 @@ namespace Crow ctx.LineWidth = stroke; ctx.Stroke (); } + public static void SetSourceColor(this Cairo.Context ctx, Color c) { ctx.SetSourceRGBA(c.R,c.G,c.B,c.A); } public static void AddColorStop(this Cairo.Gradient grad, double offset, Color c) { - grad.AddColorStop (offset, new Cairo.Color (c.R, c.G, c.B, c.A)); + grad.AddColorStop (offset, c); } #endregion diff --git a/src/GraphicObjects/DockStack.cs b/src/GraphicObjects/DockStack.cs index aa7c33da..75f0d2bb 100644 --- a/src/GraphicObjects/DockStack.cs +++ b/src/GraphicObjects/DockStack.cs @@ -116,9 +116,9 @@ namespace Crow { if (IsDropTarget) { DockWindow dw = IFace.DragAndDropOperation.DragSource as DockWindow; - if (dw.IsDocked) { - base.onMouseMove (sender, e); - return; + if (dw == null || dw.IsDocked) { + base.onMouseMove (sender, e); + return; } Alignment curDockPos = dw.DockingPosition; @@ -416,6 +416,9 @@ namespace Crow dw.Width = Measure.Parse (getConfAttrib (conf, ref i)); dw.Height = Measure.Parse (getConfAttrib (conf, ref i)); dw.DockingPosition = (Alignment)Enum.Parse (typeof(Alignment), getConfAttrib (conf, ref i)); + dw.savedSlot = Rectangle.Parse (getConfAttrib (conf, ref i)); + dw.wasResizable = Boolean.Parse (getConfAttrib (conf, ref i)); + dw.IsDocked = true; dw.DataSource = dataSource; this.AddChild (dw); @@ -450,7 +453,7 @@ namespace Crow for (int i = 0; i < Children.Count; i++) { if (Children [i] is DockWindow) { DockWindow dw = Children [i] as DockWindow; - tmp.Append (string.Format("WIN;{0};{1};{2};{3};",dw.Name, dw.Width, dw.Height, dw.DockingPosition)); + tmp.Append (string.Format("WIN;{0};{1};{2};{3};{4};{5};",dw.Name, dw.Width, dw.Height, dw.DockingPosition, dw.savedSlot, dw.wasResizable)); } else if (Children [i] is DockStack) { DockStack ds = Children [i] as DockStack; tmp.Append (string.Format("STK;{0};{1};{2};{3}", ds.Width, ds.Height, ds.Orientation, ds.exportConfig())); diff --git a/src/GraphicObjects/DockWindow.cs b/src/GraphicObjects/DockWindow.cs index d6385057..e368db51 100644 --- a/src/GraphicObjects/DockWindow.cs +++ b/src/GraphicObjects/DockWindow.cs @@ -40,8 +40,8 @@ namespace Crow Alignment docking = Alignment.Undefined; Point undockingMousePosOrig; //mouse pos when docking was donne, use for undocking on mouse move - Rectangle savedSlot; //last undocked slot recalled when view is undocked - bool wasResizable; + internal Rectangle savedSlot; //last undocked slot recalled when view is undocked + internal bool wasResizable; public bool IsDocked { get { return isDocked; } @@ -64,7 +64,6 @@ namespace Crow NotifyValueChanged ("DockingPosition", DockingPosition); } } - public override bool PointIsIn (ref Point m) { if (!base.PointIsIn(ref m)) @@ -136,10 +135,10 @@ namespace Crow IFace.AddWidget (this); - this.Left = savedSlot.Left; - this.Top = savedSlot.Top; - this.Width = savedSlot.Width; - this.Height = savedSlot.Height; + Left = savedSlot.Left; + Top = savedSlot.Top; + Width = savedSlot.Width; + Height = savedSlot.Height; IsDocked = false; DockingPosition = Alignment.Undefined; diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index 747609b0..ec4fa173 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -277,14 +277,14 @@ namespace Crow Fill background = Color.Transparent; Fill foreground = Color.White; Font font = "droid, 10"; - Measure width, height; + protected Measure width, height; int left, top; double cornerRadius = 0; int margin = 0; bool focusable = false; bool hasFocus = false; bool isActive = false; - bool isHover = false; + //bool isHover = false; bool mouseRepeat; protected bool isVisible = true; bool isEnabled = true; @@ -436,9 +436,9 @@ namespace Crow /// <summary>Occurs when this object loose focus</summary> public event EventHandler Unfocused; /// <summary>Occurs when mouse is over</summary> - public event EventHandler Hover; + //public event EventHandler Hover; /// <summary>Occurs when this control is no longer the Hover one</summary> - public event EventHandler UnHover; + //public event EventHandler UnHover; /// <summary>Occurs when this object loose focus</summary> public event EventHandler Enabled; /// <summary>Occurs when the enabled state this object is set to false</summary> @@ -744,7 +744,7 @@ namespace Crow /// <summary> /// true if this control has the pointer hover /// </summary> - [XmlIgnore]public virtual bool IsHover { + /*[XmlIgnore]public virtual bool IsHover { get { return isHover; } set { if (value == isHover) @@ -759,7 +759,7 @@ namespace Crow NotifyValueChanged ("IsHover", isHover); } - } + }*/ /// <summary> /// true if holding mouse button down should trigger multiple click events /// </summary> @@ -866,8 +866,12 @@ namespace Crow RegisterForLayouting (LayoutingType.Sizing); - if (!isVisible) - unshownPostActions (); + if (!isVisible && IFace.HoverWidget != null) { + if (IFace.HoverWidget.IsOrIsInside (this)) { + //IFace.HoverWidget = null; + IFace.ProcessMouseMove (IFace.Mouse.X, IFace.Mouse.Y); + } + } NotifyValueChanged ("Visible", isVisible); } @@ -1877,20 +1881,7 @@ namespace Crow #if DEBUG_FOCUS Debug.WriteLine("MouseEnter => " + this.ToString()); #endif - MouseEnter.Raise (this, e); - } - public virtual void onMouseLeave(object sender, MouseMoveEventArgs e) - { - #if DEBUG_FOCUS - Debug.WriteLine("MouseLeave => " + this.ToString()); - #endif - MouseLeave.Raise (this, e); - } - public virtual void onHover(object sender, EventArgs e) - { - #if DEBUG_FOCUS - Debug.WriteLine("MouseHover => " + this.ToString()); - #endif + if (IFace.DragAndDropOperation != null) { GraphicObject g = this; while (g != null) { @@ -1905,15 +1896,18 @@ namespace Crow g = g.focusParent; } } - Hover.Raise (this, e); + + MouseEnter.Raise (this, e); } - public virtual void onUnHover(object sender, EventArgs e) + public virtual void onMouseLeave(object sender, MouseMoveEventArgs e) { #if DEBUG_FOCUS - Debug.WriteLine("MouseUnHover => " + this.ToString()); + Debug.WriteLine("MouseLeave => " + this.ToString()); #endif - UnHover.Raise (this, e); + + MouseLeave.Raise (this, e); } + #endregion protected virtual void onFocused(object sender, EventArgs e){ @@ -1981,6 +1975,12 @@ namespace Crow /// Checks to handle when widget is removed from the visible graphic tree /// </summary> void unshownPostActions () { + if (IFace.HoverWidget != null) { + if (IFace.HoverWidget.IsOrIsInside (this)) { + IFace.HoverWidget = null; + IFace.ProcessMouseMove (IFace.Mouse.X, IFace.Mouse.Y); + } + } if (IFace.ActiveWidget != null) { if (IFace.ActiveWidget.IsOrIsInside (this)) IFace.ActiveWidget = null; @@ -1989,12 +1989,6 @@ namespace Crow if (IFace.FocusedWidget.IsOrIsInside (this)) IFace.FocusedWidget = null; } - if (IFace.HoverWidget != null) { - if (IFace.HoverWidget.IsOrIsInside (this)) { - IFace.HoverWidget = null; - IFace.ProcessMouseMove (IFace.Mouse.X, IFace.Mouse.Y); - } - } } } } diff --git a/src/GraphicObjects/TabItem.cs b/src/GraphicObjects/TabItem.cs index 8ddd7a8e..52fdbfef 100644 --- a/src/GraphicObjects/TabItem.cs +++ b/src/GraphicObjects/TabItem.cs @@ -49,6 +49,7 @@ namespace Crow int tabOffset; bool isSelected; Measure tabThickness; + Fill selectedBackground = Color.Transparent; #endregion #region TemplatedControl overrides @@ -115,8 +116,30 @@ namespace Crow set { if (isSelected == value) return; + + if (tview != null) + tview.SelectedTab = tview.Children.IndexOf(this); + isSelected = value; NotifyValueChanged ("IsSelected", isSelected); + RegisterForRedraw (); + } + } + + /// <summary> + /// background fill of the control, maybe solid color, gradient, image, or svg + /// </summary> + [DesignCategory ("Appearance")][DefaultValue("DimGrey")] + public virtual Fill SelectedBackground { + get { return selectedBackground; } + set { + if (selectedBackground == value) + return; + if (value == null) + return; + selectedBackground = value; + NotifyValueChanged ("SelectedBackground", selectedBackground); + RegisterForRedraw (); } } protected override void onDraw (Context gr) @@ -150,7 +173,11 @@ namespace Crow gr.StrokePreserve (); gr.ClipPreserve (); - Background.SetAsSource (gr); + if (IsSelected) + SelectedBackground.SetAsSource (gr, ClientRectangle); + else + Background.SetAsSource (gr, ClientRectangle); + gr.Fill (); base.onDraw (gr); @@ -162,14 +189,8 @@ namespace Crow int dragThreshold = 16; int dis = 128; internal TabView savedParent = null; - public override Fill Background { - get { - return base.Background; - } - set { - base.Background = value; - } - } + + void makeFloating (TabView tv) { lock (IFace.UpdateMutex) { ImageSurface di = new ImageSurface (Format.Argb32, dis, dis); @@ -252,7 +273,7 @@ namespace Crow public override void onMouseUp (object sender, MouseButtonEventArgs e) { base.onMouseUp (sender, e); - tview.UpdateLayout (LayoutingType.ArrangeChildren); + tview?.UpdateLayout (LayoutingType.ArrangeChildren); } public override void onMouseMove (object sender, MouseMoveEventArgs e) { diff --git a/src/GraphicObjects/TemplatedGroup.cs b/src/GraphicObjects/TemplatedGroup.cs index 73681b9d..4d236dab 100644 --- a/src/GraphicObjects/TemplatedGroup.cs +++ b/src/GraphicObjects/TemplatedGroup.cs @@ -148,7 +148,7 @@ namespace Crow : items.Children; } } - [XmlAttributeAttribute][DefaultValue(-1)]public virtual int SelectedIndex{ + [DefaultValue(-1)]public virtual int SelectedIndex{ get { return _selectedIndex; } set { if (value == _selectedIndex) diff --git a/src/GraphicObjects/TreeView.cs b/src/GraphicObjects/TreeView.cs index 2c3f817f..12a99fb3 100644 --- a/src/GraphicObjects/TreeView.cs +++ b/src/GraphicObjects/TreeView.cs @@ -67,13 +67,13 @@ namespace Crow GraphicObject tmp = sender as GraphicObject; if (!tmp.HasFocus) return; - if (selectedItemContainer != null) { + /*if (selectedItemContainer != null) { selectedItemContainer.Foreground = Color.Transparent; selectedItemContainer.Background = Color.Transparent; - } + }*/ selectedItemContainer = tmp; - selectedItemContainer.Foreground = SelectionForeground; - selectedItemContainer.Background = SelectionBackground; + //selectedItemContainer.Foreground = SelectionForeground; + //selectedItemContainer.Background = SelectionBackground; NotifyValueChanged ("SelectedItem", SelectedItem); raiseSelectedItemChanged (); } diff --git a/src/Interface.cs b/src/Interface.cs index f2d6a1ce..9a11fa18 100644 --- a/src/Interface.cs +++ b/src/Interface.cs @@ -129,8 +129,8 @@ namespace Crow Keyboard.KeyUp += Keyboard_KeyUp; Keyboard.KeyPress += Keyboard_KeyPress; - initTooltip (); - initContextMenus (); + /*initTooltip (); + initContextMenus ();*/ running = true; @@ -605,14 +605,15 @@ namespace Crow if (_hoverWidget == value) return; - if (_hoverWidget != null) - _hoverWidget.IsHover = false; + //if (_hoverWidget != null) + // _hoverWidget.IsHover = false; _hoverWidget = value; + #if DEBUG_FOCUS NotifyValueChanged("HoverWidget", _hoverWidget); #endif - + /* if (_hoverWidget != null) { _hoverWidget.IsHover = true; @@ -623,6 +624,7 @@ namespace Crow #else } #endif + */ } } /// <summary>Widget has the keyboard or mouse focus</summary> @@ -860,10 +862,11 @@ namespace Crow if (newW != null) { while (ptr < GraphicTree.Count) { Window w = GraphicTree [ptr] as Window; - if (w != null) { - if (newW.AlwaysOnTop || !w.AlwaysOnTop) - break; - } + if (w == null) + break; + if (newW.AlwaysOnTop || !w.AlwaysOnTop) + break; + ptr++; } } @@ -1001,10 +1004,10 @@ namespace Crow /// <returns>true if mouse is in the interface</returns> public virtual bool ProcessMouseMove(int x, int y) { - if (armedClickSender != null) { - armedClickSender.onMouseClick (armedClickSender, armedClickEvtArgs); + /*if (armedClickSender != null) { + //armedClickSender.onMouseClick (armedClickSender, armedClickEvtArgs); armedClickSender = null; - } + }*/ int deltaX = x - Mouse.X; int deltaY = y - Mouse.Y; Mouse.X = x; @@ -1130,7 +1133,15 @@ namespace Crow if (HoverWidget == null) return false; - if (HoverWidget == armedClickSender) { + GraphicObject hoverFocused = HoverWidget; + while (!hoverFocused.Focusable) { + hoverFocused = hoverFocused.focusParent; + if (hoverFocused == null) { + hoverFocused = HoverWidget; + break; + } + } + if (hoverFocused == armedClickSender) { if (clickTimer.ElapsedMilliseconds < Interface.DoubleClick) { armedClickSender.onMouseDoubleClick (armedClickSender, e); armedClickSender = null; diff --git a/src/Mono.Cairo/Color.cs b/src/Mono.Cairo/Color.cs deleted file mode 100644 index 030089e8..00000000 --- a/src/Mono.Cairo/Color.cs +++ /dev/null @@ -1,75 +0,0 @@ -// -// Mono.Cairo.Context.cs -// -// Author: -// Duncan Mak (duncan@ximian.com) -// Miguel de Icaza (miguel@novell.com) -// Hisham Mardam Bey (hisham.mardambey@gmail.com) -// Alp Toker (alp@atoker.com) -// -// (C) Ximian Inc, 2003. -// (C) Novell Inc, 2003. -// -// This is an OO wrapper API for the Cairo API. -// -// Copyright (C) 2004 Novell, Inc (http://www.novell.com) -// -// 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. -// - -namespace Cairo { - - public struct Color - { - public Color(double r, double g, double b) : this (r, g, b, 1.0) - { - } - - public Color(double r, double g, double b, double a) - { - this.r = r; - this.g = g; - this.b = b; - this.a = a; - } - - double r, g, b, a; - - public double R { - get { return r; } - set { r = value; } - } - - public double G { - get { return g; } - set { g = value; } - } - - public double B { - get { return b; } - set { b = value; } - } - - public double A { - get { return a; } - set { a = value; } - } - } -} diff --git a/src/Mono.Cairo/Context.cs b/src/Mono.Cairo/Context.cs index 264774dd..74c2e444 100644 --- a/src/Mono.Cairo/Context.cs +++ b/src/Mono.Cairo/Context.cs @@ -38,8 +38,9 @@ using System; using System.Runtime.InteropServices; using System.Text; using Cairo; +using Color = Crow.Color; -namespace Cairo { +namespace Cairo { [Obsolete ("Renamed Cairo.Context per suggestion from cairo binding guidelines.")] public class Graphics : Context { @@ -161,20 +162,6 @@ namespace Cairo { } } - [Obsolete ("Use SetSourceColor method")] - public Color Color { - set { - SetSourceColor (value); - } - } - - [Obsolete ("Use SetSourceRGBA method")] - public Cairo.Color ColorRgb { - set { - Color = new Color (value.R, value.G, value.B); - } - } - public double Tolerance { get { return NativeMethods.cairo_get_tolerance (handle); @@ -870,13 +857,9 @@ namespace Cairo { public void ShowText(string str) { - NativeMethods.cairo_show_text (handle, TerminateUtf8(str)); + NativeMethods.cairo_show_text (handle, str); } - public void ShowText(byte[] utf8) - { - NativeMethods.cairo_show_text (handle, TerminateUtf8(utf8)); - } public void TextPath(string str) { @@ -891,16 +874,10 @@ namespace Cairo { public TextExtents TextExtents(string s) { TextExtents extents; - NativeMethods.cairo_text_extents (handle, TerminateUtf8(s), out extents); + NativeMethods.cairo_text_extents (handle, s, out extents); return extents; } - public TextExtents TextExtents(byte[] utf8) - { - TextExtents extents; - NativeMethods.cairo_text_extents (handle, TerminateUtf8(utf8), out extents); - return extents; - } public TextExtents GlyphExtents (Glyph[] glyphs) { diff --git a/src/Mono.Cairo/Gradient.cs b/src/Mono.Cairo/Gradient.cs index 0fb617e4..c7bc53c6 100644 --- a/src/Mono.Cairo/Gradient.cs +++ b/src/Mono.Cairo/Gradient.cs @@ -28,7 +28,7 @@ // using System; - +using Color = Crow.Color; namespace Cairo { public class Gradient : Pattern diff --git a/src/Mono.Cairo/NativeMethods-internal.cs b/src/Mono.Cairo/NativeMethods-internal.cs new file mode 100644 index 00000000..6e6d507c --- /dev/null +++ b/src/Mono.Cairo/NativeMethods-internal.cs @@ -0,0 +1,1026 @@ +// +// Cairo.cs - a simplistic binding of the Cairo API to C#. +// +// Authors: Duncan Mak (duncan@ximian.com) +// Hisham Mardam Bey (hisham.mardambey@gmail.com) +// John Luke (john.luke@gmail.com) +// Alp Toker (alp@atoker.com) +// +// (C) Ximian, Inc. 2003 +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// Copyright (C) 2005 John Luke +// Copyright (C) 2006 Alp Toker +// +// 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; +using System.Runtime.InteropServices; +using System.Runtime.CompilerServices; + +namespace Cairo +{ + // sort the functions like in the following page so it is easier to find what is missing + // http://cairographics.org/manual/index-all.html + + public static class NativeMethods + { + #if MONOTOUCH + const string cairo = "__Internal"; + #else + const string cairo = "libcairo-2.dll"; + #endif + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern void cairo_append_path (IntPtr cr, Path path); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_arc (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_arc_negative (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2); + + // [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + // public static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_clip (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_clip_preserve (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_clip_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_close_path (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_copy_page (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_copy_path (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_copy_path_flat (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_create (IntPtr target); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_debug_reset_static_data (); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_destroy (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_fill (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_fill_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_fill_preserve (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_extents (IntPtr cr, out FontExtents extents); + + #region FontFace + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_face_destroy (IntPtr font_face); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern FontType cairo_font_face_get_type (IntPtr font_face); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern void cairo_font_face_get_user_data (IntPtr font_face); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern void cairo_font_face_set_user_data (IntPtr font_face); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_font_face_reference (IntPtr font_face); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_font_face_status (IntPtr font_face); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern uint cairo_font_face_get_reference_count (IntPtr surface); + #endregion + + #region FontOptions + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_font_options_copy (IntPtr original); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_font_options_create (); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_options_destroy (IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern bool cairo_font_options_equal (IntPtr options, IntPtr other); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Antialias cairo_font_options_get_antialias (IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern HintStyle cairo_font_options_get_hint_style (IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern long cairo_font_options_hash (IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_options_merge (IntPtr options, IntPtr other); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_font_options_status (IntPtr options); + #endregion + + #region Freetype / FontConfig + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_ft_font_face_create_for_ft_face (IntPtr face, int load_flags); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Antialias cairo_get_antialias (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_get_current_point (IntPtr cr, out double x, out double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern FillRule cairo_get_fill_rule (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_get_font_face (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_get_font_options (IntPtr cr, IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_get_group_target (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern LineCap cairo_get_line_cap (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern LineJoin cairo_get_line_join (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern double cairo_get_line_width (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_get_matrix (IntPtr cr, Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern double cairo_get_miter_limit (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Operator cairo_get_operator (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern uint cairo_get_reference_count (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_get_source (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_get_target (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern double cairo_get_tolerance (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_glitz_surface_create (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + [return: MarshalAs (UnmanagedType.U1)] + public static extern bool cairo_has_current_point (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_identity_matrix (IntPtr cr); + + #region Image Surface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + public static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Cairo.Format format, int width, int height, int stride); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Cairo.Format format, int width, int height, int stride); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_image_surface_create_from_png (string filename); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern IntPtr cairo_image_surface_create_from_png_stream (string filename); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_image_surface_get_data (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Format cairo_image_surface_get_format (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_image_surface_get_height (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_image_surface_get_stride (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_image_surface_get_width (IntPtr surface); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + [return: MarshalAs (UnmanagedType.U1)] + public static extern bool cairo_in_clip (IntPtr cr, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + [return: MarshalAs (UnmanagedType.U1)] + public static extern bool cairo_in_fill (IntPtr cr, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + [return: MarshalAs (UnmanagedType.U1)] + public static extern bool cairo_in_stroke (IntPtr cr, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_line_to (IntPtr cr, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_mask (IntPtr cr, IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y); + + #region Matrix + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_init_identity (Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_init_rotate (Matrix matrix, double radians); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_matrix_invert (Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_rotate (Matrix matrix, double radians); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_move_to (IntPtr cr, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_new_path (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_new_sub_path (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_paint (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_paint_with_alpha (IntPtr cr, double alpha); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_path_destroy (IntPtr path); + + #region Pattern + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count); + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public 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); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public 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); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_destroy (IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Extend cairo_pattern_get_extend (IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Filter cairo_pattern_get_filter (IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern PatternType cairo_pattern_get_type (IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pattern_reference (IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_pattern_status (IntPtr pattern); + #endregion + + #region PdfSurface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y); + #endregion + + #region PostscriptSurface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_ps_surface_create (string filename, double width, double height); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height); + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_pop_group (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_pop_group_to_source (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_push_group (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_push_group_with_content (IntPtr cr, Content content); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_reference (IntPtr cr); + + #region Regions + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern bool cairo_region_contains_point (IntPtr region, int x, int y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref Crow.Rectangle rectangle); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_region_copy (IntPtr original); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_region_create (); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_region_create_rectangle (ref Crow.Rectangle rect); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_region_create_rectangles (IntPtr rects, int count); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_region_destroy (IntPtr region); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern bool cairo_region_equal (IntPtr a, IntPtr b); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_region_get_extents (IntPtr region, out Crow.Rectangle extents); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_region_get_rectangle (IntPtr region, int nth, out Crow.Rectangle rectangle); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_intersect (IntPtr dst, IntPtr other); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref Crow.Rectangle rectangle); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern bool cairo_region_is_empty (IntPtr region); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_region_num_rectangles (IntPtr region); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_region_reference (IntPtr region); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_status (IntPtr region); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_subtract (IntPtr dst, IntPtr other); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref Crow.Rectangle rectangle); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_region_translate (IntPtr region, int dx, int dy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_union (IntPtr dst, IntPtr other); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_union_rectangle (IntPtr dst, ref Crow.Rectangle rectangle); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_xor (IntPtr dst, IntPtr other); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_region_xor_rectangle (IntPtr dst, ref Crow.Rectangle rectangle); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_reset_clip (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_restore (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_rotate (IntPtr cr, double angle); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_save (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_scale (IntPtr cr, double sx, double sy); + + #region ScaledFont + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_scaled_font_status (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_get_scaled_font (IntPtr cr); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + public static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_antialias (IntPtr cr, Antialias antialias); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + public static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_get_dash_count (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + public static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_font_options (IntPtr cr, IntPtr options); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_font_size (IntPtr cr, double size); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_line_width (IntPtr cr, double width); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_matrix (IntPtr cr, Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_miter_limit (IntPtr cr, double limit); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_source (IntPtr cr, IntPtr pattern); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_set_tolerance (IntPtr cr, double tolerance); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_show_page (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_show_text (IntPtr cr, string str); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_status (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_status_to_string (Status status); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_stroke (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_stroke_preserve (IntPtr cr); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr); + + #region Surface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_destroy (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_finish (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_flush (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Content cairo_surface_get_content (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern uint cairo_surface_get_reference_count (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern SurfaceType cairo_surface_get_type (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_mark_dirty (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_surface_reference (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_surface_status (IntPtr surface); + #endregion + + #region SVG surface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_surface_write_to_png (IntPtr surface, string filename); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height); + + //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + //public static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_text_extents (IntPtr cr, string txt, out TextExtents extents); + + [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] + public static extern void cairo_text_path (IntPtr ct, byte[] utf8); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_transform (IntPtr cr, Matrix matrix); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_translate (IntPtr cr, double tx, double ty); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_version (); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_version_string (); + + #region DirectFBSurface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface); + #endregion + + #region win32 fonts + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc); + #endregion + + #region win32 surface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_win32_surface_create (IntPtr hdc); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height); + #endregion + + #region XcbSurface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height); + #endregion + + #region XlibSurface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_xlib_surface_get_depth (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_xlib_surface_get_height (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_xlib_surface_get_width (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height); + #endregion + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_gl_device_set_thread_aware(IntPtr device, int value); + + #region GLSurface + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_gl_surface_create (IntPtr device, uint content, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_gl_surface_create_for_texture (IntPtr device, uint content, uint tex, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_gl_surface_set_size (IntPtr surface, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_gl_surface_get_width (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_gl_surface_get_height (IntPtr surface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_gl_surface_swapbuffers (IntPtr surf); + #endregion + + #region GLX Functions + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_glx_device_create (IntPtr dpy, IntPtr gl_ctx); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_glx_device_get_display (IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_glx_device_get_context (IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_gl_surface_create_for_window (IntPtr device, IntPtr window, int width, int height); + #endregion + + #region WGL Fucntions + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_wgl_device_create (IntPtr hglrc); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_wgl_device_get_context (IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_gl_surface_create_for_dc (IntPtr device, IntPtr hdc, int width, int height); + #endregion + + #region EGL Functions + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_egl_device_create (IntPtr dpy, IntPtr gl_ctx); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_gl_surface_create_for_egl (IntPtr device, IntPtr eglSurface, int width, int height); + #endregion + + #region DRM Functions + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_device_get (IntPtr udev_device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_device_get_for_fd (int fd); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_device_default (); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_drm_device_get_fd (IntPtr cairo_device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_drm_device_throttle (IntPtr cairo_device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_surface_create (IntPtr cairo_device, Format format, int width, int height); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_surface_create_for_name (IntPtr cairo_device, uint name, Format format, int width, int height, int stride); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_surface_create_from_cacheable_image (IntPtr cairo_device, IntPtr imageSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_drm_surface_enable_scan_out (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_surface_get_handle (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_surface_get_name (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Format cairo_drm_surface_get_format (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_drm_surface_get_width (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_drm_surface_get_height (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern int cairo_drm_surface_get_stride (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_drm_surface_map_to_image (IntPtr drmSurface); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_drm_surface_unmap (IntPtr drmSurface, IntPtr imageSurface); + #endregion + + #region Device + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_device_acquire(IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_device_destroy (IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern IntPtr cairo_device_reference (IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void cairo_device_release(IntPtr device); + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern Status cairo_device_status(IntPtr device); + #endregion + + + + [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute] + public static extern void crow_cairo_region_clear(IntPtr ctx, IntPtr reg); + + } +}
\ No newline at end of file diff --git a/src/Mono.Cairo/NativeMethods.cs b/src/Mono.Cairo/NativeMethods.cs index 53501369..24384fe7 100644 --- a/src/Mono.Cairo/NativeMethods.cs +++ b/src/Mono.Cairo/NativeMethods.cs @@ -752,7 +752,7 @@ namespace Cairo internal static extern void cairo_show_page (IntPtr cr); [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] - internal static extern void cairo_show_text (IntPtr cr, byte[] utf8); + internal static extern void cairo_show_text (IntPtr cr, string text); [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern Status cairo_status (IntPtr cr); @@ -840,7 +840,7 @@ namespace Cairo #endregion [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] - internal static extern void cairo_text_extents (IntPtr cr, byte[] utf8, out TextExtents extents); + internal static extern void cairo_text_extents (IntPtr cr, string text, out TextExtents extents); [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)] internal static extern void cairo_text_path (IntPtr ct, byte[] utf8); diff --git a/src/Mono.Cairo/Rectangle.cs b/src/Mono.Cairo/Rectangle.cs deleted file mode 100644 index 6766aa45..00000000 --- a/src/Mono.Cairo/Rectangle.cs +++ /dev/null @@ -1,99 +0,0 @@ -// -// Mono.Cairo.Rectangle.cs -// -// Author: -// John Luke (john.luke@gmail.com) -// -// (C) John Luke 2005. -// -// 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 struct Rectangle -// { -// double x; -// double y; -// double width; -// double height; -// -// public Rectangle (double x, double y, double width, double height) -// { -// this.x = x; -// this.y = y; -// this.width = width; -// this.height = height; -// } -// -// public Rectangle (Point point, double width, double height) -// { -// x = point.X; -// y = point.Y; -// this.width = width; -// this.height = height; -// } -// -// public double X { -// get { return x; } -// } -// -// public double Y { -// get { return y; } -// } -// -// public double Width { -// get { return width; } -// } -// -// public double Height { -// get { return height; } -// } -// -// public override bool Equals (object obj) -// { -// if (obj is Rectangle) -// return this == (Rectangle)obj; -// return false; -// } -// -// public override int GetHashCode () -// { -// return (int) (x + y + width + height); -// } -// -// public override string ToString () -// { -// return String.Format ("x:{0} y:{1} w:{2} h:{3}", x, y, width, height); -// } -// -// public static bool operator == (Rectangle rectangle, Rectangle other) -// { -// return rectangle.X == other.X && rectangle.Y == other.Y && rectangle.Width == other.Width && rectangle.Height == other.Height; -// } -// -// public static bool operator != (Rectangle rectangle, Rectangle other) -// { -// return !(rectangle == other); -// } -// } -} diff --git a/src/Mono.Cairo/SolidPattern.cs b/src/Mono.Cairo/SolidPattern.cs index 875b3fbf..37864e5b 100644 --- a/src/Mono.Cairo/SolidPattern.cs +++ b/src/Mono.Cairo/SolidPattern.cs @@ -28,7 +28,7 @@ // using System; - +using Color = Crow.Color; namespace Cairo { public class SolidPattern : Pattern diff --git a/src/debug/DebugLogViewer.cs b/src/debug/DebugLogViewer.cs index 5b6ca360..36a29f96 100644 --- a/src/debug/DebugLogViewer.cs +++ b/src/debug/DebugLogViewer.cs @@ -289,7 +289,7 @@ namespace Crow } void Buffer_PositionChanged (object sender, EventArgs e) { - Console.WriteLine ("Position changes: ({0},{1})", buffer.CurrentLine, buffer.CurrentColumn); + //Console.WriteLine ("Position changes: ({0},{1})", buffer.CurrentLine, buffer.CurrentColumn); int cc = buffer.CurrentTabulatedColumn; if (cc > visibleColumns + ScrollX) { |