2005-05-10 Juraj Skripsky <juraj@hotfeet.ch>
[mono.git] / mcs / class / System.Drawing / System.Drawing / Color.cs
index c8972e07908d03040e65bd8fbb0aac05b07dc07b..ce0d9fe9093d2a1c4d6498ffb0a654d64d775a87 100644 (file)
-//\r
-// System.Drawing.Color.cs\r
-//\r
-// Authors:\r
-//     Dennis Hayes (dennish@raytek.com)\r
-//     Ben Houston  (ben@exocortex.org)\r
-//     Gonzalo Paniagua (gonzalo@ximian.com)\r
-//\r
-// (C) 2002 Dennis Hayes\r
-// (c) 2002 Ximian, Inc. (http://www.ximiam.com)\r
-//\r
-// TODO: Are the static/non static functions declared correctly\r
-\r
-using System;\r
-using System.Collections;\r
-using System.ComponentModel;\r
-using System.Reflection;\r
-\r
-namespace System.Drawing \r
-{\r
-       [TypeConverter(typeof(ColorConverter))]\r
-       [Serializable]\r
-       public struct Color\r
-       {\r
-               private static Hashtable namedColors;\r
-               private static Hashtable systemColors;\r
-               // Private transparancy (A) and R,G,B fields.\r
-               byte a;\r
-               byte r;\r
-               byte g;\r
-               byte b;\r
-               private static string creatingColorNames = "creatingColorNames";\r
-\r
-               // The specs also indicate that all three of these propities are true\r
-               // if created with FromKnownColor or FromNamedColor, false otherwise (FromARGB).\r
-               // Per Microsoft and ECMA specs these varibles are set by which constructor is used, not by their values.\r
-               bool isknowncolor;\r
-               bool isnamedcolor;\r
-               bool issystemcolor;\r
-               KnownColor knownColor;\r
-\r
-               string myname;\r
-\r
-               public string Name {\r
-                       get{\r
-                               return myname;\r
-                       }\r
-               }\r
-\r
-               public bool IsKnownColor {\r
-                       get{\r
-                               return isknowncolor;\r
-                       }\r
-               }\r
-\r
-               public bool IsSystemColor {\r
-                       get{\r
-                               return issystemcolor;\r
-                       }\r
-               }\r
-\r
-               public bool IsNamedColor {\r
-                       get{\r
-                               if (!isnamedcolor)\r
-                                       return IsKnownColor;\r
-                               return isnamedcolor;\r
-                       }\r
-               }\r
-\r
-\r
-               public static Color FromArgb (int red, int green, int blue)\r
-               {\r
-                       return FromArgb (255, red, green, blue);\r
-               }\r
-               \r
-               public static Color FromArgb (int alpha, int red, int green, int blue)\r
-               {\r
-                       CheckARGBValues (alpha, red, green, blue);\r
-                       Color color = new Color ();\r
-                       color.a = (byte) alpha;\r
-                       color.r = (byte) red;\r
-                       color.g = (byte) green;\r
-                       color.b = (byte) blue;\r
-                       color.myname = String.Empty;\r
-                       return color;\r
-               }\r
-\r
-               private static Color FromArgbNamed (int alpha, int red, int green, int blue, string name)\r
-               {\r
-                       Color color = FromArgb (alpha, red, green, blue);\r
-                       color.isknowncolor = true;\r
-                       color.isnamedcolor = true;\r
-                       //color.issystemcolor = false; //???\r
-                       color.myname = name;\r
-                       color.knownColor = (KnownColor) Enum.Parse (typeof (KnownColor), name, false);\r
-                       return color;\r
-               }\r
-\r
-               internal static Color FromArgbSystem (int alpha, int red, int green, int blue, string name)\r
-               {\r
-                       Color color = FromArgbNamed (alpha, red, green, blue, name);\r
-                       color.issystemcolor = true;\r
-                       return color;\r
-               }\r
-\r
-               public int ToArgb()\r
-               {\r
-                       return a << 24 | r << 16 | g << 8 | b;\r
-               } \r
-\r
-               public static Color FromArgb (int alpha, Color baseColor)\r
-               {\r
-                       return FromArgb (alpha, baseColor.r, baseColor.g, baseColor.b);\r
-               }\r
-\r
-               public static Color FromArgb (int argb)\r
-               {\r
-                       return FromArgb (argb >> 24, (argb >> 16) & 0x0FF, (argb >> 8) & 0x0FF, argb & 0x0FF);\r
-               }\r
-\r
-               public static Color FromKnownColor (KnownColor knownColorToConvert)\r
-               {\r
-                       Color c = FromName (knownColorToConvert.ToString ());\r
-                       c.knownColor = knownColorToConvert;\r
-                       return c;\r
-               }\r
-\r
-               private static Hashtable GetColorHashtableFromType (Type type)\r
-               {\r
-                       Hashtable colorHash = new Hashtable (CaseInsensitiveHashCodeProvider.Default,\r
-                                                            CaseInsensitiveComparer.Default);\r
-\r
-                       PropertyInfo [] props = type.GetProperties ();\r
-                       foreach (PropertyInfo prop in props){\r
-                               if (prop.PropertyType != typeof (Color))\r
-                                       continue;\r
-\r
-                               MethodInfo getget = prop.GetGetMethod ();\r
-                               if (getget == null || getget.IsStatic == false)\r
-                                       continue;\r
-\r
-                               colorHash.Add (prop.Name, prop.GetValue (null, null));\r
-                       }\r
-                       return colorHash;\r
-               }\r
-\r
-               private static void FillColorNames ()\r
-               {\r
-                       if (systemColors != null)\r
-                               return;\r
-\r
-                       lock (creatingColorNames) {\r
-                               if (systemColors != null)\r
-                                       return;\r
-                               \r
-                               Hashtable colorHash = GetColorHashtableFromType (typeof (Color));\r
-                               namedColors = colorHash;\r
-\r
-                               colorHash = GetColorHashtableFromType (typeof (SystemColors));\r
-                               systemColors = colorHash;\r
-                       }\r
-               }\r
-               \r
-               public static Color FromName (string colorName)\r
-               {\r
-                       object c = NamedColors [colorName];\r
-                       if (c == null) {\r
-                               c = SystemColors [colorName];\r
-                               if (c == null) {\r
-                                       // This is what it returns!\r
-                                       Color d = FromArgb (0, 0, 0, 0);\r
-                                       d.myname = colorName;\r
-                                       d.isnamedcolor = true;\r
-                                       c = d;\r
-                               }\r
-                       }\r
-\r
-                       return (Color) c;\r
-               }\r
-\r
-               internal static Hashtable NamedColors\r
-               {\r
-                       get {\r
-                               FillColorNames ();\r
-                               return namedColors;\r
-                       }\r
-               }\r
-\r
-               internal static Hashtable SystemColors\r
-               {\r
-                       get {\r
-                               FillColorNames ();\r
-                               return systemColors;\r
-                       }\r
-               }\r
-                       \r
-               // -----------------------\r
-               // Public Shared Members\r
-               // -----------------------\r
-\r
-               /// <summary>\r
-               ///     Empty Shared Field\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     An uninitialized Color Structure\r
-               /// </remarks>\r
-               \r
-               public static readonly Color Empty;\r
-               \r
-               /// <summary>\r
-               ///     Equality Operator\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Compares two Color objects. The return value is\r
-               ///     based on the equivalence of the A,R,G,B properties \r
-               ///     of the two Colors.\r
-               /// </remarks>\r
-\r
-               public static bool operator == (Color colorA, Color colorB)\r
-               {\r
-                       return ((colorA.a == colorB.a) && (colorA.r == colorB.r)\r
-                       && (colorA.g == colorB.g) && (colorA.b == colorB.b));\r
-               }\r
-               \r
-               /// <summary>\r
-               ///     Inequality Operator\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Compares two Color objects. The return value is\r
-               ///     based on the equivalence of the A,R,G,B properties \r
-               ///     of the two colors.\r
-               /// </remarks>\r
-\r
-               public static bool operator != (Color colorA, Color colorB)\r
-               {\r
-                       return ((colorA.a != colorB.a) || (colorA.r != colorB.r)\r
-                       || (colorA.g != colorB.g) || (colorA.b != colorB.b));\r
-               }\r
-               \r
-               public float GetBrightness (){\r
-                       // Intensity is the normalized sum of the three RGB values.;\r
-                       return ((float)(r + g + b))/(255*3);\r
-               }\r
-               public float GetSaturation (){\r
-                       // S = 1 - I * Min(r,g,b)\r
-                       return (255 - \r
-                               (((float)(r + g +b))/3)*Math.Min(r,Math.Min(g,b))\r
-                               )/255;\r
-               }\r
-\r
-               public float GetHue (){\r
-                       float top = ((float)(2*r-g-b))/(2*255);\r
-                       float bottom = (float)Math.Sqrt(((r-g)*(r-g) + (r-b)*(g-b))/255);\r
-                       return (float)Math.Acos(top/bottom);\r
-               }\r
-               \r
-               // -----------------------\r
-               // Public Instance Members\r
-               // -----------------------\r
-\r
-               /// <summary>\r
-               ///     ToKnownColor method\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Returns the KnownColor enum value for this color, 0 if is not known.\r
-               /// </remarks>\r
-               public KnownColor ToKnownColor ()\r
-               {\r
-                       return knownColor;\r
-               }\r
-\r
-               /// <summary>\r
-               ///     IsEmpty Property\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Indicates transparent black. R,G,B = 0; A=0?\r
-               /// </remarks>\r
-               \r
-               public bool IsEmpty \r
-               {\r
-                       get {\r
-                               return (a + r + g + b) == 0;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///     A Property\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     The transparancy of the Color.\r
-               /// </remarks>\r
-               \r
-               public byte A\r
-               {\r
-                       get {\r
-                               return a;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///     R Property\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     The red value of the Color.\r
-               /// </remarks>\r
-               \r
-               public byte R\r
-               {\r
-                       get {\r
-                               return r;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///     G Property\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     The green value of the Color.\r
-               /// </remarks>\r
-               \r
-               public byte G\r
-               {\r
-                       get {\r
-                               return g;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///     B Property\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     The blue value of the Color.\r
-               /// </remarks>\r
-               \r
-               public byte B\r
-               {\r
-                       get {\r
-                               return b;\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               ///     Equals Method\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Checks equivalence of this Color and another object.\r
-               /// </remarks>\r
-               \r
-               public override bool Equals (object o)\r
-               {\r
-                       if (!(o is Color))\r
-                               return false;\r
-\r
-                       Color c = (Color) o;\r
-                       if (c.r == r && c.g == g && c.b == b) {\r
-                               if (myname != null || c.myname != null)\r
-                                       return (myname == c.myname);\r
-                               return true;\r
-                       }\r
-                       return false;\r
-               }\r
-\r
-               /// <summary>\r
-               ///     Reference Equals Method\r
-               ///     Is commented out because this is handled by the base class.\r
-               ///     TODO: Is it correct to let the base class handel reference equals\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Checks equivalence of this Color and another object.\r
-               /// </remarks>\r
-               //public bool ReferenceEquals (object o)\r
-               //{\r
-               //      if (!(o is Color))return false;\r
-               //      return (this == (Color) o);\r
-               //}\r
-\r
-\r
-\r
-               /// <summary>\r
-               ///     GetHashCode Method\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Calculates a hashing value.\r
-               /// </remarks>\r
-               \r
-               public override int GetHashCode ()\r
-               {\r
-                       return ToArgb().GetHashCode();\r
-               }\r
-\r
-               /// <summary>\r
-               ///     ToString Method\r
-               /// </summary>\r
-               ///\r
-               /// <remarks>\r
-               ///     Formats the Color as a string in ARGB notation.\r
-               /// </remarks>\r
-               \r
-               public override string ToString ()\r
-               {\r
-                       if (myname != "")\r
-                               return "Color [" + myname + "]";\r
-\r
-                       return String.Format ("Color [A={0}, R={1}, G={2}, B={3}]", a, r, g, b);\r
-               }\r
\r
-               private static void CheckRGBValues (int red,int green,int blue)\r
-               {\r
-                       if( (red > 255) || (red < 0))\r
-                               throw new System.ArgumentOutOfRangeException\r
-                                       ("red",red,"Value must be in the range 0 - 255");\r
-                       if( (green > 255) || (green < 0))\r
-                               throw new System.ArgumentOutOfRangeException\r
-                                       ("green",green,"Value must be in the range 0 - 255");\r
-                       if( (blue > 255) || (blue < 0))\r
-                               throw new System.ArgumentOutOfRangeException\r
-                                       ("blue",blue,"Value must be in the range 0 - 255");\r
-               }\r
-\r
-               private static void CheckARGBValues (int alpha,int red,int green,int blue)\r
-               {\r
-                       if( (alpha > 255) || (alpha < 0))\r
-                               throw new System.ArgumentOutOfRangeException\r
-                                       ("alpha",alpha,"Value must be in the range 0 - 255");\r
-                       CheckRGBValues(red,green,blue);\r
-               }\r
-\r
-               //Documentation, do not remove!\r
-               //This is the program that was used to generate the C# source code below.\r
-               //using System;\r
-               //using System.Diagnostics;\r
-               //using System.Drawing;\r
-               //using System.Reflection;\r
-               //public class m {\r
-               //static void Main(string[] args)\r
-               //{\r
-               //      Type cType = typeof (Color);\r
-               //      PropertyInfo [] properties = cType.GetProperties ();\r
-               //      foreach (PropertyInfo property in properties) {\r
-               //              MethodInfo method = property.GetGetMethod();\r
-               //              if (method != null && method.IsStatic && method.ReturnType == cType) {\r
-               //                      Color c = (Color) method.Invoke( null, new object[0] );\r
-               //                      Console.WriteLine("static public Color " + property.Name);\r
-               //                      Console.WriteLine("{\t\n\tget {");\r
-               //                      Console.WriteLine("\t\treturn Color.FromArgbNamed ({0}, {1}, {2}, {3}, \"{4}\");",\r
-               //                                              c.A, c.R, c.G, c.B, property.Name);\r
-               //                      Console.WriteLine("\t}");\r
-               //                      Console.WriteLine("}\n");\r
-               //              }\r
-               //      }\r
-               //}\r
-               //}\r
-\r
-               static public Color Transparent\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (0, 255, 255, 255, "Transparent");\r
-                       }\r
-               }\r
-\r
-               static public Color AliceBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 240, 248, 255, "AliceBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color AntiqueWhite\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 250, 235, 215, "AntiqueWhite");\r
-                       }\r
-               }\r
-\r
-               static public Color Aqua\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 255, 255, "Aqua");\r
-                       }\r
-               }\r
-\r
-               static public Color Aquamarine\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 127, 255, 212, "Aquamarine");\r
-                       }\r
-               }\r
-\r
-               static public Color Azure\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 240, 255, 255, "Azure");\r
-                       }\r
-               }\r
-\r
-               static public Color Beige\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 245, 245, 220, "Beige");\r
-                       }\r
-               }\r
-\r
-               static public Color Bisque\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 228, 196, "Bisque");\r
-                       }\r
-               }\r
-\r
-               static public Color Black\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 0, 0, "Black");\r
-                       }\r
-               }\r
-\r
-               static public Color BlanchedAlmond\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 235, 205, "BlanchedAlmond");\r
-                       }\r
-               }\r
-\r
-               static public Color Blue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 0, 255, "Blue");\r
-                       }\r
-               }\r
-\r
-               static public Color BlueViolet\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 138, 43, 226, "BlueViolet");\r
-                       }\r
-               }\r
-\r
-               static public Color Brown\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 165, 42, 42, "Brown");\r
-                       }\r
-               }\r
-\r
-               static public Color BurlyWood\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 222, 184, 135, "BurlyWood");\r
-                       }\r
-               }\r
-\r
-               static public Color CadetBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 95, 158, 160, "CadetBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color Chartreuse\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 127, 255, 0, "Chartreuse");\r
-                       }\r
-               }\r
-\r
-               static public Color Chocolate\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 210, 105, 30, "Chocolate");\r
-                       }\r
-               }\r
-\r
-               static public Color Coral\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 127, 80, "Coral");\r
-                       }\r
-               }\r
-\r
-               static public Color CornflowerBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 100, 149, 237, "CornflowerBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color Cornsilk\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 248, 220, "Cornsilk");\r
-                       }\r
-               }\r
-\r
-               static public Color Crimson\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 220, 20, 60, "Crimson");\r
-                       }\r
-               }\r
-\r
-               static public Color Cyan\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 255, 255, "Cyan");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 0, 139, "DarkBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkCyan\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 139, 139, "DarkCyan");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkGoldenrod\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 184, 134, 11, "DarkGoldenrod");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkGray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 169, 169, 169, "DarkGray");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 100, 0, "DarkGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkKhaki\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 189, 183, 107, "DarkKhaki");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkMagenta\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 139, 0, 139, "DarkMagenta");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkOliveGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 85, 107, 47, "DarkOliveGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkOrange\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 140, 0, "DarkOrange");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkOrchid\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 153, 50, 204, "DarkOrchid");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkRed\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 139, 0, 0, "DarkRed");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkSalmon\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 233, 150, 122, "DarkSalmon");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkSeaGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 143, 188, 139, "DarkSeaGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkSlateBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 72, 61, 139, "DarkSlateBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkSlateGray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 47, 79, 79, "DarkSlateGray");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkTurquoise\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 206, 209, "DarkTurquoise");\r
-                       }\r
-               }\r
-\r
-               static public Color DarkViolet\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 148, 0, 211, "DarkViolet");\r
-                       }\r
-               }\r
-\r
-               static public Color DeepPink\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 20, 147, "DeepPink");\r
-                       }\r
-               }\r
-\r
-               static public Color DeepSkyBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 191, 255, "DeepSkyBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color DimGray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 105, 105, 105, "DimGray");\r
-                       }\r
-               }\r
-\r
-               static public Color DodgerBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 30, 144, 255, "DodgerBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color Firebrick\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 178, 34, 34, "Firebrick");\r
-                       }\r
-               }\r
-\r
-               static public Color FloralWhite\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 250, 240, "FloralWhite");\r
-                       }\r
-               }\r
-\r
-               static public Color ForestGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 34, 139, 34, "ForestGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color Fuchsia\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 0, 255, "Fuchsia");\r
-                       }\r
-               }\r
-\r
-               static public Color Gainsboro\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 220, 220, 220, "Gainsboro");\r
-                       }\r
-               }\r
-\r
-               static public Color GhostWhite\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 248, 248, 255, "GhostWhite");\r
-                       }\r
-               }\r
-\r
-               static public Color Gold\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 215, 0, "Gold");\r
-                       }\r
-               }\r
-\r
-               static public Color Goldenrod\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 218, 165, 32, "Goldenrod");\r
-                       }\r
-               }\r
-\r
-               static public Color Gray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 128, 128, 128, "Gray");\r
-                       }\r
-               }\r
-\r
-               static public Color Green\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 128, 0, "Green");\r
-                       }\r
-               }\r
-\r
-               static public Color GreenYellow\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 173, 255, 47, "GreenYellow");\r
-                       }\r
-               }\r
-\r
-               static public Color Honeydew\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 240, 255, 240, "Honeydew");\r
-                       }\r
-               }\r
-\r
-               static public Color HotPink\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 105, 180, "HotPink");\r
-                       }\r
-               }\r
-\r
-               static public Color IndianRed\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 205, 92, 92, "IndianRed");\r
-                       }\r
-               }\r
-\r
-               static public Color Indigo\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 75, 0, 130, "Indigo");\r
-                       }\r
-               }\r
-\r
-               static public Color Ivory\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 255, 240, "Ivory");\r
-                       }\r
-               }\r
-\r
-               static public Color Khaki\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 240, 230, 140, "Khaki");\r
-                       }\r
-               }\r
-\r
-               static public Color Lavender\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 230, 230, 250, "Lavender");\r
-                       }\r
-               }\r
-\r
-               static public Color LavenderBlush\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 240, 245, "LavenderBlush");\r
-                       }\r
-               }\r
-\r
-               static public Color LawnGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 124, 252, 0, "LawnGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color LemonChiffon\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 250, 205, "LemonChiffon");\r
-                       }\r
-               }\r
-\r
-               static public Color LightBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 173, 216, 230, "LightBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color LightCoral\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 240, 128, 128, "LightCoral");\r
-                       }\r
-               }\r
-\r
-               static public Color LightCyan\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 224, 255, 255, "LightCyan");\r
-                       }\r
-               }\r
-\r
-               static public Color LightGoldenrodYellow\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 250, 250, 210, "LightGoldenrodYellow");\r
-                       }\r
-               }\r
-\r
-               static public Color LightGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 144, 238, 144, "LightGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color LightGray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 211, 211, 211, "LightGray");\r
-                       }\r
-               }\r
-\r
-               static public Color LightPink\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 182, 193, "LightPink");\r
-                       }\r
-               }\r
-\r
-               static public Color LightSalmon\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 160, 122, "LightSalmon");\r
-                       }\r
-               }\r
-\r
-               static public Color LightSeaGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 32, 178, 170, "LightSeaGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color LightSkyBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 135, 206, 250, "LightSkyBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color LightSlateGray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 119, 136, 153, "LightSlateGray");\r
-                       }\r
-               }\r
-\r
-               static public Color LightSteelBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 176, 196, 222, "LightSteelBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color LightYellow\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 255, 224, "LightYellow");\r
-                       }\r
-               }\r
-\r
-               static public Color Lime\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 255, 0, "Lime");\r
-                       }\r
-               }\r
-\r
-               static public Color LimeGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 50, 205, 50, "LimeGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color Linen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 250, 240, 230, "Linen");\r
-                       }\r
-               }\r
-\r
-               static public Color Magenta\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 0, 255, "Magenta");\r
-                       }\r
-               }\r
-\r
-               static public Color Maroon\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 128, 0, 0, "Maroon");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumAquamarine\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 102, 205, 170, "MediumAquamarine");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 0, 205, "MediumBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumOrchid\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 186, 85, 211, "MediumOrchid");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumPurple\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 147, 112, 219, "MediumPurple");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumSeaGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 60, 179, 113, "MediumSeaGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumSlateBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 123, 104, 238, "MediumSlateBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumSpringGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 250, 154, "MediumSpringGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumTurquoise\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 72, 209, 204, "MediumTurquoise");\r
-                       }\r
-               }\r
-\r
-               static public Color MediumVioletRed\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 199, 21, 133, "MediumVioletRed");\r
-                       }\r
-               }\r
-\r
-               static public Color MidnightBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 25, 25, 112, "MidnightBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color MintCream\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 245, 255, 250, "MintCream");\r
-                       }\r
-               }\r
-\r
-               static public Color MistyRose\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 228, 225, "MistyRose");\r
-                       }\r
-               }\r
-\r
-               static public Color Moccasin\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 228, 181, "Moccasin");\r
-                       }\r
-               }\r
-\r
-               static public Color NavajoWhite\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 222, 173, "NavajoWhite");\r
-                       }\r
-               }\r
-\r
-               static public Color Navy\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 0, 128, "Navy");\r
-                       }\r
-               }\r
-\r
-               static public Color OldLace\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 253, 245, 230, "OldLace");\r
-                       }\r
-               }\r
-\r
-               static public Color Olive\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 128, 128, 0, "Olive");\r
-                       }\r
-               }\r
-\r
-               static public Color OliveDrab\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 107, 142, 35, "OliveDrab");\r
-                       }\r
-               }\r
-\r
-               static public Color Orange\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 165, 0, "Orange");\r
-                       }\r
-               }\r
-\r
-               static public Color OrangeRed\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 69, 0, "OrangeRed");\r
-                       }\r
-               }\r
-\r
-               static public Color Orchid\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 218, 112, 214, "Orchid");\r
-                       }\r
-               }\r
-\r
-               static public Color PaleGoldenrod\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 238, 232, 170, "PaleGoldenrod");\r
-                       }\r
-               }\r
-\r
-               static public Color PaleGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 152, 251, 152, "PaleGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color PaleTurquoise\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 175, 238, 238, "PaleTurquoise");\r
-                       }\r
-               }\r
-\r
-               static public Color PaleVioletRed\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 219, 112, 147, "PaleVioletRed");\r
-                       }\r
-               }\r
-\r
-               static public Color PapayaWhip\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 239, 213, "PapayaWhip");\r
-                       }\r
-               }\r
-\r
-               static public Color PeachPuff\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 218, 185, "PeachPuff");\r
-                       }\r
-               }\r
-\r
-               static public Color Peru\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 205, 133, 63, "Peru");\r
-                       }\r
-               }\r
-\r
-               static public Color Pink\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 192, 203, "Pink");\r
-                       }\r
-               }\r
-\r
-               static public Color Plum\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 221, 160, 221, "Plum");\r
-                       }\r
-               }\r
-\r
-               static public Color PowderBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 176, 224, 230, "PowderBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color Purple\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 128, 0, 128, "Purple");\r
-                       }\r
-               }\r
-\r
-               static public Color Red\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 0, 0, "Red");\r
-                       }\r
-               }\r
-\r
-               static public Color RosyBrown\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 188, 143, 143, "RosyBrown");\r
-                       }\r
-               }\r
-\r
-               static public Color RoyalBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 65, 105, 225, "RoyalBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color SaddleBrown\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 139, 69, 19, "SaddleBrown");\r
-                       }\r
-               }\r
-\r
-               static public Color Salmon\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 250, 128, 114, "Salmon");\r
-                       }\r
-               }\r
-\r
-               static public Color SandyBrown\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 244, 164, 96, "SandyBrown");\r
-                       }\r
-               }\r
-\r
-               static public Color SeaGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 46, 139, 87, "SeaGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color SeaShell\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 245, 238, "SeaShell");\r
-                       }\r
-               }\r
-\r
-               static public Color Sienna\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 160, 82, 45, "Sienna");\r
-                       }\r
-               }\r
-\r
-               static public Color Silver\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 192, 192, 192, "Silver");\r
-                       }\r
-               }\r
-\r
-               static public Color SkyBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 135, 206, 235, "SkyBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color SlateBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 106, 90, 205, "SlateBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color SlateGray\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 112, 128, 144, "SlateGray");\r
-                       }\r
-               }\r
-\r
-               static public Color Snow\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 250, 250, "Snow");\r
-                       }\r
-               }\r
-\r
-               static public Color SpringGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 255, 127, "SpringGreen");\r
-                       }\r
-               }\r
-\r
-               static public Color SteelBlue\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 70, 130, 180, "SteelBlue");\r
-                       }\r
-               }\r
-\r
-               static public Color Tan\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 210, 180, 140, "Tan");\r
-                       }\r
-               }\r
-\r
-               static public Color Teal\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 0, 128, 128, "Teal");\r
-                       }\r
-               }\r
-\r
-               static public Color Thistle\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 216, 191, 216, "Thistle");\r
-                       }\r
-               }\r
-\r
-               static public Color Tomato\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 99, 71, "Tomato");\r
-                       }\r
-               }\r
-\r
-               static public Color Turquoise\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 64, 224, 208, "Turquoise");\r
-                       }\r
-               }\r
-\r
-               static public Color Violet\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 238, 130, 238, "Violet");\r
-                       }\r
-               }\r
-\r
-               static public Color Wheat\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 245, 222, 179, "Wheat");\r
-                       }\r
-               }\r
-\r
-               static public Color White\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 255, 255, "White");\r
-                       }\r
-               }\r
-\r
-               static public Color WhiteSmoke\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 245, 245, 245, "WhiteSmoke");\r
-                       }\r
-               }\r
-\r
-               static public Color Yellow\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 255, 255, 0, "Yellow");\r
-                       }\r
-               }\r
-\r
-               static public Color YellowGreen\r
-               {       \r
-                       get {\r
-                               return Color.FromArgbNamed (255, 154, 205, 50, "YellowGreen");\r
-                       }\r
-               }\r
-       }\r
-}\r
+//
+// System.Drawing.Color.cs
+//
+// Authors:
+//     Dennis Hayes (dennish@raytek.com)
+//     Ben Houston  (ben@exocortex.org)
+//     Gonzalo Paniagua (gonzalo@ximian.com)
+//     Juraj Skripsky (juraj@hotfeet.ch)
+//
+// (C) 2002 Dennis Hayes
+// (c) 2002 Ximian, Inc. (http://www.ximiam.com)
+// (C) 2005 HotFeet GmbH (http://www.hotfeet.ch)
+//
+// TODO: Are the static/non static functions declared correctly
+
+//
+// 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.
+//
+
+using System;
+using System.Collections;
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace System.Drawing 
+{
+       [TypeConverter(typeof(ColorConverter))]
+       [ComVisible (true)]
+       [Editor ("System.Drawing.Design.ColorEditor, " + Consts.AssemblySystem_Drawing_Design, typeof (System.Drawing.Design.UITypeEditor))]
+       [Serializable]
+       public struct Color
+       {
+               private const float     RGBMax = 255;
+               private const float     HLSMax = 240;
+               private static Hashtable namedColors;
+               private static Hashtable systemColors;
+               static Color [] knownColors;
+               
+               // Private transparancy (A) and R,G,B fields.
+               private byte a;
+               private byte r;
+               private byte g;
+               private byte b;
+               private static string creatingColorNames = "creatingColorNames";
+
+               // The specs also indicate that all three of these propities are true
+               // if created with FromKnownColor or FromNamedColor, false otherwise (FromARGB).
+               // Per Microsoft and ECMA specs these varibles are set by which constructor is used, not by their values.
+               private bool isknowncolor;
+               private bool isnamedcolor;
+               private bool issystemcolor;
+               private KnownColor knownColor;
+
+               private string myname;
+
+               public string Name {
+                       get{
+                               if (myname == null || myname == String.Empty)
+                                       return String.Format ("{0:x}", ToArgb ());
+                               return myname;
+                       }
+               }
+
+               public bool IsKnownColor {
+                       get{
+                               return isknowncolor;
+                       }
+               }
+
+               public bool IsSystemColor {
+                       get{
+                               return issystemcolor;
+                       }
+               }
+
+               public bool IsNamedColor {
+                       get{
+                               if (!isnamedcolor)
+                                       return IsKnownColor;
+                               return isnamedcolor;
+                       }
+               }
+
+
+               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)
+               {
+                       CheckARGBValues (alpha, red, green, blue);
+                       Color color = new Color ();
+                       color.a = (byte) alpha;
+                       color.r = (byte) red;
+                       color.g = (byte) green;
+                       color.b = (byte) blue;
+                       color.myname = String.Empty;
+                       return color;
+               }
+
+               private static Color FromArgbNamed (int alpha, int red, int green, int blue, string name, KnownColor knownColor)
+               {
+                       Color color = FromArgb (alpha, red, green, blue);
+                       color.isknowncolor = true;
+                       color.isnamedcolor = true;
+                       //color.issystemcolor = false; //???
+                       color.myname = name;
+                       // FIXME: here happens SEGFAULT.
+                       //color.knownColor = (KnownColor) Enum.Parse (typeof (KnownColor), name, false);
+                       color.knownColor = knownColor;
+                       return color;
+               }
+
+               internal static Color FromArgbSystem (int alpha, int red, int green, int blue, string name, KnownColor knownColor)
+               {
+                       Color color = FromArgbNamed (alpha, red, green, blue, name, knownColor);
+                       color.issystemcolor = true;
+                       return color;
+               }
+
+               public int ToArgb()
+               {
+                       return a << 24 | r << 16 | g << 8 | b;
+               } 
+
+               public static Color FromArgb (int alpha, Color baseColor)
+               {
+                       return FromArgb (alpha, baseColor.r, baseColor.g, baseColor.b);
+               }
+
+               public static Color FromArgb (int argb)
+               {
+                       return FromArgb ((argb >> 24) & 0x0FF, (argb >> 16) & 0x0FF, (argb >> 8) & 0x0FF, argb & 0x0FF);
+               }
+
+               public static Color FromKnownColor (KnownColor c)
+               {
+                       if (knownColors == null)
+                               FillColorNames ();
+                       
+                       if (c < KnownColor.ActiveBorder || c > KnownColor.YellowGreen) {
+                               // This is what it returns!
+                               Color d = FromArgb (0, 0, 0, 0);
+                               d.myname = c.ToString ();
+                               d.isnamedcolor = true;
+                               d.knownColor = c;
+                               return d;
+                       }
+                       
+                       return knownColors [(int) c];
+               }
+
+               private static Hashtable GetColorHashtableFromType (Type type)
+               {
+                       Hashtable colorHash = new Hashtable (CaseInsensitiveHashCodeProvider.Default,
+                                                            CaseInsensitiveComparer.Default);
+
+                       PropertyInfo [] props = type.GetProperties ();
+                       foreach (PropertyInfo prop in props){
+                               if (prop.PropertyType != typeof (Color))
+                                       continue;
+
+                               MethodInfo getget = prop.GetGetMethod ();
+                               if (getget == null || getget.IsStatic == false)
+                                       continue;
+                               
+                               object o = prop.GetValue (null, null);
+                               colorHash.Add (prop.Name, o);
+                               
+                               Color c = (Color) o;
+                               knownColors [(int) c.knownColor] = c;
+                       }
+                       return colorHash;
+               }
+
+               private static void FillColorNames ()
+               {
+                       if (systemColors != null)
+                               return;
+
+                       lock (creatingColorNames) {
+                               if (systemColors != null)
+                                       return;
+                               
+                               knownColors = new Color [(int)KnownColor.YellowGreen + 1];
+                               
+                               Hashtable colorHash = GetColorHashtableFromType (typeof (Color));
+                               namedColors = colorHash;
+
+                               colorHash = GetColorHashtableFromType (typeof (SystemColors));
+                               systemColors = colorHash;
+                       }
+               }
+               
+               public static Color FromName (string colorName)
+               {
+                       object c = NamedColors [colorName];
+                       if (c == null) {
+                               c = SystemColors [colorName];
+                               if (c == null) {
+                                       // This is what it returns!
+                                       Color d = FromArgb (0, 0, 0, 0);
+                                       d.myname = colorName;
+                                       d.isnamedcolor = true;
+                                       c = d;
+                               }
+                       }
+
+                       return (Color) c;
+               }
+
+               internal static Hashtable NamedColors
+               {
+                       get {
+                               FillColorNames ();
+                               return namedColors;
+                       }
+               }
+
+               internal static Hashtable SystemColors
+               {
+                       get {
+                               FillColorNames ();
+                               return systemColors;
+                       }
+               }
+                       
+               // -----------------------
+               // Public Shared Members
+               // -----------------------
+
+               /// <summary>
+               ///     Empty Shared Field
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     An uninitialized Color Structure
+               /// </remarks>
+               
+               public static readonly Color Empty;
+               
+               /// <summary>
+               ///     Equality Operator
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Compares two Color objects. The return value is
+               ///     based on the equivalence of the A,R,G,B properties 
+               ///     of the two Colors.
+               /// </remarks>
+
+               public static bool operator == (Color colorA, Color colorB)
+               {
+                       return ((colorA.a == colorB.a) && (colorA.r == colorB.r)
+                       && (colorA.g == colorB.g) && (colorA.b == colorB.b) &&
+                       (colorA.myname == colorB.myname));
+               }
+               
+               /// <summary>
+               ///     Inequality Operator
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Compares two Color objects. The return value is
+               ///     based on the equivalence of the A,R,G,B properties 
+               ///     of the two colors.
+               /// </remarks>
+
+               public static bool operator != (Color colorA, Color colorB)
+               {
+                       return ((colorA.a != colorB.a) || (colorA.r != colorB.r)
+                       || (colorA.g != colorB.g) || (colorA.b != colorB.b) ||
+                       (colorA.myname != colorB.myname));
+               }
+
+               public float GetBrightness ()
+               {
+                       byte minval = Math.Min (r, Math.Min (g, b));\r
+                       byte maxval = Math.Max (r, Math.Max (g, b));\r
+       \r
+                       return (float)(maxval + minval) / 510;\r
+               }
+
+               public float GetSaturation ()
+               {
+                       byte minval = Math.Min (r, Math.Min (g, b));\r
+                       byte maxval = Math.Max (r, Math.Max (g, b));
+                       
+                       int sum = maxval + minval;
+                       if (sum > 255)
+                               sum = 510 - sum;\r
+
+                       return (float)(maxval - minval) / sum;
+               }
+
+               public float GetHue ()
+               {
+                       byte minval = Math.Min (r, Math.Min (g, b));\r
+                       byte maxval = Math.Max (r, Math.Max (g, b));
+                       
+                       if (maxval == minval)\r
+                                       return 0.0f;\r
+                       
+                       float diff = (float)(maxval - minval);
+                       float rnorm = (maxval - r) / diff;\r
+                       float gnorm = (maxval - g) / diff;\r
+                       float bnorm = (maxval - b) / diff;\r
+       
+                       float hue = 0.0f;\r
+                       if (r == maxval) \r
+                               hue = 60.0f * (6.0f + bnorm - gnorm);\r
+                       if (g == maxval) \r
+                               hue = 60.0f * (2.0f + rnorm - bnorm);\r
+                       if (b  == maxval) \r
+                               hue = 60.0f * (4.0f + gnorm - rnorm);\r
+                       if (hue > 360.0f) \r
+                               hue = hue - 360.0f;
+
+                       return hue;\r
+               }
+               
+               // -----------------------
+               // Public Instance Members
+               // -----------------------
+
+               /// <summary>
+               ///     ToKnownColor method
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Returns the KnownColor enum value for this color, 0 if is not known.
+               /// </remarks>
+               public KnownColor ToKnownColor ()
+               {
+                       return knownColor;
+               }
+
+               /// <summary>
+               ///     IsEmpty Property
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Indicates transparent black. R,G,B = 0; A=0?
+               /// </remarks>
+               
+               public bool IsEmpty 
+               {
+                       get {
+                               return (a + r + g + b) == 0;
+                       }
+               }
+
+               /// <summary>
+               ///     A Property
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     The transparancy of the Color.
+               /// </remarks>
+               
+               public byte A
+               {
+                       get {
+                               return a;
+                       }
+               }
+
+               /// <summary>
+               ///     R Property
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     The red value of the Color.
+               /// </remarks>
+               
+               public byte R
+               {
+                       get {
+                               return r;
+                       }
+               }
+
+               /// <summary>
+               ///     G Property
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     The green value of the Color.
+               /// </remarks>
+               
+               public byte G
+               {
+                       get {
+                               return g;
+                       }
+               }
+
+               /// <summary>
+               ///     B Property
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     The blue value of the Color.
+               /// </remarks>
+               
+               public byte B
+               {
+                       get {
+                               return b;
+                       }
+               }
+
+               /// <summary>
+               ///     Equals Method
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Checks equivalence of this Color and another object.
+               /// </remarks>
+               
+               public override bool Equals (object o)
+               {
+                       if (!(o is Color))
+                               return false;
+
+                       Color c = (Color) o;
+                       if (c.r == r && c.g == g && c.b == b) {
+                               if (myname != null || c.myname != null)
+                                       return (myname == c.myname);
+                               return true;
+                       }
+                       return false;
+               }
+
+               /// <summary>
+               ///     Reference Equals Method
+               ///     Is commented out because this is handled by the base class.
+               ///     TODO: Is it correct to let the base class handel reference equals
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Checks equivalence of this Color and another object.
+               /// </remarks>
+               //public bool ReferenceEquals (object o)
+               //{
+               //      if (!(o is Color))return false;
+               //      return (this == (Color) o);
+               //}
+
+
+
+               /// <summary>
+               ///     GetHashCode Method
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Calculates a hashing value.
+               /// </remarks>
+               
+               public override int GetHashCode ()
+               {
+                       return ToArgb().GetHashCode();
+               }
+
+               /// <summary>
+               ///     ToString Method
+               /// </summary>
+               ///
+               /// <remarks>
+               ///     Formats the Color as a string in ARGB notation.
+               /// </remarks>
+               
+               public override string ToString ()
+               {
+                       if (myname != "")
+                               return "Color [" + myname + "]";
+
+                       return String.Format ("Color [A={0}, R={1}, G={2}, B={3}]", a, r, g, b);
+               }
+               private static void CheckRGBValues (int red,int green,int blue)
+               {
+                       if( (red > 255) || (red < 0))
+                               throw new System.ArgumentOutOfRangeException
+                                       ("red",red,"Value must be in the range 0 - 255");
+                       if( (green > 255) || (green < 0))
+                               throw new System.ArgumentOutOfRangeException
+                                       ("green",green,"Value must be in the range 0 - 255");
+                       if( (blue > 255) || (blue < 0))
+                               throw new System.ArgumentOutOfRangeException
+                                       ("blue",blue,"Value must be in the range 0 - 255");
+               }
+
+               private static void CheckARGBValues (int alpha,int red,int green,int blue)
+               {
+                       if( (alpha > 255) || (alpha < 0))
+                               throw new System.ArgumentOutOfRangeException
+                                       ("alpha",alpha,"Value must be in the range 0 - 255");
+                       CheckRGBValues(red,green,blue);
+               }
+
+               //Documentation, do not remove!
+               //This is the program that was used to generate the C# source code below.
+               //using System;
+               //using System.Diagnostics;
+               //using System.Drawing;
+               //using System.Reflection;
+               //public class m {
+               //static void Main(string[] args)
+               //{
+               //      Type cType = typeof (Color);
+               //      PropertyInfo [] properties = cType.GetProperties ();
+               //      foreach (PropertyInfo property in properties) {
+               //              MethodInfo method = property.GetGetMethod();
+               //              if (method != null && method.IsStatic && method.ReturnType == cType) {
+               //                      Color c = (Color) method.Invoke( null, new object[0] );
+               //                      Console.WriteLine("static public Color " + property.Name);
+               //                      Console.WriteLine("{\t\n\tget {");
+               //                      Console.WriteLine("\t\treturn Color.FromArgbNamed ({0}, {1}, {2}, {3}, \"{4}\", KnownColor.{4});",
+               //                                              c.A, c.R, c.G, c.B, property.Name);
+               //                      Console.WriteLine("\t}");
+               //                      Console.WriteLine("}\n");
+               //              }
+               //      }
+               //}
+               //}
+
+               static public Color Transparent
+               {       
+                       get {
+                               return Color.FromArgbNamed (0, 255, 255, 255, "Transparent", KnownColor.Transparent);
+                       }
+               }
+
+               static public Color AliceBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 240, 248, 255, "AliceBlue", KnownColor.AliceBlue);
+                       }
+               }
+
+               static public Color AntiqueWhite
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 250, 235, 215, "AntiqueWhite", KnownColor.AntiqueWhite);
+                       }
+               }
+
+               static public Color Aqua
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 255, 255, "Aqua", KnownColor.Aqua);
+                       }
+               }
+
+               static public Color Aquamarine
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 127, 255, 212, "Aquamarine", KnownColor.Aquamarine);
+                       }
+               }
+
+               static public Color Azure
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 240, 255, 255, "Azure", KnownColor.Azure);
+                       }
+               }
+
+               static public Color Beige
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 245, 245, 220, "Beige", KnownColor.Beige);
+                       }
+               }
+
+               static public Color Bisque
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 228, 196, "Bisque", KnownColor.Bisque);
+                       }
+               }
+
+               static public Color Black
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 0, 0, "Black", KnownColor.Black);
+                       }
+               }
+
+               static public Color BlanchedAlmond
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 235, 205, "BlanchedAlmond", KnownColor.BlanchedAlmond);
+                       }
+               }
+
+               static public Color Blue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 0, 255, "Blue", KnownColor.Blue);
+                       }
+               }
+
+               static public Color BlueViolet
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 138, 43, 226, "BlueViolet", KnownColor.BlueViolet);
+                       }
+               }
+
+               static public Color Brown
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 165, 42, 42, "Brown", KnownColor.Brown);
+                       }
+               }
+
+               static public Color BurlyWood
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 222, 184, 135, "BurlyWood", KnownColor.BurlyWood);
+                       }
+               }
+
+               static public Color CadetBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 95, 158, 160, "CadetBlue", KnownColor.CadetBlue);
+                       }
+               }
+
+               static public Color Chartreuse
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 127, 255, 0, "Chartreuse", KnownColor.Chartreuse);
+                       }
+               }
+
+               static public Color Chocolate
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 210, 105, 30, "Chocolate", KnownColor.Chocolate);
+                       }
+               }
+
+               static public Color Coral
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 127, 80, "Coral", KnownColor.Coral);
+                       }
+               }
+
+               static public Color CornflowerBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 100, 149, 237, "CornflowerBlue", KnownColor.CornflowerBlue);
+                       }
+               }
+
+               static public Color Cornsilk
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 248, 220, "Cornsilk", KnownColor.Cornsilk);
+                       }
+               }
+
+               static public Color Crimson
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 220, 20, 60, "Crimson", KnownColor.Crimson);
+                       }
+               }
+
+               static public Color Cyan
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 255, 255, "Cyan", KnownColor.Cyan);
+                       }
+               }
+
+               static public Color DarkBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 0, 139, "DarkBlue", KnownColor.DarkBlue);
+                       }
+               }
+
+               static public Color DarkCyan
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 139, 139, "DarkCyan", KnownColor.DarkCyan);
+                       }
+               }
+
+               static public Color DarkGoldenrod
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 184, 134, 11, "DarkGoldenrod", KnownColor.DarkGoldenrod);
+                       }
+               }
+
+               static public Color DarkGray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 169, 169, 169, "DarkGray", KnownColor.DarkGray);
+                       }
+               }
+
+               static public Color DarkGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 100, 0, "DarkGreen", KnownColor.DarkGreen);
+                       }
+               }
+
+               static public Color DarkKhaki
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 189, 183, 107, "DarkKhaki", KnownColor.DarkKhaki);
+                       }
+               }
+
+               static public Color DarkMagenta
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 139, 0, 139, "DarkMagenta", KnownColor.DarkMagenta);
+                       }
+               }
+
+               static public Color DarkOliveGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 85, 107, 47, "DarkOliveGreen", KnownColor.DarkOliveGreen);
+                       }
+               }
+
+               static public Color DarkOrange
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 140, 0, "DarkOrange", KnownColor.DarkOrange);
+                       }
+               }
+
+               static public Color DarkOrchid
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 153, 50, 204, "DarkOrchid", KnownColor.DarkOrchid);
+                       }
+               }
+
+               static public Color DarkRed
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 139, 0, 0, "DarkRed", KnownColor.DarkRed);
+                       }
+               }
+
+               static public Color DarkSalmon
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 233, 150, 122, "DarkSalmon", KnownColor.DarkSalmon);
+                       }
+               }
+
+               static public Color DarkSeaGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 143, 188, 139, "DarkSeaGreen", KnownColor.DarkSeaGreen);
+                       }
+               }
+
+               static public Color DarkSlateBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 72, 61, 139, "DarkSlateBlue", KnownColor.DarkSlateBlue);
+                       }
+               }
+
+               static public Color DarkSlateGray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 47, 79, 79, "DarkSlateGray", KnownColor.DarkSlateGray);
+                       }
+               }
+
+               static public Color DarkTurquoise
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 206, 209, "DarkTurquoise", KnownColor.DarkTurquoise);
+                       }
+               }
+
+               static public Color DarkViolet
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 148, 0, 211, "DarkViolet", KnownColor.DarkViolet);
+                       }
+               }
+
+               static public Color DeepPink
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 20, 147, "DeepPink", KnownColor.DeepPink);
+                       }
+               }
+
+               static public Color DeepSkyBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 191, 255, "DeepSkyBlue", KnownColor.DeepSkyBlue);
+                       }
+               }
+
+               static public Color DimGray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 105, 105, 105, "DimGray", KnownColor.DimGray);
+                       }
+               }
+
+               static public Color DodgerBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 30, 144, 255, "DodgerBlue", KnownColor.DodgerBlue);
+                       }
+               }
+
+               static public Color Firebrick
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 178, 34, 34, "Firebrick", KnownColor.Firebrick);
+                       }
+               }
+
+               static public Color FloralWhite
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 250, 240, "FloralWhite", KnownColor.FloralWhite);
+                       }
+               }
+
+               static public Color ForestGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 34, 139, 34, "ForestGreen", KnownColor.ForestGreen);
+                       }
+               }
+
+               static public Color Fuchsia
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 0, 255, "Fuchsia", KnownColor.Fuchsia);
+                       }
+               }
+
+               static public Color Gainsboro
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 220, 220, 220, "Gainsboro", KnownColor.Gainsboro);
+                       }
+               }
+
+               static public Color GhostWhite
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 248, 248, 255, "GhostWhite", KnownColor.GhostWhite);
+                       }
+               }
+
+               static public Color Gold
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 215, 0, "Gold", KnownColor.Gold);
+                       }
+               }
+
+               static public Color Goldenrod
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 218, 165, 32, "Goldenrod", KnownColor.Goldenrod);
+                       }
+               }
+
+               static public Color Gray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 128, 128, 128, "Gray", KnownColor.Gray);
+                       }
+               }
+
+               static public Color Green
+               {       
+                       get {
+                               // LAMESPEC: MS uses A=255, R=0, G=128, B=0 for Green Color,
+                               // which is seems to be wrong. G must be 255.
+                               return Color.FromArgbNamed (255, 0, 128, 0, "Green", KnownColor.Green);
+                       }
+               }
+
+               static public Color GreenYellow
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 173, 255, 47, "GreenYellow", KnownColor.GreenYellow);
+                       }
+               }
+
+               static public Color Honeydew
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 240, 255, 240, "Honeydew", KnownColor.Honeydew);
+                       }
+               }
+
+               static public Color HotPink
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 105, 180, "HotPink", KnownColor.HotPink);
+                       }
+               }
+
+               static public Color IndianRed
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 205, 92, 92, "IndianRed", KnownColor.IndianRed);
+                       }
+               }
+
+               static public Color Indigo
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 75, 0, 130, "Indigo", KnownColor.Indigo);
+                       }
+               }
+
+               static public Color Ivory
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 255, 240, "Ivory", KnownColor.Ivory);
+                       }
+               }
+
+               static public Color Khaki
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 240, 230, 140, "Khaki", KnownColor.Khaki);
+                       }
+               }
+
+               static public Color Lavender
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 230, 230, 250, "Lavender", KnownColor.Lavender);
+                       }
+               }
+
+               static public Color LavenderBlush
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 240, 245, "LavenderBlush", KnownColor.LavenderBlush);
+                       }
+               }
+
+               static public Color LawnGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 124, 252, 0, "LawnGreen", KnownColor.LawnGreen);
+                       }
+               }
+
+               static public Color LemonChiffon
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 250, 205, "LemonChiffon", KnownColor.LemonChiffon);
+                       }
+               }
+
+               static public Color LightBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 173, 216, 230, "LightBlue", KnownColor.LightBlue);
+                       }
+               }
+
+               static public Color LightCoral
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 240, 128, 128, "LightCoral", KnownColor.LightCoral);
+                       }
+               }
+
+               static public Color LightCyan
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 224, 255, 255, "LightCyan", KnownColor.LightCyan);
+                       }
+               }
+
+               static public Color LightGoldenrodYellow
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 250, 250, 210, "LightGoldenrodYellow", KnownColor.LightGoldenrodYellow);
+                       }
+               }
+
+               static public Color LightGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 144, 238, 144, "LightGreen", KnownColor.LightGreen);
+                       }
+               }
+
+               static public Color LightGray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 211, 211, 211, "LightGray", KnownColor.LightGray);
+                       }
+               }
+
+               static public Color LightPink
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 182, 193, "LightPink", KnownColor.LightPink);
+                       }
+               }
+
+               static public Color LightSalmon
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 160, 122, "LightSalmon", KnownColor.LightSalmon);
+                       }
+               }
+
+               static public Color LightSeaGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 32, 178, 170, "LightSeaGreen", KnownColor.LightSeaGreen);
+                       }
+               }
+
+               static public Color LightSkyBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 135, 206, 250, "LightSkyBlue", KnownColor.LightSkyBlue);
+                       }
+               }
+
+               static public Color LightSlateGray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 119, 136, 153, "LightSlateGray", KnownColor.LightSlateGray);
+                       }
+               }
+
+               static public Color LightSteelBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 176, 196, 222, "LightSteelBlue", KnownColor.LightSteelBlue);
+                       }
+               }
+
+               static public Color LightYellow
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 255, 224, "LightYellow", KnownColor.LightYellow);
+                       }
+               }
+
+               static public Color Lime
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 255, 0, "Lime", KnownColor.Lime);
+                       }
+               }
+
+               static public Color LimeGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 50, 205, 50, "LimeGreen", KnownColor.LimeGreen);
+                       }
+               }
+
+               static public Color Linen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 250, 240, 230, "Linen", KnownColor.Linen);
+                       }
+               }
+
+               static public Color Magenta
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 0, 255, "Magenta", KnownColor.Magenta);
+                       }
+               }
+
+               static public Color Maroon
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 128, 0, 0, "Maroon", KnownColor.Maroon);
+                       }
+               }
+
+               static public Color MediumAquamarine
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 102, 205, 170, "MediumAquamarine", KnownColor.MediumAquamarine);
+                       }
+               }
+
+               static public Color MediumBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 0, 205, "MediumBlue", KnownColor.MediumBlue);
+                       }
+               }
+
+               static public Color MediumOrchid
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 186, 85, 211, "MediumOrchid", KnownColor.MediumOrchid);
+                       }
+               }
+
+               static public Color MediumPurple
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 147, 112, 219, "MediumPurple", KnownColor.MediumPurple);
+                       }
+               }
+
+               static public Color MediumSeaGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 60, 179, 113, "MediumSeaGreen", KnownColor.MediumSeaGreen);
+                       }
+               }
+
+               static public Color MediumSlateBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 123, 104, 238, "MediumSlateBlue", KnownColor.MediumSlateBlue);
+                       }
+               }
+
+               static public Color MediumSpringGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 250, 154, "MediumSpringGreen", KnownColor.MediumSpringGreen);
+                       }
+               }
+
+               static public Color MediumTurquoise
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 72, 209, 204, "MediumTurquoise", KnownColor.MediumTurquoise);
+                       }
+               }
+
+               static public Color MediumVioletRed
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 199, 21, 133, "MediumVioletRed", KnownColor.MediumVioletRed);
+                       }
+               }
+
+               static public Color MidnightBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 25, 25, 112, "MidnightBlue", KnownColor.MidnightBlue);
+                       }
+               }
+
+               static public Color MintCream
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 245, 255, 250, "MintCream", KnownColor.MintCream);
+                       }
+               }
+
+               static public Color MistyRose
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 228, 225, "MistyRose", KnownColor.MistyRose);
+                       }
+               }
+
+               static public Color Moccasin
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 228, 181, "Moccasin", KnownColor.Moccasin);
+                       }
+               }
+
+               static public Color NavajoWhite
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 222, 173, "NavajoWhite", KnownColor.NavajoWhite);
+                       }
+               }
+
+               static public Color Navy
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 0, 128, "Navy", KnownColor.Navy);
+                       }
+               }
+
+               static public Color OldLace
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 253, 245, 230, "OldLace", KnownColor.OldLace);
+                       }
+               }
+
+               static public Color Olive
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 128, 128, 0, "Olive", KnownColor.Olive);
+                       }
+               }
+
+               static public Color OliveDrab
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 107, 142, 35, "OliveDrab", KnownColor.OliveDrab);
+                       }
+               }
+
+               static public Color Orange
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 165, 0, "Orange", KnownColor.Orange);
+                       }
+               }
+
+               static public Color OrangeRed
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 69, 0, "OrangeRed", KnownColor.OrangeRed);
+                       }
+               }
+
+               static public Color Orchid
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 218, 112, 214, "Orchid", KnownColor.Orchid);
+                       }
+               }
+
+               static public Color PaleGoldenrod
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 238, 232, 170, "PaleGoldenrod", KnownColor.PaleGoldenrod);
+                       }
+               }
+
+               static public Color PaleGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 152, 251, 152, "PaleGreen", KnownColor.PaleGreen);
+                       }
+               }
+
+               static public Color PaleTurquoise
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 175, 238, 238, "PaleTurquoise", KnownColor.PaleTurquoise);
+                       }
+               }
+
+               static public Color PaleVioletRed
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 219, 112, 147, "PaleVioletRed", KnownColor.PaleVioletRed);
+                       }
+               }
+
+               static public Color PapayaWhip
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 239, 213, "PapayaWhip", KnownColor.PapayaWhip);
+                       }
+               }
+
+               static public Color PeachPuff
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 218, 185, "PeachPuff", KnownColor.PeachPuff);
+                       }
+               }
+
+               static public Color Peru
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 205, 133, 63, "Peru", KnownColor.Peru);
+                       }
+               }
+
+               static public Color Pink
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 192, 203, "Pink", KnownColor.Pink);
+                       }
+               }
+
+               static public Color Plum
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 221, 160, 221, "Plum", KnownColor.Plum);
+                       }
+               }
+
+               static public Color PowderBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 176, 224, 230, "PowderBlue", KnownColor.PowderBlue);
+                       }
+               }
+
+               static public Color Purple
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 128, 0, 128, "Purple", KnownColor.Purple);
+                       }
+               }
+
+               static public Color Red
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 0, 0, "Red", KnownColor.Red);
+                       }
+               }
+
+               static public Color RosyBrown
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 188, 143, 143, "RosyBrown", KnownColor.RosyBrown);
+                       }
+               }
+
+               static public Color RoyalBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 65, 105, 225, "RoyalBlue", KnownColor.RoyalBlue);
+                       }
+               }
+
+               static public Color SaddleBrown
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 139, 69, 19, "SaddleBrown", KnownColor.SaddleBrown);
+                       }
+               }
+
+               static public Color Salmon
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 250, 128, 114, "Salmon", KnownColor.Salmon);
+                       }
+               }
+
+               static public Color SandyBrown
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 244, 164, 96, "SandyBrown", KnownColor.SandyBrown);
+                       }
+               }
+
+               static public Color SeaGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 46, 139, 87, "SeaGreen", KnownColor.SeaGreen);
+                       }
+               }
+
+               static public Color SeaShell
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 245, 238, "SeaShell", KnownColor.SeaShell);
+                       }
+               }
+
+               static public Color Sienna
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 160, 82, 45, "Sienna", KnownColor.Sienna);
+                       }
+               }
+
+               static public Color Silver
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 192, 192, 192, "Silver", KnownColor.Silver);
+                       }
+               }
+
+               static public Color SkyBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 135, 206, 235, "SkyBlue", KnownColor.SkyBlue);
+                       }
+               }
+
+               static public Color SlateBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 106, 90, 205, "SlateBlue", KnownColor.SlateBlue);
+                       }
+               }
+
+               static public Color SlateGray
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 112, 128, 144, "SlateGray", KnownColor.SlateGray);
+                       }
+               }
+
+               static public Color Snow
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 250, 250, "Snow", KnownColor.Snow);
+                       }
+               }
+
+               static public Color SpringGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 255, 127, "SpringGreen", KnownColor.SpringGreen);
+                       }
+               }
+
+               static public Color SteelBlue
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 70, 130, 180, "SteelBlue", KnownColor.SteelBlue);
+                       }
+               }
+
+               static public Color Tan
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 210, 180, 140, "Tan", KnownColor.Tan);
+                       }
+               }
+
+               static public Color Teal
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 0, 128, 128, "Teal", KnownColor.Teal);
+                       }
+               }
+
+               static public Color Thistle
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 216, 191, 216, "Thistle", KnownColor.Thistle);
+                       }
+               }
+
+               static public Color Tomato
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 99, 71, "Tomato", KnownColor.Tomato);
+                       }
+               }
+
+               static public Color Turquoise
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 64, 224, 208, "Turquoise", KnownColor.Turquoise);
+                       }
+               }
+
+               static public Color Violet
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 238, 130, 238, "Violet", KnownColor.Violet);
+                       }
+               }
+
+               static public Color Wheat
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 245, 222, 179, "Wheat", KnownColor.Wheat);
+                       }
+               }
+
+               static public Color White
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 255, 255, "White", KnownColor.White);
+                       }
+               }
+
+               static public Color WhiteSmoke
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 245, 245, 245, "WhiteSmoke", KnownColor.WhiteSmoke);
+                       }
+               }
+
+               static public Color Yellow
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 255, 255, 0, "Yellow", KnownColor.Yellow);
+                       }
+               }
+
+               static public Color YellowGreen
+               {       
+                       get {
+                               return Color.FromArgbNamed (255, 154, 205, 50, "YellowGreen", KnownColor.YellowGreen);
+                       }
+               }
+       }
+}