add very basic copies of System.Drawing classes to Gwen namespace

minimal implementation only, just enough to satisfy Gwen's usage of the original System.Drawing classes
This commit is contained in:
Gered 2013-03-29 19:00:48 -04:00
parent 9c705ada09
commit aceff7ba6c
3 changed files with 141 additions and 0 deletions

65
Gwen/Color.cs Normal file
View file

@ -0,0 +1,65 @@
using System;
namespace Gwen
{
[Serializable]
public struct Color
{
public byte A;
public byte R;
public byte G;
public byte B;
public static readonly Color White = FromArgb(255, 255, 255);
public static readonly Color Black = FromArgb(0, 0, 0);
public static readonly Color Red = FromArgb(255, 0, 0);
public static readonly Color Green = FromArgb(0, 255, 0);
public static readonly Color Blue = FromArgb(0, 0, 255);
public static readonly Color Yellow = FromArgb(255, 255, 0);
public static Color FromArgb(int red, int green, int blue)
{
return FromArgb(255, red, green, blue);
}
public static Color FromArgb(int alpha, int red, int green, int blue)
{
Color result;
result.A = (byte)alpha;
result.R = (byte)red;
result.G = (byte)green;
result.B = (byte)blue;
return result;
}
public float GetHue()
{
int r = R;
int g = G;
int b = B;
byte minval = (byte) Math.Min (r, Math.Min (g, b));
byte maxval = (byte) Math.Max (r, Math.Max (g, b));
if (maxval == minval)
return 0.0f;
float diff = (float)(maxval - minval);
float rnorm = (maxval - r) / diff;
float gnorm = (maxval - g) / diff;
float bnorm = (maxval - b) / diff;
float hue = 0.0f;
if (r == maxval)
hue = 60.0f * (6.0f + bnorm - gnorm);
if (g == maxval)
hue = 60.0f * (2.0f + rnorm - bnorm);
if (b == maxval)
hue = 60.0f * (4.0f + gnorm - rnorm);
if (hue > 360.0f)
hue = hue - 360.0f;
return hue;
}
}
}

20
Gwen/Point.cs Normal file
View file

@ -0,0 +1,20 @@
using System;
namespace Gwen
{
[Serializable]
public struct Point
{
public int X;
public int Y;
public static readonly Point Empty;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
}

56
Gwen/Rectangle.cs Normal file
View file

@ -0,0 +1,56 @@
using System;
namespace Gwen
{
[Serializable]
public struct Rectangle
{
public int X;
public int Y;
public int Width;
public int Height;
public static readonly Rectangle Empty;
public Rectangle(int x, int y, int width, int height)
{
X = x;
Y = y;
Width = width;
Height = height;
}
public int Left
{
get
{
return X;
}
}
public int Top
{
get
{
return Y;
}
}
public int Right
{
get
{
return X + Width;
}
}
public int Bottom
{
get
{
return Y + Height;
}
}
}
}