From 6e7527cb92077e42b5b4128ed699a3daf49cd7b0 Mon Sep 17 00:00:00 2001 From: Michael Hutchinson Date: Tue, 5 Mar 2013 19:49:35 -0500 Subject: [PATCH] cairo: Put some classes in separate files --- cairo/CairoDebug.cs | 76 ++++++++++++++++++++++++ cairo/Color.cs | 75 +++++++++++++++++++++++ cairo/Context.cs | 142 -------------------------------------------- cairo/Distance.cs | 58 ++++++++++++++++++ cairo/Makefile.am | 5 ++ cairo/Point.cs | 57 ++++++++++++++++++ cairo/PointD.cs | 58 ++++++++++++++++++ cairo/cairo.csproj | 5 ++ 8 files changed, 334 insertions(+), 142 deletions(-) create mode 100644 cairo/CairoDebug.cs create mode 100644 cairo/Color.cs create mode 100644 cairo/Distance.cs create mode 100644 cairo/Point.cs create mode 100644 cairo/PointD.cs diff --git a/cairo/CairoDebug.cs b/cairo/CairoDebug.cs new file mode 100644 index 000000000..ea1567931 --- /dev/null +++ b/cairo/CairoDebug.cs @@ -0,0 +1,76 @@ +// +// CairoDebug.cs +// +// Author: +// Michael Hutchinson (mhutch@xamarin.com) +// +// Copyright (C) 2013 Xamarin Inc. (http://www.xamarin.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. +// + +using System; + +namespace Cairo { + + static class CairoDebug + { + static System.Collections.Generic.Dictionary traces; + + public static readonly bool Enabled; + + static CairoDebug () + { + var dbg = Environment.GetEnvironmentVariable ("MONO_CAIRO_DEBUG_DISPOSE"); + if (dbg == null) + return; + Enabled = true; + traces = new System.Collections.Generic.Dictionary (); + } + + public static void OnAllocated (IntPtr obj) + { + if (!Enabled) + throw new InvalidOperationException (); + + traces.Add (obj, Environment.StackTrace); + } + + public static void OnDisposed (IntPtr obj, bool disposing) + { + if (disposing && !Enabled) + throw new InvalidOperationException (); + + if (!disposing) { + Console.Error.WriteLine ("{0} is leaking, programmer is missing a call to Dispose", typeof(T).FullName); + if (Enabled) { + Console.Error.WriteLine ("Allocated from:"); + Console.Error.WriteLine (traces[obj]); + } else { + Console.Error.WriteLine ("Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces"); + } + } + + if (Enabled) + traces.Remove (obj); + } + } + +} diff --git a/cairo/Color.cs b/cairo/Color.cs new file mode 100644 index 000000000..030089e88 --- /dev/null +++ b/cairo/Color.cs @@ -0,0 +1,75 @@ +// +// 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/cairo/Context.cs b/cairo/Context.cs index 091afac7d..47e7e1fea 100644 --- a/cairo/Context.cs +++ b/cairo/Context.cs @@ -40,148 +40,6 @@ using Cairo; namespace Cairo { - static class CairoDebug - { - static System.Collections.Generic.Dictionary traces; - - public static readonly bool Enabled; - - static CairoDebug () - { - var dbg = Environment.GetEnvironmentVariable ("MONO_CAIRO_DEBUG_DISPOSE"); - if (dbg == null) - return; - Enabled = true; - traces = new System.Collections.Generic.Dictionary (); - } - - public static void OnAllocated (IntPtr obj) - { - if (!Enabled) - throw new InvalidOperationException (); - - traces.Add (obj, Environment.StackTrace); - } - - public static void OnDisposed (IntPtr obj, bool disposing) - { - if (disposing && !Enabled) - throw new InvalidOperationException (); - - if (!disposing) { - Console.Error.WriteLine ("{0} is leaking, programmer is missing a call to Dispose", typeof(T).FullName); - if (Enabled) { - Console.Error.WriteLine ("Allocated from:"); - Console.Error.WriteLine (traces[obj]); - } else { - Console.Error.WriteLine ("Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces"); - } - } - - if (Enabled) - traces.Remove (obj); - } - } - - public struct Point - { - public Point (int x, int y) - { - this.x = x; - this.y = y; - } - - int x, y; - public int X { - get { return x; } - set { x = value; } - } - - public int Y { - get { return y; } - set { y = value; } - } - } - - public struct PointD - { - public PointD (double x, double y) - { - this.x = x; - this.y = y; - } - - double x, y; - public double X { - get { return x; } - set { x = value; } - } - - public double Y { - get { return y; } - set { y = value; } - } - } - - - public struct Distance - { - public Distance (double dx, double dy) - { - this.dx = dx; - this.dy = dy; - } - - double dx, dy; - public double Dx { - get { return dx; } - set { dx = value; } - } - - public double Dy { - get { return dy; } - set { dy = value; } - } - } - - 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; } - } - - } - [Obsolete ("Renamed Cairo.Context per suggestion from cairo binding guidelines.")] public class Graphics : Context { public Graphics (IntPtr state) : base (state) {} diff --git a/cairo/Distance.cs b/cairo/Distance.cs new file mode 100644 index 000000000..7cba3729c --- /dev/null +++ b/cairo/Distance.cs @@ -0,0 +1,58 @@ +// +// 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 Distance + { + public Distance (double dx, double dy) + { + this.dx = dx; + this.dy = dy; + } + + double dx, dy; + public double Dx { + get { return dx; } + set { dx = value; } + } + + public double Dy { + get { return dy; } + set { dy = value; } + } + } +} diff --git a/cairo/Makefile.am b/cairo/Makefile.am index e3d1d8560..bca514d73 100644 --- a/cairo/Makefile.am +++ b/cairo/Makefile.am @@ -12,10 +12,13 @@ CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb sources = \ Antialias.cs \ Cairo.cs \ + CairoDebug.cs \ + Color.cs \ Content.cs \ Context.cs \ Device.cs \ DirectFBSurface.cs \ + Distance.cs \ Extend.cs \ FillRule.cs \ Filter.cs \ @@ -42,6 +45,8 @@ sources = \ Pattern.cs \ PatternType.cs \ PdfSurface.cs \ + Point.cs \ + PointD.cs \ PSSurface.cs \ RadialGradient.cs \ Rectangle.cs \ diff --git a/cairo/Point.cs b/cairo/Point.cs new file mode 100644 index 000000000..e72ca6c52 --- /dev/null +++ b/cairo/Point.cs @@ -0,0 +1,57 @@ +// +// 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 Point + { + public Point (int x, int y) + { + this.x = x; + this.y = y; + } + + int x, y; + public int X { + get { return x; } + set { x = value; } + } + + public int Y { + get { return y; } + set { y = value; } + } + } +} diff --git a/cairo/PointD.cs b/cairo/PointD.cs new file mode 100644 index 000000000..c2e3587d1 --- /dev/null +++ b/cairo/PointD.cs @@ -0,0 +1,58 @@ +// +// 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 PointD + { + public PointD (double x, double y) + { + this.x = x; + this.y = y; + } + + double x, y; + public double X { + get { return x; } + set { x = value; } + } + + public double Y { + get { return y; } + set { y = value; } + } + } +} diff --git a/cairo/cairo.csproj b/cairo/cairo.csproj index ac09c01d6..a9279ab8e 100644 --- a/cairo/cairo.csproj +++ b/cairo/cairo.csproj @@ -83,5 +83,10 @@ + + + + + \ No newline at end of file