diff --git a/Source/OpenTK/DisplayDevice.cs b/Source/OpenTK/DisplayDevice.cs index a95cb19a..13380180 100644 --- a/Source/OpenTK/DisplayDevice.cs +++ b/Source/OpenTK/DisplayDevice.cs @@ -28,7 +28,9 @@ using System; using System.Collections.Generic; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif namespace OpenTK { diff --git a/Source/OpenTK/DisplayResolution.cs b/Source/OpenTK/DisplayResolution.cs index 703a203b..02fd04fa 100644 --- a/Source/OpenTK/DisplayResolution.cs +++ b/Source/OpenTK/DisplayResolution.cs @@ -10,7 +10,9 @@ using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif namespace OpenTK { diff --git a/Source/OpenTK/GameWindow.cs b/Source/OpenTK/GameWindow.cs index c6261c3c..96b2b06d 100644 --- a/Source/OpenTK/GameWindow.cs +++ b/Source/OpenTK/GameWindow.cs @@ -29,7 +29,9 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif using System.Threading; using OpenTK.Graphics; using OpenTK.Input; diff --git a/Source/OpenTK/Graphics/Color4.cs b/Source/OpenTK/Graphics/Color4.cs index 56bc3533..972747ac 100644 --- a/Source/OpenTK/Graphics/Color4.cs +++ b/Source/OpenTK/Graphics/Color4.cs @@ -27,6 +27,9 @@ using System; using System.Collections.Generic; +#if !MINIMAL +using System.Drawing; +#endif using System.Text; using System.Xml.Serialization; @@ -99,7 +102,7 @@ namespace OpenTK.Graphics /// /// The System.Drawing.Color containing the component values. [Obsolete("Use new Color4(r, g, b, a) instead.")] - public Color4(System.Drawing.Color color) + public Color4(Color color) : this(color.R, color.G, color.B, color.A) { } @@ -150,7 +153,7 @@ namespace OpenTK.Graphics /// /// The System.Drawing.Color to convert. /// A new Color4 structure containing the converted components. - public static implicit operator Color4(System.Drawing.Color color) + public static implicit operator Color4(Color color) { return new Color4(color.R, color.G, color.B, color.A); } @@ -160,9 +163,9 @@ namespace OpenTK.Graphics /// /// The Color4 to convert. /// A new System.Drawing.Color structure containing the converted components. - public static explicit operator System.Drawing.Color(Color4 color) + public static explicit operator Color(Color4 color) { - return System.Drawing.Color.FromArgb( + return Color.FromArgb( (int)(color.A * Byte.MaxValue), (int)(color.R * Byte.MaxValue), (int)(color.G * Byte.MaxValue), diff --git a/Source/OpenTK/Graphics/ES20/Helper.cs b/Source/OpenTK/Graphics/ES20/Helper.cs index 28d2e883..f0046f36 100644 --- a/Source/OpenTK/Graphics/ES20/Helper.cs +++ b/Source/OpenTK/Graphics/ES20/Helper.cs @@ -27,6 +27,9 @@ using System; using System.Collections.Generic; +#if !MINIMAL +using System.Drawing; +#endif using System.Text; namespace OpenTK.Graphics.ES20 @@ -63,7 +66,7 @@ namespace OpenTK.Graphics.ES20 #region public static void ClearColor() overloads - public static void ClearColor(System.Drawing.Color color) + public static void ClearColor(Color color) { GL.ClearColor(color.R / 255.0f, color.G / 255.0f, color.B / 255.0f, color.A / 255.0f); } @@ -77,7 +80,7 @@ namespace OpenTK.Graphics.ES20 #region public static void BlendColor() overloads - public static void BlendColor(System.Drawing.Color color) + public static void BlendColor(Color color) { GL.BlendColor(color.R / 255.0f, color.G / 255.0f, color.B / 255.0f, color.A / 255.0f); } @@ -399,17 +402,17 @@ namespace OpenTK.Graphics.ES20 #region Viewport - public static void Viewport(System.Drawing.Size size) + public static void Viewport(Size size) { GL.Viewport(0, 0, size.Width, size.Height); } - public static void Viewport(System.Drawing.Point location, System.Drawing.Size size) + public static void Viewport(Point location, Size size) { GL.Viewport(location.X, location.Y, size.Width, size.Height); } - public static void Viewport(System.Drawing.Rectangle rectangle) + public static void Viewport(Rectangle rectangle) { GL.Viewport(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height); } diff --git a/Source/OpenTK/Graphics/OpenGL/GLHelper.cs b/Source/OpenTK/Graphics/OpenGL/GLHelper.cs index eca8ff49..0dc550fa 100644 --- a/Source/OpenTK/Graphics/OpenGL/GLHelper.cs +++ b/Source/OpenTK/Graphics/OpenGL/GLHelper.cs @@ -10,6 +10,9 @@ using System; using System.Collections.Generic; +#if !MINIMAL +using System.Drawing; +#endif using System.Text; using System.Runtime.InteropServices; using System.Reflection; @@ -103,12 +106,12 @@ namespace OpenTK.Graphics.OpenGL #region public static void Color[34]() overloads - public static void Color3(System.Drawing.Color color) + public static void Color3(Color color) { GL.Color3(color.R, color.G, color.B); } - public static void Color4(System.Drawing.Color color) + public static void Color4(Color color) { GL.Color4(color.R, color.G, color.B, color.A); } @@ -132,7 +135,7 @@ namespace OpenTK.Graphics.OpenGL #region public static void ClearColor() overloads - public static void ClearColor(System.Drawing.Color color) + public static void ClearColor(Color color) { GL.ClearColor(color.R / 255.0f, color.G / 255.0f, color.B / 255.0f, color.A / 255.0f); } @@ -146,7 +149,7 @@ namespace OpenTK.Graphics.OpenGL #region public static void BlendColor() overloads - public static void BlendColor(System.Drawing.Color color) + public static void BlendColor(Color color) { GL.BlendColor(color.R / 255.0f, color.G / 255.0f, color.B / 255.0f, color.A / 255.0f); } @@ -720,24 +723,24 @@ namespace OpenTK.Graphics.OpenGL #region Rect - public static void Rect(System.Drawing.RectangleF rect) + public static void Rect(RectangleF rect) { GL.Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); } - public static void Rect(System.Drawing.Rectangle rect) + public static void Rect(Rectangle rect) { GL.Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); } [CLSCompliant(false)] - public static void Rect(ref System.Drawing.RectangleF rect) + public static void Rect(ref RectangleF rect) { GL.Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); } [CLSCompliant(false)] - public static void Rect(ref System.Drawing.Rectangle rect) + public static void Rect(ref Rectangle rect) { GL.Rect(rect.Left, rect.Top, rect.Right, rect.Bottom); } @@ -901,17 +904,17 @@ namespace OpenTK.Graphics.OpenGL #region Viewport - public static void Viewport(System.Drawing.Size size) + public static void Viewport(Size size) { GL.Viewport(0, 0, size.Width, size.Height); } - public static void Viewport(System.Drawing.Point location, System.Drawing.Size size) + public static void Viewport(Point location, Size size) { GL.Viewport(location.X, location.Y, size.Width, size.Height); } - public static void Viewport(System.Drawing.Rectangle rectangle) + public static void Viewport(Rectangle rectangle) { GL.Viewport(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height); } @@ -930,7 +933,7 @@ namespace OpenTK.Graphics.OpenGL #region TexEnv - public static void TexEnv(TextureEnvTarget target, TextureEnvParameter pname, System.Drawing.Color color) + public static void TexEnv(TextureEnvTarget target, TextureEnvParameter pname, Color color) { Color4 c = new Color4(color.R, color.G, color.B, color.A); unsafe diff --git a/Source/OpenTK/INativeWindow.cs b/Source/OpenTK/INativeWindow.cs index 137a4a8d..bb8016cc 100644 --- a/Source/OpenTK/INativeWindow.cs +++ b/Source/OpenTK/INativeWindow.cs @@ -27,10 +27,12 @@ using System; using System.Collections.Generic; -using System.Text; -using System.Drawing; -using OpenTK.Platform; using System.ComponentModel; +#if !MINIMAL +using System.Drawing; +#endif +using System.Text; +using OpenTK.Platform; namespace OpenTK { diff --git a/Source/OpenTK/Input/MouseDevice.cs b/Source/OpenTK/Input/MouseDevice.cs index d0b92b22..79e1caa0 100644 --- a/Source/OpenTK/Input/MouseDevice.cs +++ b/Source/OpenTK/Input/MouseDevice.cs @@ -29,9 +29,12 @@ using System; using System.Collections.Generic; -using System.Text; -using System.Drawing; using System.ComponentModel; +#if !MINIMAL +using System.Drawing; +#endif +using System.Text; + namespace OpenTK.Input { diff --git a/Source/OpenTK/Minimal.cs b/Source/OpenTK/Minimal.cs index c57692ac..af7b9b1e 100644 --- a/Source/OpenTK/Minimal.cs +++ b/Source/OpenTK/Minimal.cs @@ -2,13 +2,14 @@ using System.Collections.Generic; using System.Text; +#if IPHONE || MINIMAL + namespace OpenTK { // Override a number of System.* classes when compiling for // minimal targets (e.g. MonoTouch). // Note: the "overriden" classes must not be fully qualified for this to work! -#if IPHONE // System.Diagnostics.Debug static class Debug { @@ -89,5 +90,2108 @@ namespace OpenTK Never = 1, Advanced = 2, } -#endif + + #region RegistryKey + + class RegistryKey + { + public RegistryKey OpenSubKey(string name) + { + return new RegistryKey(); + } + + public object GetValue(string name) + { + return ""; + } + } + + #endregion + + #region Registry + + class Registry + { + public static readonly RegistryKey LocalMachine = new RegistryKey(); + } + + #endregion + + #region Point + + public struct Point : IEquatable + { + #region Fields + + int x, y; + + #endregion + + #region Constructors + + /// + /// Constructs a new Point instance. + /// + /// The X coordinate of this instance. + /// The Y coordinate of this instance. + public Point(int x, int y) + : this() + { + X = x; + Y = y; + } + + #endregion + + #region Public Members + + /// + /// Gets a that indicates whether this instance is empty or zero. + /// + public bool IsEmpty { get { return X == 0 && Y == 0; } } + + /// + /// Gets or sets the X coordinate of this instance. + /// + public int X { get { return x; } set { x = value; } } + + /// + /// Gets or sets the Y coordinate of this instance. + /// + public int Y { get { return y; } set { y = value; } } + + /// + /// Returns the Point (0, 0). + /// + public static readonly Point Zero = new Point(); + + /// + /// Returns the Point (0, 0). + /// + public static readonly Point Empty = new Point(); + + /// + /// Translates the specified Point by the specified Size. + /// + /// + /// The instance to translate. + /// + /// + /// The instance to translate point with. + /// + /// + /// A new instance translated by size. + /// + public static Point operator +(Point point, Size size) + { + return new Point(point.X + size.Width, point.Y + size.Height); + } + + /// + /// Translates the specified Point by the negative of the specified Size. + /// + /// + /// The instance to translate. + /// + /// + /// The instance to translate point with. + /// + /// + /// A new instance translated by size. + /// + public static Point operator -(Point point, Size size) + { + return new Point(point.X - size.Width, point.Y - size.Height); + } + + /// + /// Compares two instances for equality. + /// + /// The first instance. + /// The second instance. + /// True, if left is equal to right; false otherwise. + public static bool operator ==(Point left, Point right) + { + return left.Equals(right); + } + + /// + /// Compares two instances for inequality. + /// + /// The first instance. + /// The second instance. + /// True, if left is not equal to right; false otherwise. + public static bool operator !=(Point left, Point right) + { + return !left.Equals(right); + } + + /// + /// Indicates whether this instance is equal to the specified object. + /// + /// The object instance to compare to. + /// True, if both instances are equal; false otherwise. + public override bool Equals(object obj) + { + if (obj is Point) + return Equals((Point)obj); + + return false; + } + + /// + /// Returns the hash code for this instance. + /// + /// A that represents the hash code for this instance./> + public override int GetHashCode() + { + return X.GetHashCode() ^ Y.GetHashCode(); + } + + /// + /// Returns a that describes this instance. + /// + /// A that describes this instance. + public override string ToString() + { + return String.Format("{{{0}, {1}}}", X, Y); + } + + #endregion + + #region IEquatable Members + + /// + /// Indicates whether this instance is equal to the specified Point. + /// + /// The instance to compare to. + /// True, if both instances are equal; false otherwise. + public bool Equals(Point other) + { + return X == other.X && Y == other.Y; + } + + #endregion + } + + #endregion + + #region PointF + + public struct PointF : IEquatable + { + #region Fields + + float x, y; + + #endregion + + #region Constructors + + /// + /// Constructs a new PointF instance. + /// + /// The X coordinate of this instance. + /// The Y coordinate of this instance. + public PointF(float x, float y) + : this() + { + X = x; + Y = y; + } + + #endregion + + #region Public Members + + /// + /// Gets a that indicates whether this instance is empty or zero. + /// + public bool IsEmpty { get { return X == 0 && Y == 0; } } + + /// + /// Gets or sets the X coordinate of this instance. + /// + public float X { get { return x; } set { x = value; } } + + /// + /// Gets or sets the Y coordinate of this instance. + /// + public float Y { get { return y; } set { y = value; } } + + /// + /// Returns the PointF (0, 0). + /// + public static readonly PointF Zero = new PointF(); + + /// + /// Returns the PointF (0, 0). + /// + public static readonly PointF Empty = new PointF(); + + /// + /// Translates the specified PointF by the specified Size. + /// + /// + /// The instance to translate. + /// + /// + /// The instance to translate point with. + /// + /// + /// A new instance translated by size. + /// + public static PointF operator +(PointF point, SizeF size) + { + return new PointF(point.X + size.Width, point.Y + size.Height); + } + + /// + /// Translates the specified PointF by the negative of the specified Size. + /// + /// + /// The instance to translate. + /// + /// + /// The instance to translate point with. + /// + /// + /// A new instance translated by size. + /// + public static PointF operator -(PointF point, SizeF size) + { + return new PointF(point.X - size.Width, point.Y - size.Height); + } + + /// + /// Compares two instances for equality. + /// + /// The first instance. + /// The second instance. + /// True, if left is equal to right; false otherwise. + public static bool operator ==(PointF left, PointF right) + { + return left.Equals(right); + } + + /// + /// Compares two instances for inequality. + /// + /// The first instance. + /// The second instance. + /// True, if left is not equal to right; false otherwise. + public static bool operator !=(PointF left, PointF right) + { + return !left.Equals(right); + } + + /// + /// Indicates whether this instance is equal to the specified object. + /// + /// The object instance to compare to. + /// True, if both instances are equal; false otherwise. + public override bool Equals(object obj) + { + if (obj is PointF) + return Equals((PointF)obj); + + return false; + } + + /// + /// Returns the hash code for this instance. + /// + /// A that represents the hash code for this instance./> + public override int GetHashCode() + { + return X.GetHashCode() ^ Y.GetHashCode(); + } + + /// + /// Returns a that describes this instance. + /// + /// A that describes this instance. + public override string ToString() + { + return String.Format("{{{0}, {1}}}", X, Y); + } + + #endregion + + #region IEquatable Members + + /// + /// Indicates whether this instance is equal to the specified PointF. + /// + /// The instance to compare to. + /// True, if both instances are equal; false otherwise. + public bool Equals(PointF other) + { + return X == other.X && Y == other.Y; + } + + #endregion + } + + #endregion + + #region Size + + public struct Size : IEquatable + { + #region Fields + + int width, height; + + #endregion + + #region Constructors + + /// + /// Constructs a new Size instance. + /// + /// The width of this instance. + /// The height of this instance. + public Size(int width, int height) + : this() + { + Width = width; + Height = height; + } + + #endregion + + #region Public Members + + /// + /// Gets or sets the width of this instance. + /// + public int Width + { + get { return width; } + set + { + if (width < 0) + throw new ArgumentOutOfRangeException(); + width = value; + } + } + + /// + /// Gets or sets the height of this instance. + /// + public int Height + { + get { return height; } + set + { + if (height < 0) + throw new ArgumentOutOfRangeException(); + height = value; + } + } + + /// + /// Gets a that indicates whether this instance is empty or zero. + /// + public bool IsEmpty + { + get { return Width == 0 && Height == 0; } + } + + /// + /// Returns a Size instance equal to (0, 0). + /// + public static readonly Size Empty = new Size(); + + /// + /// Returns a Size instance equal to (0, 0). + /// + public static readonly Size Zero = new Size(); + + /// + /// Compares two instances for equality. + /// + /// The first instance. + /// The second instance. + /// True, if left is equal to right; false otherwise. + public static bool operator ==(Size left, Size right) + { + return left.Equals(right); + } + + /// + /// Compares two instances for inequality. + /// + /// The first instance. + /// The second instance. + /// True, if left is not equal to right; false otherwise. + public static bool operator !=(Size left, Size right) + { + return !left.Equals(right); + } + + /// + /// Indicates whether this instance is equal to the specified object. + /// + /// The object instance to compare to. + /// True, if both instances are equal; false otherwise. + public override bool Equals(object obj) + { + if (obj is Size) + return Equals((Size)obj); + + return false; + } + + /// + /// Returns the hash code for this instance. + /// + /// A that represents the hash code for this instance./> + public override int GetHashCode() + { + return Width.GetHashCode() ^ Height.GetHashCode(); + } + + /// + /// Returns a that describes this instance. + /// + /// A that describes this instance. + public override string ToString() + { + return String.Format("{{{0}, {1}}}", Width, Height); + } + + #endregion + + #region IEquatable Members + + /// + /// Indicates whether this instance is equal to the specified Size. + /// + /// The instance to compare to. + /// True, if both instances are equal; false otherwise. + public bool Equals(Size other) + { + return Width == other.Width && Height == other.Height; + } + + #endregion + } + + #endregion + + #region SizeF + + public struct SizeF : IEquatable + { + #region Fields + + float width, height; + + #endregion + + #region Constructors + + /// + /// Constructs a new SizeF instance. + /// + /// The width of this instance. + /// The height of this instance. + public SizeF(float width, float height) + : this() + { + Width = width; + Height = height; + } + + #endregion + + #region Public Members + + /// + /// Gets or sets the width of this instance. + /// + public float Width + { + get { return width; } + set + { + if (width < 0) + throw new ArgumentOutOfRangeException(); + width = value; + } + } + + /// + /// Gets or sets the height of this instance. + /// + public float Height + { + get { return height; } + set + { + if (height < 0) + throw new ArgumentOutOfRangeException(); + height = value; + } + } + + /// + /// Gets a that indicates whether this instance is empty or zero. + /// + public bool IsEmpty + { + get { return Width == 0 && Height == 0; } + } + + /// + /// Returns a SizeF instance equal to (0, 0). + /// + public static readonly SizeF Empty = new SizeF(); + + /// + /// Returns a SizeF instance equal to (0, 0). + /// + public static readonly SizeF Zero = new SizeF(); + + /// + /// Compares two instances for equality. + /// + /// The first instance. + /// The second instance. + /// True, if left is equal to right; false otherwise. + public static bool operator ==(SizeF left, SizeF right) + { + return left.Equals(right); + } + + /// + /// Compares two instances for inequality. + /// + /// The first instance. + /// The second instance. + /// True, if left is not equal to right; false otherwise. + public static bool operator !=(SizeF left, SizeF right) + { + return !left.Equals(right); + } + + /// + /// Indicates whether this instance is equal to the specified object. + /// + /// The object instance to compare to. + /// True, if both instances are equal; false otherwise. + public override bool Equals(object obj) + { + if (obj is SizeF) + return Equals((SizeF)obj); + + return false; + } + + /// + /// Returns the hash code for this instance. + /// + /// A that represents the hash code for this instance./> + public override int GetHashCode() + { + return Width.GetHashCode() ^ Height.GetHashCode(); + } + + /// + /// Returns a that describes this instance. + /// + /// A that describes this instance. + public override string ToString() + { + return String.Format("{{{0}, {1}}}", Width, Height); + } + + #endregion + + #region IEquatable Members + + /// + /// Indicates whether this instance is equal to the specified SizeF. + /// + /// The instance to compare to. + /// True, if both instances are equal; false otherwise. + public bool Equals(SizeF other) + { + return Width == other.Width && Height == other.Height; + } + + #endregion + } + + #endregion + + #region Rectangle + + public struct Rectangle : IEquatable + { + #region Fields + + Point location; + Size size; + + #endregion + + #region Constructors + + /// + /// Constructs a new Rectangle instance. + /// + /// The top-left corner of the Rectangle. + /// The width and height of the Rectangle. + public Rectangle(Point location, Size size) + : this() + { + Location = location; + Size = size; + } + + /// + /// Constructs a new Rectangle instance. + /// + /// The x coordinate of the Rectangle. + /// The y coordinate of the Rectangle. + /// The width coordinate of the Rectangle. + /// The height coordinate of the Rectangle. + public Rectangle(int x, int y, int width, int height) + : this(new Point(x, y), new Size(width, height)) + { } + + #endregion + + #region Public Members + + /// + /// Gets or sets the x coordinate of the Rectangle. + /// + public int X + { + get { return Location.X; } + set { Location = new Point(value, Y); } + } + + /// + /// Gets or sets the y coordinate of the Rectangle. + /// + public int Y + { + get { return Location.Y; } + set { Location = new Point(X, value); } + } + + /// + /// Gets or sets the width of the Rectangle. + /// + public int Width + { + get { return Size.Width; } + set { Size = new Size(value, Height); } + } + + /// + /// Gets or sets the height of the Rectangle. + /// + public int Height + { + get { return Size.Height; } + set { Size = new Size(Width, value); } + } + + /// + /// Gets or sets a representing the x and y coordinates + /// of the Rectangle. + /// + public Point Location + { + get { return location; } + set { location = value; } + } + + /// + /// Gets or sets a representing the width and height + /// of the Rectangle. + /// + public Size Size + { + get { return size; } + set { size = value; } + } + + /// + /// Gets the y coordinate of the top edge of this Rectangle. + /// + public int Top { get { return Y; } } + + /// + /// Gets the x coordinate of the right edge of this Rectangle. + /// + public int Right { get { return X + Width; } } + + /// + /// Gets the y coordinate of the bottom edge of this Rectangle. + /// + public int Bottom { get { return Y + Height; } } + + /// + /// Gets the x coordinate of the left edge of this Rectangle. + /// + public int Left { get { return X; } } + + /// + /// Gets a that indicates whether this + /// Rectangle is equal to the empty Rectangle. + /// + public bool IsEmpty + { + get { return Location.IsEmpty && Size.IsEmpty; } + } + + /// + /// Defines the empty Rectangle. + /// + public static readonly Rectangle Zero = new Rectangle(); + + /// + /// Defines the empty Rectangle. + /// + public static readonly Rectangle Empty = new Rectangle(); + + /// + /// Constructs a new instance with the specified edges. + /// + /// The left edge of the Rectangle. + /// The top edge of the Rectangle. + /// The right edge of the Rectangle. + /// The bottom edge of the Rectangle. + /// A new Rectangle instance with the specified edges. + public static Rectangle FromLTRB(int left, int top, int right, int bottom) + { + return new Rectangle(new Point(left, top), new Size(right - left, bottom - top)); + } + + /// + /// Tests whether this instance contains the specified Point. + /// + /// The to test. + /// True if this instance contains point; false otherwise. + /// The left and top edges are inclusive. The right and bottom edges + /// are exclusive. + public bool Contains(Point point) + { + return point.X >= Left && point.X < Right && + point.Y >= Top && point.Y < Bottom; + } + + /// + /// Tests whether this instance contains the specified Rectangle. + /// + /// The to test. + /// True if this instance contains rect; false otherwise. + /// The left and top edges are inclusive. The right and bottom edges + /// are exclusive. + public bool Contains(Rectangle rect) + { + return Contains(rect.Location) && Contains(rect.Location + rect.Size); + } + + /// + /// Compares two instances for equality. + /// + /// The first instance. + /// The second instance. + /// True, if left is equal to right; false otherwise. + public static bool operator ==(Rectangle left, Rectangle right) + { + return left.Equals(right); + } + + /// + /// Compares two instances for inequality. + /// + /// The first instance. + /// The second instance. + /// True, if left is not equal to right; false otherwise. + public static bool operator !=(Rectangle left, Rectangle right) + { + return !left.Equals(right); + } + + /// + /// Indicates whether this instance is equal to the specified object. + /// + /// The object instance to compare to. + /// True, if both instances are equal; false otherwise. + public override bool Equals(object obj) + { + if (obj is Rectangle) + return Equals((Rectangle)obj); + + return false; + } + + /// + /// Returns the hash code for this instance. + /// + /// A that represents the hash code for this instance./> + public override int GetHashCode() + { + return Location.GetHashCode() & Size.GetHashCode(); + } + + /// + /// Returns a that describes this instance. + /// + /// A that describes this instance. + public override string ToString() + { + return String.Format("{{{0}-{1}}}", Location, Location + Size); + } + + + #endregion + + #region IEquatable Members + + /// + /// Indicates whether this instance is equal to the specified Rectangle. + /// + /// The instance to compare to. + /// True, if both instances are equal; false otherwise. + public bool Equals(Rectangle other) + { + return Location.Equals(other.Location) && + Size.Equals(other.Size); + } + + #endregion + } + + #endregion + + #region RectangleF + + public struct RectangleF : IEquatable + { + #region Fields + + PointF location; + SizeF size; + + #endregion + + #region Constructors + + /// + /// Constructs a new RectangleF instance. + /// + /// The top-left corner of the RectangleF. + /// The width and height of the RectangleF. + public RectangleF(PointF location, SizeF SizeF) + : this() + { + Location = location; + SizeF = SizeF; + } + + /// + /// Constructs a new RectangleF instance. + /// + /// The x coordinate of the RectangleF. + /// The y coordinate of the RectangleF. + /// The width coordinate of the RectangleF. + /// The height coordinate of the RectangleF. + public RectangleF(float x, float y, float width, float height) + : this(new PointF(x, y), new SizeF(width, height)) + { } + + #endregion + + #region Public Members + + /// + /// Gets or sets the x coordinate of the RectangleF. + /// + public float X + { + get { return Location.X; } + set { Location = new PointF(value, Y); } + } + + /// + /// Gets or sets the y coordinate of the RectangleF. + /// + public float Y + { + get { return Location.Y; } + set { Location = new PointF(X, value); } + } + + /// + /// Gets or sets the width of the RectangleF. + /// + public float Width + { + get { return Size.Width; } + set { Size = new SizeF(value, Height); } + } + + /// + /// Gets or sets the height of the RectangleF. + /// + public float Height + { + get { return Size.Height; } + set { Size = new SizeF(Width, value); } + } + + /// + /// Gets or sets a representing the x and y coordinates + /// of the RectangleF. + /// + public PointF Location + { + get { return location; } + set { location = value; } + } + + /// + /// Gets or sets a representing the width and height + /// of the RectangleF. + /// + public SizeF Size + { + get { return size; } + set { size = value; } + } + + /// + /// Gets the y coordinate of the top edge of this RectangleF. + /// + public float Top { get { return Y; } } + + /// + /// Gets the x coordinate of the right edge of this RectangleF. + /// + public float Right { get { return X + Width; } } + + /// + /// Gets the y coordinate of the bottom edge of this RectangleF. + /// + public float Bottom { get { return Y + Height; } } + + /// + /// Gets the x coordinate of the left edge of this RectangleF. + /// + public float Left { get { return X; } } + + /// + /// Gets a that indicates whether this + /// RectangleF is equal to the empty RectangleF. + /// + public bool IsEmpty + { + get { return Location.IsEmpty && Size.IsEmpty; } + } + + /// + /// Defines the empty RectangleF. + /// + public static readonly RectangleF Zero = new RectangleF(); + + /// + /// Defines the empty RectangleF. + /// + public static readonly RectangleF Empty = new RectangleF(); + + /// + /// Constructs a new instance with the specified edges. + /// + /// The left edge of the RectangleF. + /// The top edge of the RectangleF. + /// The right edge of the RectangleF. + /// The bottom edge of the RectangleF. + /// A new RectangleF instance with the specified edges. + public static RectangleF FromLTRB(float left, float top, float right, float bottom) + { + return new RectangleF(new PointF(left, top), new SizeF(right - left, bottom - top)); + } + + /// + /// Tests whether this instance contains the specified PointF. + /// + /// The to test. + /// True if this instance contains pofloat; false otherwise. + /// The left and top edges are inclusive. The right and bottom edges + /// are exclusive. + public bool Contains(PointF pofloat) + { + return pofloat.X >= Left && pofloat.X < Right && + pofloat.Y >= Top && pofloat.Y < Bottom; + } + + /// + /// Tests whether this instance contains the specified RectangleF. + /// + /// The to test. + /// True if this instance contains rect; false otherwise. + /// The left and top edges are inclusive. The right and bottom edges + /// are exclusive. + public bool Contains(RectangleF rect) + { + return Contains(rect.Location) && Contains(rect.Location + rect.Size); + } + + /// + /// Compares two instances for equality. + /// + /// The first instance. + /// The second instance. + /// True, if left is equal to right; false otherwise. + public static bool operator ==(RectangleF left, RectangleF right) + { + return left.Equals(right); + } + + /// + /// Compares two instances for inequality. + /// + /// The first instance. + /// The second instance. + /// True, if left is not equal to right; false otherwise. + public static bool operator !=(RectangleF left, RectangleF right) + { + return !left.Equals(right); + } + + /// + /// Indicates whether this instance is equal to the specified object. + /// + /// The object instance to compare to. + /// True, if both instances are equal; false otherwise. + public override bool Equals(object obj) + { + if (obj is RectangleF) + return Equals((RectangleF)obj); + + return false; + } + + /// + /// Returns the hash code for this instance. + /// + /// A that represents the hash code for this instance./> + public override int GetHashCode() + { + return Location.GetHashCode() & Size.GetHashCode(); + } + + /// + /// Returns a that describes this instance. + /// + /// A that describes this instance. + public override string ToString() + { + return String.Format("{{{0}-{1}}}", Location, Location + Size); + } + + #endregion + + #region IEquatable Members + + /// + /// Indicates whether this instance is equal to the specified RectangleF. + /// + /// The instance to compare to. + /// True, if both instances are equal; false otherwise. + public bool Equals(RectangleF other) + { + return Location.Equals(other.Location) && + Size.Equals(other.Size); + } + + #endregion + } + + #endregion + + #region Icon + + public sealed class Icon : IDisposable + { + IntPtr handle; + + public Icon(Icon icon, int width, int height) + { } + + public IntPtr Handle { get { return handle; } set { handle = value; } } + + public Bitmap ToBitmap() + { + return new Bitmap(); + } + + public void Dispose() + { } + } + + #endregion + + #region Image + + public abstract class Image { } + + #endregion + + #region Bitmap + + public sealed class Bitmap : Image + { + int width; + int height; + + public Bitmap() { } + + public Bitmap(int width, int height) + { + // TODO: Complete member initialization + this.width = width; + this.height = height; + } + + public int Width { get { return width; } } + public int Height { get { return height; } } + + public Color GetPixel(int x, int y) + { + return new Color(); + } + + internal void UnlockBits(BitmapData data) + { + throw new NotImplementedException(); + } + + internal BitmapData LockBits(Rectangle rectangle, ImageLockMode imageLockMode, PixelFormat pixelFormat) + { + return new BitmapData(); + } + } + + #endregion + + #region Color + + /// + /// Represents a color with 4 8bit components (R, G, B, A). + /// + [Serializable] + public struct Color : IEquatable + { + #region Fields + + /// + /// The red component of this Color structure. + /// + public byte R; + + /// + /// The green component of this Color structure. + /// + public byte G; + + /// + /// The blue component of this Color structure. + /// + public byte B; + + /// + /// The alpha component of this Color structure. + /// + public byte A; + + #endregion + + #region Constructors + + /// + /// Constructs a new Color structure from the specified components. + /// + /// The red component of the new Color structure. + /// The green component of the new Color structure. + /// The blue component of the new Color structure. + /// The alpha component of the new Color structure. + public Color(int r, int g, int b, int a) + { + R = (byte)r; + G = (byte)g; + B = (byte)b; + A = (byte)a; + } + + #endregion + + #region Public Members + + /// + /// Converts this color to an integer representation with 8 bits per channel. + /// + /// A that represents this instance. + /// This method is intended only for compatibility with System.Drawing. It compresses the color into 8 bits per channel, which means color information is lost. + public int ToArgb() + { + uint value = + (uint)(A * Byte.MaxValue) << 24 | + (uint)(R * Byte.MaxValue) << 16 | + (uint)(G * Byte.MaxValue) << 8 | + (uint)(B * Byte.MaxValue); + + return unchecked((int)value); + } + + /// + /// Compares the specified Color structures for equality. + /// + /// The left-hand side of the comparison. + /// The right-hand side of the comparison. + /// True if left is equal to right; false otherwise. + public static bool operator ==(Color left, Color right) + { + return left.Equals(right); + } + + /// + /// Compares the specified Color structures for inequality. + /// + /// The left-hand side of the comparison. + /// The right-hand side of the comparison. + /// True if left is not equal to right; false otherwise. + public static bool operator !=(Color left, Color right) + { + return !left.Equals(right); + } + + /// + /// Compares whether this Color structure is equal to the specified object. + /// + /// An object to compare to. + /// True obj is a Color structure with the same components as this Color; false otherwise. + public override bool Equals(object obj) + { + if (!(obj is Color)) + return false; + + return Equals((Color)obj); + } + + /// + /// Calculates the hash code for this Color structure. + /// + /// A System.Int32 containing the hashcode of this Color structure. + public override int GetHashCode() + { + return ToArgb(); + } + + /// + /// Creates a System.String that describes this Color structure. + /// + /// A System.String that describes this Color structure. + public override string ToString() + { + return String.Format("{{(R, G, B, A) = ({0}, {1}, {2}, {3})}}", R.ToString(), G.ToString(), B.ToString(), A.ToString()); + } + +#region System colors + + /// + /// Gets the system color with (R, G, B, A) = (255, 255, 255, 0). + /// + public static Color Transparent { get { return new Color(255, 255, 255, 0); } } + + /// + /// Gets the system color with (R, G, B, A) = (240, 248, 255, 255). + /// + public static Color AliceBlue { get { return new Color(240, 248, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (250, 235, 215, 255). + /// + public static Color AntiqueWhite { get { return new Color(250, 235, 215, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 255, 255, 255). + /// + public static Color Aqua { get { return new Color(0, 255, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (127, 255, 212, 255). + /// + public static Color Aquamarine { get { return new Color(127, 255, 212, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (240, 255, 255, 255). + /// + public static Color Azure { get { return new Color(240, 255, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (245, 245, 220, 255). + /// + public static Color Beige { get { return new Color(245, 245, 220, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 228, 196, 255). + /// + public static Color Bisque { get { return new Color(255, 228, 196, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 0, 0, 255). + /// + public static Color Black { get { return new Color(0, 0, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 235, 205, 255). + /// + public static Color BlanchedAlmond { get { return new Color(255, 235, 205, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 0, 255, 255). + /// + public static Color Blue { get { return new Color(0, 0, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (138, 43, 226, 255). + /// + public static Color BlueViolet { get { return new Color(138, 43, 226, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (165, 42, 42, 255). + /// + public static Color Brown { get { return new Color(165, 42, 42, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (222, 184, 135, 255). + /// + public static Color BurlyWood { get { return new Color(222, 184, 135, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (95, 158, 160, 255). + /// + public static Color CadetBlue { get { return new Color(95, 158, 160, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (127, 255, 0, 255). + /// + public static Color Chartreuse { get { return new Color(127, 255, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (210, 105, 30, 255). + /// + public static Color Chocolate { get { return new Color(210, 105, 30, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 127, 80, 255). + /// + public static Color Coral { get { return new Color(255, 127, 80, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (100, 149, 237, 255). + /// + public static Color CornflowerBlue { get { return new Color(100, 149, 237, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 248, 220, 255). + /// + public static Color Cornsilk { get { return new Color(255, 248, 220, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (220, 20, 60, 255). + /// + public static Color Crimson { get { return new Color(220, 20, 60, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 255, 255, 255). + /// + public static Color Cyan { get { return new Color(0, 255, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 0, 139, 255). + /// + public static Color DarkBlue { get { return new Color(0, 0, 139, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 139, 139, 255). + /// + public static Color DarkCyan { get { return new Color(0, 139, 139, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (184, 134, 11, 255). + /// + public static Color DarkGoldenrod { get { return new Color(184, 134, 11, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (169, 169, 169, 255). + /// + public static Color DarkGray { get { return new Color(169, 169, 169, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 100, 0, 255). + /// + public static Color DarkGreen { get { return new Color(0, 100, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (189, 183, 107, 255). + /// + public static Color DarkKhaki { get { return new Color(189, 183, 107, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (139, 0, 139, 255). + /// + public static Color DarkMagenta { get { return new Color(139, 0, 139, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (85, 107, 47, 255). + /// + public static Color DarkOliveGreen { get { return new Color(85, 107, 47, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 140, 0, 255). + /// + public static Color DarkOrange { get { return new Color(255, 140, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (153, 50, 204, 255). + /// + public static Color DarkOrchid { get { return new Color(153, 50, 204, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (139, 0, 0, 255). + /// + public static Color DarkRed { get { return new Color(139, 0, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (233, 150, 122, 255). + /// + public static Color DarkSalmon { get { return new Color(233, 150, 122, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (143, 188, 139, 255). + /// + public static Color DarkSeaGreen { get { return new Color(143, 188, 139, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (72, 61, 139, 255). + /// + public static Color DarkSlateBlue { get { return new Color(72, 61, 139, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (47, 79, 79, 255). + /// + public static Color DarkSlateGray { get { return new Color(47, 79, 79, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 206, 209, 255). + /// + public static Color DarkTurquoise { get { return new Color(0, 206, 209, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (148, 0, 211, 255). + /// + public static Color DarkViolet { get { return new Color(148, 0, 211, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 20, 147, 255). + /// + public static Color DeepPink { get { return new Color(255, 20, 147, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 191, 255, 255). + /// + public static Color DeepSkyBlue { get { return new Color(0, 191, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (105, 105, 105, 255). + /// + public static Color DimGray { get { return new Color(105, 105, 105, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (30, 144, 255, 255). + /// + public static Color DodgerBlue { get { return new Color(30, 144, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (178, 34, 34, 255). + /// + public static Color Firebrick { get { return new Color(178, 34, 34, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 250, 240, 255). + /// + public static Color FloralWhite { get { return new Color(255, 250, 240, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (34, 139, 34, 255). + /// + public static Color ForestGreen { get { return new Color(34, 139, 34, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 0, 255, 255). + /// + public static Color Fuchsia { get { return new Color(255, 0, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (220, 220, 220, 255). + /// + public static Color Gainsboro { get { return new Color(220, 220, 220, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (248, 248, 255, 255). + /// + public static Color GhostWhite { get { return new Color(248, 248, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 215, 0, 255). + /// + public static Color Gold { get { return new Color(255, 215, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (218, 165, 32, 255). + /// + public static Color Goldenrod { get { return new Color(218, 165, 32, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (128, 128, 128, 255). + /// + public static Color Gray { get { return new Color(128, 128, 128, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 128, 0, 255). + /// + public static Color Green { get { return new Color(0, 128, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (173, 255, 47, 255). + /// + public static Color GreenYellow { get { return new Color(173, 255, 47, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (240, 255, 240, 255). + /// + public static Color Honeydew { get { return new Color(240, 255, 240, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 105, 180, 255). + /// + public static Color HotPink { get { return new Color(255, 105, 180, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (205, 92, 92, 255). + /// + public static Color IndianRed { get { return new Color(205, 92, 92, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (75, 0, 130, 255). + /// + public static Color Indigo { get { return new Color(75, 0, 130, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 255, 240, 255). + /// + public static Color Ivory { get { return new Color(255, 255, 240, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (240, 230, 140, 255). + /// + public static Color Khaki { get { return new Color(240, 230, 140, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (230, 230, 250, 255). + /// + public static Color Lavender { get { return new Color(230, 230, 250, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 240, 245, 255). + /// + public static Color LavenderBlush { get { return new Color(255, 240, 245, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (124, 252, 0, 255). + /// + public static Color LawnGreen { get { return new Color(124, 252, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 250, 205, 255). + /// + public static Color LemonChiffon { get { return new Color(255, 250, 205, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (173, 216, 230, 255). + /// + public static Color LightBlue { get { return new Color(173, 216, 230, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (240, 128, 128, 255). + /// + public static Color LightCoral { get { return new Color(240, 128, 128, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (224, 255, 255, 255). + /// + public static Color LightCyan { get { return new Color(224, 255, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (250, 250, 210, 255). + /// + public static Color LightGoldenrodYellow { get { return new Color(250, 250, 210, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (144, 238, 144, 255). + /// + public static Color LightGreen { get { return new Color(144, 238, 144, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (211, 211, 211, 255). + /// + public static Color LightGray { get { return new Color(211, 211, 211, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 182, 193, 255). + /// + public static Color LightPink { get { return new Color(255, 182, 193, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 160, 122, 255). + /// + public static Color LightSalmon { get { return new Color(255, 160, 122, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (32, 178, 170, 255). + /// + public static Color LightSeaGreen { get { return new Color(32, 178, 170, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (135, 206, 250, 255). + /// + public static Color LightSkyBlue { get { return new Color(135, 206, 250, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (119, 136, 153, 255). + /// + public static Color LightSlateGray { get { return new Color(119, 136, 153, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (176, 196, 222, 255). + /// + public static Color LightSteelBlue { get { return new Color(176, 196, 222, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 255, 224, 255). + /// + public static Color LightYellow { get { return new Color(255, 255, 224, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 255, 0, 255). + /// + public static Color Lime { get { return new Color(0, 255, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (50, 205, 50, 255). + /// + public static Color LimeGreen { get { return new Color(50, 205, 50, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (250, 240, 230, 255). + /// + public static Color Linen { get { return new Color(250, 240, 230, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 0, 255, 255). + /// + public static Color Magenta { get { return new Color(255, 0, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (128, 0, 0, 255). + /// + public static Color Maroon { get { return new Color(128, 0, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (102, 205, 170, 255). + /// + public static Color MediumAquamarine { get { return new Color(102, 205, 170, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 0, 205, 255). + /// + public static Color MediumBlue { get { return new Color(0, 0, 205, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (186, 85, 211, 255). + /// + public static Color MediumOrchid { get { return new Color(186, 85, 211, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (147, 112, 219, 255). + /// + public static Color MediumPurple { get { return new Color(147, 112, 219, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (60, 179, 113, 255). + /// + public static Color MediumSeaGreen { get { return new Color(60, 179, 113, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (123, 104, 238, 255). + /// + public static Color MediumSlateBlue { get { return new Color(123, 104, 238, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 250, 154, 255). + /// + public static Color MediumSpringGreen { get { return new Color(0, 250, 154, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (72, 209, 204, 255). + /// + public static Color MediumTurquoise { get { return new Color(72, 209, 204, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (199, 21, 133, 255). + /// + public static Color MediumVioletRed { get { return new Color(199, 21, 133, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (25, 25, 112, 255). + /// + public static Color MidnightBlue { get { return new Color(25, 25, 112, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (245, 255, 250, 255). + /// + public static Color MintCream { get { return new Color(245, 255, 250, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 228, 225, 255). + /// + public static Color MistyRose { get { return new Color(255, 228, 225, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 228, 181, 255). + /// + public static Color Moccasin { get { return new Color(255, 228, 181, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 222, 173, 255). + /// + public static Color NavajoWhite { get { return new Color(255, 222, 173, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 0, 128, 255). + /// + public static Color Navy { get { return new Color(0, 0, 128, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (253, 245, 230, 255). + /// + public static Color OldLace { get { return new Color(253, 245, 230, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (128, 128, 0, 255). + /// + public static Color Olive { get { return new Color(128, 128, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (107, 142, 35, 255). + /// + public static Color OliveDrab { get { return new Color(107, 142, 35, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 165, 0, 255). + /// + public static Color Orange { get { return new Color(255, 165, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 69, 0, 255). + /// + public static Color OrangeRed { get { return new Color(255, 69, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (218, 112, 214, 255). + /// + public static Color Orchid { get { return new Color(218, 112, 214, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (238, 232, 170, 255). + /// + public static Color PaleGoldenrod { get { return new Color(238, 232, 170, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (152, 251, 152, 255). + /// + public static Color PaleGreen { get { return new Color(152, 251, 152, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (175, 238, 238, 255). + /// + public static Color PaleTurquoise { get { return new Color(175, 238, 238, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (219, 112, 147, 255). + /// + public static Color PaleVioletRed { get { return new Color(219, 112, 147, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 239, 213, 255). + /// + public static Color PapayaWhip { get { return new Color(255, 239, 213, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 218, 185, 255). + /// + public static Color PeachPuff { get { return new Color(255, 218, 185, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (205, 133, 63, 255). + /// + public static Color Peru { get { return new Color(205, 133, 63, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 192, 203, 255). + /// + public static Color Pink { get { return new Color(255, 192, 203, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (221, 160, 221, 255). + /// + public static Color Plum { get { return new Color(221, 160, 221, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (176, 224, 230, 255). + /// + public static Color PowderBlue { get { return new Color(176, 224, 230, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (128, 0, 128, 255). + /// + public static Color Purple { get { return new Color(128, 0, 128, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 0, 0, 255). + /// + public static Color Red { get { return new Color(255, 0, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (188, 143, 143, 255). + /// + public static Color RosyBrown { get { return new Color(188, 143, 143, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (65, 105, 225, 255). + /// + public static Color RoyalBlue { get { return new Color(65, 105, 225, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (139, 69, 19, 255). + /// + public static Color SaddleBrown { get { return new Color(139, 69, 19, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (250, 128, 114, 255). + /// + public static Color Salmon { get { return new Color(250, 128, 114, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (244, 164, 96, 255). + /// + public static Color SandyBrown { get { return new Color(244, 164, 96, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (46, 139, 87, 255). + /// + public static Color SeaGreen { get { return new Color(46, 139, 87, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 245, 238, 255). + /// + public static Color SeaShell { get { return new Color(255, 245, 238, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (160, 82, 45, 255). + /// + public static Color Sienna { get { return new Color(160, 82, 45, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (192, 192, 192, 255). + /// + public static Color Silver { get { return new Color(192, 192, 192, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (135, 206, 235, 255). + /// + public static Color SkyBlue { get { return new Color(135, 206, 235, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (106, 90, 205, 255). + /// + public static Color SlateBlue { get { return new Color(106, 90, 205, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (112, 128, 144, 255). + /// + public static Color SlateGray { get { return new Color(112, 128, 144, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 250, 250, 255). + /// + public static Color Snow { get { return new Color(255, 250, 250, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 255, 127, 255). + /// + public static Color SpringGreen { get { return new Color(0, 255, 127, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (70, 130, 180, 255). + /// + public static Color SteelBlue { get { return new Color(70, 130, 180, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (210, 180, 140, 255). + /// + public static Color Tan { get { return new Color(210, 180, 140, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (0, 128, 128, 255). + /// + public static Color Teal { get { return new Color(0, 128, 128, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (216, 191, 216, 255). + /// + public static Color Thistle { get { return new Color(216, 191, 216, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 99, 71, 255). + /// + public static Color Tomato { get { return new Color(255, 99, 71, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (64, 224, 208, 255). + /// + public static Color Turquoise { get { return new Color(64, 224, 208, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (238, 130, 238, 255). + /// + public static Color Violet { get { return new Color(238, 130, 238, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (245, 222, 179, 255). + /// + public static Color Wheat { get { return new Color(245, 222, 179, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 255, 255, 255). + /// + public static Color White { get { return new Color(255, 255, 255, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (245, 245, 245, 255). + /// + public static Color WhiteSmoke { get { return new Color(245, 245, 245, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (255, 255, 0, 255). + /// + public static Color Yellow { get { return new Color(255, 255, 0, 255); } } + + /// + /// Gets the system color with (R, G, B, A) = (154, 205, 50, 255). + /// + public static Color YellowGreen { get { return new Color(154, 205, 50, 255); } } + + #endregion + + #endregion + + #region IEquatable Members + + /// + /// Compares whether this Color structure is equal to the specified Color. + /// + /// The Color structure to compare to. + /// True if both Color structures contain the same components; false otherwise. + public bool Equals(Color other) + { + return + this.R == other.R && + this.G == other.G && + this.B == other.B && + this.A == other.A; + } + + #endregion + + public static Color FromArgb(int a, int r, int g, int b) + { + return new Color(r, g, b, a); + } + } + + #endregion + + #region BitmapData + + sealed class BitmapData + { + public IntPtr Scan0 { get { return IntPtr.Zero; } } + } + + #endregion + + #region ImageLockMode + + enum ImageLockMode + { + ReadOnly, + WriteOnly, + ReadWrite, + UserInputBuffer + } + + #endregion + + #region PixelFormat + + enum PixelFormat + { + Format32bppArgb + } + + #endregion } + +#region Graphics + +sealed class Graphics : IDisposable +{ + public static Graphics FromImage(OpenTK.Image img) + { + return new Graphics(); + } + + public void Dispose() + { } + + internal void DrawImage(OpenTK.Bitmap bitmap, int p, int p_2, int p_3, int p_4) + { + } +} + +#endregion + +#endif diff --git a/Source/OpenTK/NativeWindow.cs b/Source/OpenTK/NativeWindow.cs index 5fc2f418..3d67c4bb 100644 --- a/Source/OpenTK/NativeWindow.cs +++ b/Source/OpenTK/NativeWindow.cs @@ -27,7 +27,9 @@ using System; using System.ComponentModel; +#if !MINIMAL using System.Drawing; +#endif using OpenTK.Graphics; using OpenTK.Input; using OpenTK.Platform; diff --git a/Source/OpenTK/Platform/INativeGLWindow.cs b/Source/OpenTK/Platform/INativeGLWindow.cs index 77a130a8..83f2ea0f 100644 --- a/Source/OpenTK/Platform/INativeGLWindow.cs +++ b/Source/OpenTK/Platform/INativeGLWindow.cs @@ -8,11 +8,13 @@ using System; using System.Collections.Generic; +#if !MINIMAL +using System.Drawing; +#endif using System.Text; using OpenTK.Input; using OpenTK.Graphics; -using System.Drawing; namespace OpenTK.Platform { diff --git a/Source/OpenTK/Platform/MacOS/CarbonBindings/CarbonAPI.cs b/Source/OpenTK/Platform/MacOS/CarbonBindings/CarbonAPI.cs index 0cf7847e..3b96ae07 100644 --- a/Source/OpenTK/Platform/MacOS/CarbonBindings/CarbonAPI.cs +++ b/Source/OpenTK/Platform/MacOS/CarbonBindings/CarbonAPI.cs @@ -31,7 +31,10 @@ using System; using System.Runtime.InteropServices; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif + using EventTime = System.Double; diff --git a/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs b/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs index c1c8eaa5..8dab99c8 100644 --- a/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs +++ b/Source/OpenTK/Platform/MacOS/CarbonGLNative.cs @@ -31,7 +31,9 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif using System.Text; namespace OpenTK.Platform.MacOS @@ -752,7 +754,11 @@ namespace OpenTK.Platform.MacOS int index; bitmap = new Bitmap(128, 128); +#if MINIMAL + using (global::Graphics g = global::Graphics.FromImage(bitmap)) +#else using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap)) +#endif { g.DrawImage(icon.ToBitmap(), 0, 0, 128, 128); } diff --git a/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs b/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs index b7da1bc1..0982fb25 100644 --- a/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs +++ b/Source/OpenTK/Platform/MacOS/QuartzDisplayDeviceDriver.cs @@ -28,7 +28,9 @@ using System; using System.Collections.Generic; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif using OpenTK.Platform.MacOS.Carbon; namespace OpenTK.Platform.MacOS diff --git a/Source/OpenTK/Platform/Windows/API.cs b/Source/OpenTK/Platform/Windows/API.cs index e831d1f2..ccd77bc5 100644 --- a/Source/OpenTK/Platform/Windows/API.cs +++ b/Source/OpenTK/Platform/Windows/API.cs @@ -8,7 +8,9 @@ #region --- Using Directives --- using System; +#if !MINIMAL using System.Drawing; +#endif using System.Runtime.InteropServices; using System.Text; using System.Security; diff --git a/Source/OpenTK/Platform/Windows/WMInput.cs b/Source/OpenTK/Platform/Windows/WMInput.cs index e512204f..5d3d2ee3 100644 --- a/Source/OpenTK/Platform/Windows/WMInput.cs +++ b/Source/OpenTK/Platform/Windows/WMInput.cs @@ -28,7 +28,9 @@ using System; using System.Collections.Generic; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif using System.Threading; using System.Text; diff --git a/Source/OpenTK/Platform/Windows/WinGLNative.cs b/Source/OpenTK/Platform/Windows/WinGLNative.cs index b433cb8f..261cfacf 100644 --- a/Source/OpenTK/Platform/Windows/WinGLNative.cs +++ b/Source/OpenTK/Platform/Windows/WinGLNative.cs @@ -33,7 +33,9 @@ using OpenTK.Graphics; using OpenTK.Input; using System.Collections.Generic; using System.IO; +#if !MINIMAL using System.Drawing; +#endif namespace OpenTK.Platform.Windows { diff --git a/Source/OpenTK/Platform/X11/Functions.cs b/Source/OpenTK/Platform/X11/Functions.cs index 7d138d92..61e601f7 100644 --- a/Source/OpenTK/Platform/X11/Functions.cs +++ b/Source/OpenTK/Platform/X11/Functions.cs @@ -8,6 +8,10 @@ using System; using System.Collections.Generic; +#if !MINIMAL +using System.Drawing; +using System.Drawing.Imaging; +#endif using System.Text; using System.Runtime.InteropServices; @@ -594,15 +598,15 @@ namespace OpenTK.Platform.X11 (byte)(argb & 0xFF)); } } - public static IntPtr CreatePixmapFromImage(Display display, System.Drawing.Bitmap image) + public static IntPtr CreatePixmapFromImage(Display display, Bitmap image) { int width = image.Width; int height = image.Height; int size = width * height; - System.Drawing.Imaging.BitmapData data = image.LockBits(new System.Drawing.Rectangle(0, 0, width, height), - System.Drawing.Imaging.ImageLockMode.ReadOnly, - System.Drawing.Imaging.PixelFormat.Format32bppArgb); + BitmapData data = image.LockBits(new Rectangle(0, 0, width, height), + ImageLockMode.ReadOnly, + PixelFormat.Format32bppArgb); IntPtr ximage = XCreateImage(display, CopyFromParent, 24, ImageFormat.ZPixmap, 0, data.Scan0, (uint)width, (uint)height, 32, 0); @@ -618,7 +622,7 @@ namespace OpenTK.Platform.X11 return pixmap; } - public static IntPtr CreateMaskFromImage(Display display, System.Drawing.Bitmap image) + public static IntPtr CreateMaskFromImage(Display display, Bitmap image) { int width = image.Width; int height = image.Height; diff --git a/Source/OpenTK/Platform/X11/Structs.cs b/Source/OpenTK/Platform/X11/Structs.cs index ac20cfe4..f105d57b 100644 --- a/Source/OpenTK/Platform/X11/Structs.cs +++ b/Source/OpenTK/Platform/X11/Structs.cs @@ -29,7 +29,9 @@ using System; using System.ComponentModel; using System.Collections; +#if !MINIMAL using System.Drawing; +#endif using System.Diagnostics; using System.Runtime.InteropServices; diff --git a/Source/OpenTK/Platform/X11/X11DisplayDevice.cs b/Source/OpenTK/Platform/X11/X11DisplayDevice.cs index 3262ce1b..86c28ab4 100644 --- a/Source/OpenTK/Platform/X11/X11DisplayDevice.cs +++ b/Source/OpenTK/Platform/X11/X11DisplayDevice.cs @@ -28,7 +28,9 @@ using System; using System.Collections.Generic; using System.Diagnostics; +#if !MINIMAL using System.Drawing; +#endif using System.Runtime.InteropServices; namespace OpenTK.Platform.X11 diff --git a/Source/OpenTK/Platform/X11/X11GLNative.cs b/Source/OpenTK/Platform/X11/X11GLNative.cs index 4be53acd..c64ea7c6 100644 --- a/Source/OpenTK/Platform/X11/X11GLNative.cs +++ b/Source/OpenTK/Platform/X11/X11GLNative.cs @@ -29,12 +29,14 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +#if !MINIMAL +using System.Drawing; +#endif using System.Reflection; using System.Runtime.InteropServices; using System.Text; using OpenTK.Graphics; using OpenTK.Input; -using System.Drawing; namespace OpenTK.Platform.X11 { @@ -1083,7 +1085,7 @@ namespace OpenTK.Platform.X11 else { // Set _NET_WM_ICON - System.Drawing.Bitmap bitmap = value.ToBitmap(); + Bitmap bitmap = value.ToBitmap(); int size = bitmap.Width * bitmap.Height + 2; IntPtr[] data = new IntPtr[size]; int index = 0; diff --git a/Source/OpenTK/Platform/X11/X11Input.cs b/Source/OpenTK/Platform/X11/X11Input.cs index ae4473b1..10978019 100644 --- a/Source/OpenTK/Platform/X11/X11Input.cs +++ b/Source/OpenTK/Platform/X11/X11Input.cs @@ -6,12 +6,14 @@ using System; using System.Collections.Generic; +#if !MINIMAL +using System.Drawing; +#endif using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; using OpenTK.Input; -using System.Drawing; namespace OpenTK.Platform.X11 {