cairo: Put some classes in separate files

This commit is contained in:
Michael Hutchinson 2013-03-05 19:49:35 -05:00 committed by Bertrand Lorentz
parent 38d1a3f13e
commit 6e7527cb92
8 changed files with 334 additions and 142 deletions

76
cairo/CairoDebug.cs Normal file
View file

@ -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<IntPtr,string> 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<IntPtr,string> ();
}
public static void OnAllocated (IntPtr obj)
{
if (!Enabled)
throw new InvalidOperationException ();
traces.Add (obj, Environment.StackTrace);
}
public static void OnDisposed<T> (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);
}
}
}

75
cairo/Color.cs Normal file
View file

@ -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; }
}
}
}

View file

@ -40,148 +40,6 @@ using Cairo;
namespace Cairo {
static class CairoDebug
{
static System.Collections.Generic.Dictionary<IntPtr,string> 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<IntPtr,string> ();
}
public static void OnAllocated (IntPtr obj)
{
if (!Enabled)
throw new InvalidOperationException ();
traces.Add (obj, Environment.StackTrace);
}
public static void OnDisposed<T> (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) {}

58
cairo/Distance.cs Normal file
View file

@ -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; }
}
}
}

View file

@ -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 \

57
cairo/Point.cs Normal file
View file

@ -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; }
}
}
}

58
cairo/PointD.cs Normal file
View file

@ -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; }
}
}
}

View file

@ -83,5 +83,10 @@
<Compile Include="Win32Surface.cs" />
<Compile Include="XcbSurface.cs" />
<Compile Include="XlibSurface.cs" />
<Compile Include="CairoDebug.cs" />
<Compile Include="Color.cs" />
<Compile Include="Distance.cs" />
<Compile Include="Point.cs" />
<Compile Include="PointD.cs" />
</ItemGroup>
</Project>