2007-04-09 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Mon, 9 Apr 2007 21:10:38 +0000 (21:10 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Mon, 9 Apr 2007 21:10:38 +0000 (21:10 -0000)
* Color.cs: Remove hashtables and locks. All color properties are read
from KnownColors. Remove extra & 0xFF (typecast to byte is enough).
Keep track of the Name property once calculated. When possible (most
likely case) don't create the names (strings) in Equals, == and !=
* ColorTranslator.cs: Use the new KnownColors instead of the separate
NamedColors and SystemColors.
* ColorConverter.cs: Use the new KnownColors instead of the separate
NamedColors and SystemColors.
* gdipFunctions.cs: Moved GetSysColor p/invoke signature here as this
class is marked by [SuppressUnmanagedCodeSecurity].
* gdipStructs.cs: Moved Windows-specific GetSysColorIndex enum here.
* KnownColors.cs: New. Single source for all colors.
* SystemColors.cs: Vastly simplified. All color properties are read
from KnownColors.

svn path=/trunk/mcs/; revision=75549

mcs/class/System.Drawing/System.Drawing/ChangeLog
mcs/class/System.Drawing/System.Drawing/Color.cs
mcs/class/System.Drawing/System.Drawing/ColorConverter.cs
mcs/class/System.Drawing/System.Drawing/ColorTranslator.cs
mcs/class/System.Drawing/System.Drawing/KnownColors.cs [new file with mode: 0644]
mcs/class/System.Drawing/System.Drawing/SystemColors.cs
mcs/class/System.Drawing/System.Drawing/gdipFunctions.cs
mcs/class/System.Drawing/System.Drawing/gdipStructs.cs

index 31d01bf9cc9263bd00b50cfa96613fedc88ededd..b0d19eae8ae9160b372bae16a27b281d811fc5b2 100644 (file)
@@ -1,3 +1,20 @@
+2007-04-09  Sebastien Pouliot  <sebastien@ximian.com> 
+
+       * Color.cs: Remove hashtables and locks. All color properties are read
+       from KnownColors. Remove extra & 0xFF (typecast to byte is enough).
+       Keep track of the Name property once calculated. When possible (most
+       likely case) don't create the names (strings) in Equals, == and !=
+       * ColorTranslator.cs: Use the new KnownColors instead of the separate
+       NamedColors and SystemColors.
+       * ColorConverter.cs: Use the new KnownColors instead of the separate
+       NamedColors and SystemColors.
+       * gdipFunctions.cs: Moved GetSysColor p/invoke signature here as this
+       class is marked by [SuppressUnmanagedCodeSecurity].
+       * gdipStructs.cs: Moved Windows-specific GetSysColorIndex enum here.
+       * KnownColors.cs: New. Single source for all colors.
+       * SystemColors.cs: Vastly simplified. All color properties are read
+       from KnownColors.
+
 2007-04-05  Sebastien Pouliot  <sebastien@ximian.com> 
 
        * gdipFunctions.cs: Remove unused (and not part of GDI+) GdipGetHfont
index 509efb3f5f2c8925ed26afde423c017237df7d4d..417cdf0c154ce507a0782e854f6ba30305d38668 100644 (file)
@@ -6,11 +6,12 @@
 //     Ben Houston  (ben@exocortex.org)
 //     Gonzalo Paniagua (gonzalo@ximian.com)
 //     Juraj Skripsky (juraj@hotfeet.ch)
+//     Sebastien Pouliot  <sebastien@ximian.com>
 //
 // (C) 2002 Dennis Hayes
 // (c) 2002 Ximian, Inc. (http://www.ximiam.com)
 // (C) 2005 HotFeet GmbH (http://www.hotfeet.ch)
-// Copyright (C) 2004,2006 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004,2006-2007 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
@@ -33,9 +34,8 @@
 //
 
 using System.Collections;
-using System.Runtime.InteropServices;
 using System.ComponentModel;
-using System.Reflection;
+using System.Runtime.InteropServices;
 
 namespace System.Drawing 
 {
@@ -47,31 +47,26 @@ namespace System.Drawing
        [Editor ("System.Drawing.Design.ColorEditor, " + Consts.AssemblySystem_Drawing_Design, typeof (System.Drawing.Design.UITypeEditor))]
 #endif
        [Serializable]
-       public struct Color
-       {
-               private static Hashtable namedColors;
-               private static Hashtable systemColors;
-               static Color [] knownColors;
-               
+       public struct Color {
+
                // Private transparency (A) and R,G,B fields.
-               private long value;
-               private static string creatingColorNames = "creatingColorNames";
+               internal long value;
 
                // The specs also indicate that all three of these properties 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.
                [Flags]
-               enum ColorType : short {
+               internal enum ColorType : short {
                        Empty=0,
                        Known=1,
                        ARGB=2,
                        Named=4,
                        System=8
                }
-               private short state;
-               private short knownColor;
 
-               private string name;
+               internal short state;
+               internal short knownColor;
+               internal string name;
 
 #if TARGET_JVM
                internal java.awt.Color NativeObject {
@@ -84,13 +79,11 @@ namespace System.Drawing
                public string Name {
                        get{
                                if (name == null) {
-                                       if (IsNamedColor) { // Can happen with stuff deserialized from MS
-                                               FillColorNames ();
-                                               object o = knownColors [knownColor];
-                                               if (o != null)
-                                                       return ((Color) o).name;
-                                       }
-                                       return String.Format ("{0:x}", ToArgb ());
+                                       // Can happen with stuff deserialized from MS
+                                       if (IsNamedColor)
+                                               name = KnownColors.FromKnownColor ((KnownColor)knownColor).Name;
+                                       else
+                                               name = String.Format ("{0:x}", ToArgb ());
                                }
                                return name;
                        }
@@ -129,7 +122,7 @@ namespace System.Drawing
                        return color;
                }
 
-               private static Color FromArgbNamed (int alpha, int red, int green, int blue, string name, KnownColor knownColor)
+               internal static Color FromArgbNamed (int alpha, int red, int green, int blue, string name, KnownColor knownColor)
                {
                        Color color = FromArgb (alpha, red, green, blue);
                        color.state = (short) (ColorType.Known|ColorType.Named);
@@ -165,107 +158,15 @@ namespace System.Drawing
 
                public static Color FromKnownColor (KnownColor c)
                {
-                       if (knownColors == null)
-                               FillColorNames ();
-                       
-#if NET_2_0
-                       if (c < KnownColor.ActiveBorder || c > KnownColor.MenuHighlight) {
-#else
-                       if (c < KnownColor.ActiveBorder || c > KnownColor.YellowGreen) {
-#endif                 
-                               // This is what it returns!
-                               Color d = FromArgb (0, 0, 0, 0);
-                               d.name = c.ToString ();
-                               d.state |= (short) ColorType.Named;
-                               d.knownColor = (short) 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 ()
-               {
-                       lock (creatingColorNames) {
-                               if (systemColors != null)
-                                       return;
-                               
-#if NET_2_0
-                               knownColors = new Color [(int)KnownColor.MenuHighlight + 1];                    
-#else
-                               knownColors = new Color [(int)KnownColor.YellowGreen + 1];                      
-#endif                         
-                               Hashtable colorHash = GetColorHashtableFromType (typeof (Color));
-                               namedColors = colorHash;
-
-                               colorHash = GetColorHashtableFromType (typeof (SystemColors));
-                               systemColors = colorHash;
-                       }
+                       return KnownColors.FromKnownColor (c);
                }
 
-               internal static Color UpdateKnownColor (int alpha, int red, int green, int blue, string name, KnownColor known_color) {
-                       FillColorNames ();
-                       Color new_color = Color.FromArgbSystem(alpha, red, green, blue, name, known_color);
-                       knownColors[(int)known_color] = new_color;
-                       return new_color;
-               }
-               
                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.name = colorName;
-                                       d.state |= (short) ColorType.Named;
-                                       c = d;
-                               }
-                       }
-
-                       return (Color) c;
-               }
-
-               internal static Hashtable NamedColors
-               {
-                       get {
-                               FillColorNames ();
-                               return namedColors;
-                       }
+                       return ColorConverter.StaticConvertFromString (null, colorName, null);
                }
 
-               internal static Hashtable SystemColors
-               {
-                       get {
-                               FillColorNames ();
-                               return systemColors;
-                       }
-               }
-                       
+       
                // -----------------------
                // Public Shared Members
                // -----------------------
@@ -298,10 +199,15 @@ namespace System.Drawing
                                return false;
                        if (colorA.IsSystemColor != colorB.IsSystemColor)
                                return false;
-                       if (colorA.Name != colorB.Name)
-                               return false;
                        if (colorA.IsEmpty != colorB.IsEmpty)
                                return false;
+                       if (colorA.IsNamedColor) {
+                               if (!colorB.IsNamedColor)
+                                       return false;
+                               // both are named so we need to compare them (otherwise we don't as it kills performance)
+                               if (colorA.Name != colorB.Name)
+                                       return false;
+                       }
                        return true;
                }
                
@@ -417,13 +323,9 @@ namespace System.Drawing
                                // Optimization for known colors that were deserialized
                                // from an MS serialized stream.  
                                if (value == 0 && IsKnownColor) {
-                                       FillColorNames ();
-                                       object o = knownColors [knownColor];
-                                       if (o != null) {
-                                               value = ((Color) o).ToArgb ();
-                                       }
+                                       value = KnownColors.FromKnownColor ((KnownColor)knownColor).ToArgb ();
                                }
-                               return (byte) ((value >> 24 & 0x0ff));
+                               return (byte) (value >> 24);
                        }
                }
 
@@ -441,13 +343,9 @@ namespace System.Drawing
                                // Optimization for known colors that were deserialized
                                // from an MS serialized stream.  
                                if (value == 0 && IsKnownColor) {
-                                       FillColorNames ();
-                                       object o = knownColors [knownColor];
-                                       if (o != null) {
-                                               value = ((Color) o).ToArgb ();
-                                       }
+                                       value = KnownColors.FromKnownColor ((KnownColor)knownColor).ToArgb ();
                                }
-                               return (byte) ((value >> 16 & 0x0ff));
+                               return (byte) (value >> 16);
                        }
                }
 
@@ -465,13 +363,9 @@ namespace System.Drawing
                                // Optimization for known colors that were deserialized
                                // from an MS serialized stream.  
                                if (value == 0 && IsKnownColor) {
-                                       FillColorNames ();
-                                       object o = knownColors [knownColor];
-                                       if (o != null) {
-                                               value = ((Color) o).ToArgb ();
-                                       }
+                                       value = KnownColors.FromKnownColor ((KnownColor)knownColor).ToArgb ();
                                }
-                               return (byte) ((value >> 8 & 0x0ff));
+                               return (byte) (value >> 8);
                        }
                }
 
@@ -489,13 +383,9 @@ namespace System.Drawing
                                // Optimization for known colors that were deserialized
                                // from an MS serialized stream.  
                                if (value == 0 && IsKnownColor) {
-                                       FillColorNames ();
-                                       object o = knownColors [knownColor];
-                                       if (o != null) {
-                                               value = ((Color) o).ToArgb ();
-                                       }
+                                       value = KnownColors.FromKnownColor ((KnownColor)knownColor).ToArgb ();
                                }
-                               return (byte) (value & 0x0ff);
+                               return (byte) value;
                        }
                }
 
@@ -589,1019 +479,569 @@ namespace System.Drawing
                        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 Transparent {
+                       get { return KnownColors.FromKnownColor (KnownColor.Transparent); }
                }
 
-               static public Color AliceBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 240, 248, 255, "AliceBlue", KnownColor.AliceBlue);
-                       }
+               static public Color AliceBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.AliceBlue); }
                }
 
-               static public Color AntiqueWhite
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 250, 235, 215, "AntiqueWhite", KnownColor.AntiqueWhite);
-                       }
+               static public Color AntiqueWhite {
+                       get { return KnownColors.FromKnownColor (KnownColor.AntiqueWhite); }
                }
 
-               static public Color Aqua
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 255, 255, "Aqua", KnownColor.Aqua);
-                       }
+               static public Color Aqua {
+                       get { return KnownColors.FromKnownColor (KnownColor.Aqua); }
                }
 
-               static public Color Aquamarine
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 127, 255, 212, "Aquamarine", KnownColor.Aquamarine);
-                       }
+               static public Color Aquamarine {
+                       get { return KnownColors.FromKnownColor (KnownColor.Aquamarine); }
                }
 
-               static public Color Azure
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 240, 255, 255, "Azure", KnownColor.Azure);
-                       }
+               static public Color Azure {
+                       get { return KnownColors.FromKnownColor (KnownColor.Azure); }
                }
 
-               static public Color Beige
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 245, 245, 220, "Beige", KnownColor.Beige);
-                       }
+               static public Color Beige {
+                       get { return KnownColors.FromKnownColor (KnownColor.Beige); }
                }
 
-               static public Color Bisque
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 228, 196, "Bisque", KnownColor.Bisque);
-                       }
+               static public Color Bisque {
+                       get { return KnownColors.FromKnownColor (KnownColor.Bisque); }
                }
 
-               static public Color Black
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 0, 0, "Black", KnownColor.Black);
-                       }
+               static public Color Black {
+                       get { return KnownColors.FromKnownColor (KnownColor.Black); }
                }
 
-               static public Color BlanchedAlmond
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 235, 205, "BlanchedAlmond", KnownColor.BlanchedAlmond);
-                       }
+               static public Color BlanchedAlmond {
+                       get { return KnownColors.FromKnownColor (KnownColor.BlanchedAlmond); }
                }
 
-               static public Color Blue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 0, 255, "Blue", KnownColor.Blue);
-                       }
+               static public Color Blue {
+                       get { return KnownColors.FromKnownColor (KnownColor.Blue); }
                }
 
-               static public Color BlueViolet
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 138, 43, 226, "BlueViolet", KnownColor.BlueViolet);
-                       }
+               static public Color BlueViolet {
+                       get { return KnownColors.FromKnownColor (KnownColor.BlueViolet); }
                }
 
-               static public Color Brown
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 165, 42, 42, "Brown", KnownColor.Brown);
-                       }
+               static public Color Brown {
+                       get { return KnownColors.FromKnownColor (KnownColor.Brown); }
                }
 
-               static public Color BurlyWood
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 222, 184, 135, "BurlyWood", KnownColor.BurlyWood);
-                       }
+               static public Color BurlyWood {
+                       get { return KnownColors.FromKnownColor (KnownColor.BurlyWood); }
                }
 
-               static public Color CadetBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 95, 158, 160, "CadetBlue", KnownColor.CadetBlue);
-                       }
+               static public Color CadetBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.CadetBlue); }
                }
 
-               static public Color Chartreuse
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 127, 255, 0, "Chartreuse", KnownColor.Chartreuse);
-                       }
+               static public Color Chartreuse {
+                       get { return KnownColors.FromKnownColor (KnownColor.Chartreuse); }
                }
 
-               static public Color Chocolate
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 210, 105, 30, "Chocolate", KnownColor.Chocolate);
-                       }
+               static public Color Chocolate {
+                       get { return KnownColors.FromKnownColor (KnownColor.Chocolate); }
                }
 
-               static public Color Coral
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 127, 80, "Coral", KnownColor.Coral);
-                       }
+               static public Color Coral {
+                       get { return KnownColors.FromKnownColor (KnownColor.Coral); }
                }
 
-               static public Color CornflowerBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 100, 149, 237, "CornflowerBlue", KnownColor.CornflowerBlue);
-                       }
+               static public Color CornflowerBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.CornflowerBlue); }
                }
 
-               static public Color Cornsilk
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 248, 220, "Cornsilk", KnownColor.Cornsilk);
-                       }
+               static public Color Cornsilk {
+                       get { return KnownColors.FromKnownColor (KnownColor.Cornsilk); }
                }
 
-               static public Color Crimson
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 220, 20, 60, "Crimson", KnownColor.Crimson);
-                       }
+               static public Color Crimson {
+                       get { return KnownColors.FromKnownColor (KnownColor.Crimson); }
                }
 
-               static public Color Cyan
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 255, 255, "Cyan", KnownColor.Cyan);
-                       }
+               static public Color Cyan {
+                       get { return KnownColors.FromKnownColor (KnownColor.Cyan); }
                }
 
-               static public Color DarkBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 0, 139, "DarkBlue", KnownColor.DarkBlue);
-                       }
+               static public Color DarkBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkBlue); }
                }
 
-               static public Color DarkCyan
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 139, 139, "DarkCyan", KnownColor.DarkCyan);
-                       }
+               static public Color DarkCyan {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkCyan); }
                }
 
-               static public Color DarkGoldenrod
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 184, 134, 11, "DarkGoldenrod", KnownColor.DarkGoldenrod);
-                       }
+               static public Color DarkGoldenrod {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkGoldenrod); }
                }
 
-               static public Color DarkGray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 169, 169, 169, "DarkGray", KnownColor.DarkGray);
-                       }
+               static public Color DarkGray {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkGray); }
                }
 
-               static public Color DarkGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 100, 0, "DarkGreen", KnownColor.DarkGreen);
-                       }
+               static public Color DarkGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkGreen); }
                }
 
-               static public Color DarkKhaki
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 189, 183, 107, "DarkKhaki", KnownColor.DarkKhaki);
-                       }
+               static public Color DarkKhaki {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkKhaki); }
                }
 
-               static public Color DarkMagenta
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 139, 0, 139, "DarkMagenta", KnownColor.DarkMagenta);
-                       }
+               static public Color DarkMagenta {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkMagenta); }
                }
 
-               static public Color DarkOliveGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 85, 107, 47, "DarkOliveGreen", KnownColor.DarkOliveGreen);
-                       }
+               static public Color DarkOliveGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkOliveGreen); }
                }
 
-               static public Color DarkOrange
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 140, 0, "DarkOrange", KnownColor.DarkOrange);
-                       }
+               static public Color DarkOrange {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkOrange); }
                }
 
-               static public Color DarkOrchid
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 153, 50, 204, "DarkOrchid", KnownColor.DarkOrchid);
-                       }
+               static public Color DarkOrchid {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkOrchid); }
                }
 
-               static public Color DarkRed
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 139, 0, 0, "DarkRed", KnownColor.DarkRed);
-                       }
+               static public Color DarkRed {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkRed); }
                }
 
-               static public Color DarkSalmon
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 233, 150, 122, "DarkSalmon", KnownColor.DarkSalmon);
-                       }
+               static public Color DarkSalmon {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkSalmon); }
                }
 
-               static public Color DarkSeaGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 143, 188, 139, "DarkSeaGreen", KnownColor.DarkSeaGreen);
-                       }
+               static public Color DarkSeaGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkSeaGreen); }
                }
 
-               static public Color DarkSlateBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 72, 61, 139, "DarkSlateBlue", KnownColor.DarkSlateBlue);
-                       }
+               static public Color DarkSlateBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkSlateBlue); }
                }
 
-               static public Color DarkSlateGray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 47, 79, 79, "DarkSlateGray", KnownColor.DarkSlateGray);
-                       }
+               static public Color DarkSlateGray {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkSlateGray); }
                }
 
-               static public Color DarkTurquoise
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 206, 209, "DarkTurquoise", KnownColor.DarkTurquoise);
-                       }
+               static public Color DarkTurquoise {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkTurquoise); }
                }
 
-               static public Color DarkViolet
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 148, 0, 211, "DarkViolet", KnownColor.DarkViolet);
-                       }
+               static public Color DarkViolet {
+                       get { return KnownColors.FromKnownColor (KnownColor.DarkViolet); }
                }
 
-               static public Color DeepPink
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 20, 147, "DeepPink", KnownColor.DeepPink);
-                       }
+               static public Color DeepPink {
+                       get { return KnownColors.FromKnownColor (KnownColor.DeepPink); }
                }
 
-               static public Color DeepSkyBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 191, 255, "DeepSkyBlue", KnownColor.DeepSkyBlue);
-                       }
+               static public Color DeepSkyBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.DeepSkyBlue); }
                }
 
-               static public Color DimGray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 105, 105, 105, "DimGray", KnownColor.DimGray);
-                       }
+               static public Color DimGray {
+                       get { return KnownColors.FromKnownColor (KnownColor.DimGray); }
                }
 
-               static public Color DodgerBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 30, 144, 255, "DodgerBlue", KnownColor.DodgerBlue);
-                       }
+               static public Color DodgerBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.DodgerBlue); }
                }
 
-               static public Color Firebrick
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 178, 34, 34, "Firebrick", KnownColor.Firebrick);
-                       }
+               static public Color Firebrick {
+                       get { return KnownColors.FromKnownColor (KnownColor.Firebrick); }
                }
 
-               static public Color FloralWhite
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 250, 240, "FloralWhite", KnownColor.FloralWhite);
-                       }
+               static public Color FloralWhite {
+                       get { return KnownColors.FromKnownColor (KnownColor.FloralWhite); }
                }
 
-               static public Color ForestGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 34, 139, 34, "ForestGreen", KnownColor.ForestGreen);
-                       }
+               static public Color ForestGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.ForestGreen); }
                }
 
-               static public Color Fuchsia
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 0, 255, "Fuchsia", KnownColor.Fuchsia);
-                       }
+               static public Color Fuchsia {
+                       get { return KnownColors.FromKnownColor (KnownColor.Fuchsia); }
                }
 
-               static public Color Gainsboro
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 220, 220, 220, "Gainsboro", KnownColor.Gainsboro);
-                       }
+               static public Color Gainsboro {
+                       get { return KnownColors.FromKnownColor (KnownColor.Gainsboro); }
                }
 
-               static public Color GhostWhite
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 248, 248, 255, "GhostWhite", KnownColor.GhostWhite);
-                       }
+               static public Color GhostWhite {
+                       get { return KnownColors.FromKnownColor (KnownColor.GhostWhite); }
                }
 
-               static public Color Gold
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 215, 0, "Gold", KnownColor.Gold);
-                       }
+               static public Color Gold {
+                       get { return KnownColors.FromKnownColor (KnownColor.Gold); }
                }
 
-               static public Color Goldenrod
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 218, 165, 32, "Goldenrod", KnownColor.Goldenrod);
-                       }
+               static public Color Goldenrod {
+                       get { return KnownColors.FromKnownColor (KnownColor.Goldenrod); }
                }
 
-               static public Color Gray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 128, 128, 128, "Gray", KnownColor.Gray);
-                       }
+               static public Color Gray {
+                       get { return KnownColors.FromKnownColor (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 Green {
+                       get { return KnownColors.FromKnownColor (KnownColor.Green); }
                }
 
-               static public Color GreenYellow
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 173, 255, 47, "GreenYellow", KnownColor.GreenYellow);
-                       }
+               static public Color GreenYellow {
+                       get { return KnownColors.FromKnownColor (KnownColor.GreenYellow); }
                }
 
-               static public Color Honeydew
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 240, 255, 240, "Honeydew", KnownColor.Honeydew);
-                       }
+               static public Color Honeydew {
+                       get { return KnownColors.FromKnownColor (KnownColor.Honeydew); }
                }
 
-               static public Color HotPink
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 105, 180, "HotPink", KnownColor.HotPink);
-                       }
+               static public Color HotPink {
+                       get { return KnownColors.FromKnownColor (KnownColor.HotPink); }
                }
 
-               static public Color IndianRed
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 205, 92, 92, "IndianRed", KnownColor.IndianRed);
-                       }
+               static public Color IndianRed {
+                       get { return KnownColors.FromKnownColor (KnownColor.IndianRed); }
                }
 
-               static public Color Indigo
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 75, 0, 130, "Indigo", KnownColor.Indigo);
-                       }
+               static public Color Indigo {
+                       get { return KnownColors.FromKnownColor (KnownColor.Indigo); }
                }
 
-               static public Color Ivory
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 255, 240, "Ivory", KnownColor.Ivory);
-                       }
+               static public Color Ivory {
+                       get { return KnownColors.FromKnownColor (KnownColor.Ivory); }
                }
 
-               static public Color Khaki
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 240, 230, 140, "Khaki", KnownColor.Khaki);
-                       }
+               static public Color Khaki {
+                       get { return KnownColors.FromKnownColor (KnownColor.Khaki); }
                }
 
-               static public Color Lavender
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 230, 230, 250, "Lavender", KnownColor.Lavender);
-                       }
+               static public Color Lavender {
+                       get { return KnownColors.FromKnownColor (KnownColor.Lavender); }
                }
 
-               static public Color LavenderBlush
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 240, 245, "LavenderBlush", KnownColor.LavenderBlush);
-                       }
+               static public Color LavenderBlush {
+                       get { return KnownColors.FromKnownColor (KnownColor.LavenderBlush); }
                }
 
-               static public Color LawnGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 124, 252, 0, "LawnGreen", KnownColor.LawnGreen);
-                       }
+               static public Color LawnGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.LawnGreen); }
                }
 
-               static public Color LemonChiffon
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 250, 205, "LemonChiffon", KnownColor.LemonChiffon);
-                       }
+               static public Color LemonChiffon {
+                       get { return KnownColors.FromKnownColor (KnownColor.LemonChiffon); }
                }
 
-               static public Color LightBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 173, 216, 230, "LightBlue", KnownColor.LightBlue);
-                       }
+               static public Color LightBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightBlue); }
                }
 
-               static public Color LightCoral
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 240, 128, 128, "LightCoral", KnownColor.LightCoral);
-                       }
+               static public Color LightCoral {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightCoral); }
                }
 
-               static public Color LightCyan
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 224, 255, 255, "LightCyan", KnownColor.LightCyan);
-                       }
+               static public Color LightCyan {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightCyan); }
                }
 
-               static public Color LightGoldenrodYellow
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 250, 250, 210, "LightGoldenrodYellow", KnownColor.LightGoldenrodYellow);
-                       }
+               static public Color LightGoldenrodYellow {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightGoldenrodYellow); }
                }
 
-               static public Color LightGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 144, 238, 144, "LightGreen", KnownColor.LightGreen);
-                       }
+               static public Color LightGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightGreen); }
                }
 
-               static public Color LightGray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 211, 211, 211, "LightGray", KnownColor.LightGray);
-                       }
+               static public Color LightGray {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightGray); }
                }
 
-               static public Color LightPink
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 182, 193, "LightPink", KnownColor.LightPink);
-                       }
+               static public Color LightPink {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightPink); }
                }
 
-               static public Color LightSalmon
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 160, 122, "LightSalmon", KnownColor.LightSalmon);
-                       }
+               static public Color LightSalmon {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightSalmon); }
                }
 
-               static public Color LightSeaGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 32, 178, 170, "LightSeaGreen", KnownColor.LightSeaGreen);
-                       }
+               static public Color LightSeaGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightSeaGreen); }
                }
 
-               static public Color LightSkyBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 135, 206, 250, "LightSkyBlue", KnownColor.LightSkyBlue);
-                       }
+               static public Color LightSkyBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightSkyBlue); }
                }
 
-               static public Color LightSlateGray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 119, 136, 153, "LightSlateGray", KnownColor.LightSlateGray);
-                       }
+               static public Color LightSlateGray {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightSlateGray); }
                }
 
-               static public Color LightSteelBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 176, 196, 222, "LightSteelBlue", KnownColor.LightSteelBlue);
-                       }
+               static public Color LightSteelBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightSteelBlue); }
                }
 
-               static public Color LightYellow
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 255, 224, "LightYellow", KnownColor.LightYellow);
-                       }
+               static public Color LightYellow {
+                       get { return KnownColors.FromKnownColor (KnownColor.LightYellow); }
                }
 
-               static public Color Lime
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 255, 0, "Lime", KnownColor.Lime);
-                       }
+               static public Color Lime {
+                       get { return KnownColors.FromKnownColor (KnownColor.Lime); }
                }
 
-               static public Color LimeGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 50, 205, 50, "LimeGreen", KnownColor.LimeGreen);
-                       }
+               static public Color LimeGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.LimeGreen); }
                }
 
-               static public Color Linen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 250, 240, 230, "Linen", KnownColor.Linen);
-                       }
+               static public Color Linen {
+                       get { return KnownColors.FromKnownColor (KnownColor.Linen); }
                }
 
-               static public Color Magenta
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 0, 255, "Magenta", KnownColor.Magenta);
-                       }
+               static public Color Magenta {
+                       get { return KnownColors.FromKnownColor (KnownColor.Magenta); }
                }
 
-               static public Color Maroon
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 128, 0, 0, "Maroon", KnownColor.Maroon);
-                       }
+               static public Color Maroon {
+                       get { return KnownColors.FromKnownColor (KnownColor.Maroon); }
                }
 
-               static public Color MediumAquamarine
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 102, 205, 170, "MediumAquamarine", KnownColor.MediumAquamarine);
-                       }
+               static public Color MediumAquamarine {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumAquamarine); }
                }
 
-               static public Color MediumBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 0, 205, "MediumBlue", KnownColor.MediumBlue);
-                       }
+               static public Color MediumBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumBlue); }
                }
 
-               static public Color MediumOrchid
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 186, 85, 211, "MediumOrchid", KnownColor.MediumOrchid);
-                       }
+               static public Color MediumOrchid {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumOrchid); }
                }
 
-               static public Color MediumPurple
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 147, 112, 219, "MediumPurple", KnownColor.MediumPurple);
-                       }
+               static public Color MediumPurple {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumPurple); }
                }
 
-               static public Color MediumSeaGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 60, 179, 113, "MediumSeaGreen", KnownColor.MediumSeaGreen);
-                       }
+               static public Color MediumSeaGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumSeaGreen); }
                }
 
-               static public Color MediumSlateBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 123, 104, 238, "MediumSlateBlue", KnownColor.MediumSlateBlue);
-                       }
+               static public Color MediumSlateBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumSlateBlue); }
                }
 
-               static public Color MediumSpringGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 250, 154, "MediumSpringGreen", KnownColor.MediumSpringGreen);
-                       }
+               static public Color MediumSpringGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumSpringGreen); }
                }
 
-               static public Color MediumTurquoise
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 72, 209, 204, "MediumTurquoise", KnownColor.MediumTurquoise);
-                       }
+               static public Color MediumTurquoise {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumTurquoise); }
                }
 
-               static public Color MediumVioletRed
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 199, 21, 133, "MediumVioletRed", KnownColor.MediumVioletRed);
-                       }
+               static public Color MediumVioletRed {
+                       get { return KnownColors.FromKnownColor (KnownColor.MediumVioletRed); }
                }
 
-               static public Color MidnightBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 25, 25, 112, "MidnightBlue", KnownColor.MidnightBlue);
-                       }
+               static public Color MidnightBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.MidnightBlue); }
                }
 
-               static public Color MintCream
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 245, 255, 250, "MintCream", KnownColor.MintCream);
-                       }
+               static public Color MintCream {
+                       get { return KnownColors.FromKnownColor (KnownColor.MintCream); }
                }
 
-               static public Color MistyRose
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 228, 225, "MistyRose", KnownColor.MistyRose);
-                       }
+               static public Color MistyRose {
+                       get { return KnownColors.FromKnownColor (KnownColor.MistyRose); }
                }
 
-               static public Color Moccasin
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 228, 181, "Moccasin", KnownColor.Moccasin);
-                       }
+               static public Color Moccasin {
+                       get { return KnownColors.FromKnownColor (KnownColor.Moccasin); }
                }
 
-               static public Color NavajoWhite
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 222, 173, "NavajoWhite", KnownColor.NavajoWhite);
-                       }
+               static public Color NavajoWhite {
+                       get { return KnownColors.FromKnownColor (KnownColor.NavajoWhite); }
                }
 
-               static public Color Navy
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 0, 128, "Navy", KnownColor.Navy);
-                       }
+               static public Color Navy {
+                       get { return KnownColors.FromKnownColor (KnownColor.Navy); }
                }
 
-               static public Color OldLace
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 253, 245, 230, "OldLace", KnownColor.OldLace);
-                       }
+               static public Color OldLace {
+                       get { return KnownColors.FromKnownColor (KnownColor.OldLace); }
                }
 
-               static public Color Olive
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 128, 128, 0, "Olive", KnownColor.Olive);
-                       }
+               static public Color Olive {
+                       get { return KnownColors.FromKnownColor (KnownColor.Olive); }
                }
 
-               static public Color OliveDrab
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 107, 142, 35, "OliveDrab", KnownColor.OliveDrab);
-                       }
+               static public Color OliveDrab {
+                       get { return KnownColors.FromKnownColor (KnownColor.OliveDrab); }
                }
 
-               static public Color Orange
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 165, 0, "Orange", KnownColor.Orange);
-                       }
+               static public Color Orange {
+                       get { return KnownColors.FromKnownColor (KnownColor.Orange); }
                }
 
-               static public Color OrangeRed
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 69, 0, "OrangeRed", KnownColor.OrangeRed);
-                       }
+               static public Color OrangeRed {
+                       get { return KnownColors.FromKnownColor (KnownColor.OrangeRed); }
                }
 
-               static public Color Orchid
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 218, 112, 214, "Orchid", KnownColor.Orchid);
-                       }
+               static public Color Orchid {
+                       get { return KnownColors.FromKnownColor (KnownColor.Orchid); }
                }
 
-               static public Color PaleGoldenrod
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 238, 232, 170, "PaleGoldenrod", KnownColor.PaleGoldenrod);
-                       }
+               static public Color PaleGoldenrod {
+                       get { return KnownColors.FromKnownColor (KnownColor.PaleGoldenrod); }
                }
 
-               static public Color PaleGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 152, 251, 152, "PaleGreen", KnownColor.PaleGreen);
-                       }
+               static public Color PaleGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.PaleGreen); }
                }
 
-               static public Color PaleTurquoise
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 175, 238, 238, "PaleTurquoise", KnownColor.PaleTurquoise);
-                       }
+               static public Color PaleTurquoise {
+                       get { return KnownColors.FromKnownColor (KnownColor.PaleTurquoise); }
                }
 
-               static public Color PaleVioletRed
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 219, 112, 147, "PaleVioletRed", KnownColor.PaleVioletRed);
-                       }
+               static public Color PaleVioletRed {
+                       get { return KnownColors.FromKnownColor (KnownColor.PaleVioletRed); }
                }
 
-               static public Color PapayaWhip
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 239, 213, "PapayaWhip", KnownColor.PapayaWhip);
-                       }
+               static public Color PapayaWhip {
+                       get { return KnownColors.FromKnownColor (KnownColor.PapayaWhip); }
                }
 
-               static public Color PeachPuff
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 218, 185, "PeachPuff", KnownColor.PeachPuff);
-                       }
+               static public Color PeachPuff {
+                       get { return KnownColors.FromKnownColor (KnownColor.PeachPuff); }
                }
 
-               static public Color Peru
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 205, 133, 63, "Peru", KnownColor.Peru);
-                       }
+               static public Color Peru {
+                       get { return KnownColors.FromKnownColor (KnownColor.Peru); }
                }
 
-               static public Color Pink
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 192, 203, "Pink", KnownColor.Pink);
-                       }
+               static public Color Pink {
+                       get { return KnownColors.FromKnownColor (KnownColor.Pink); }
                }
 
-               static public Color Plum
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 221, 160, 221, "Plum", KnownColor.Plum);
-                       }
+               static public Color Plum {
+                       get { return KnownColors.FromKnownColor (KnownColor.Plum); }
                }
 
-               static public Color PowderBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 176, 224, 230, "PowderBlue", KnownColor.PowderBlue);
-                       }
+               static public Color PowderBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.PowderBlue); }
                }
 
-               static public Color Purple
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 128, 0, 128, "Purple", KnownColor.Purple);
-                       }
+               static public Color Purple {
+                       get { return KnownColors.FromKnownColor (KnownColor.Purple); }
                }
 
-               static public Color Red
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 0, 0, "Red", KnownColor.Red);
-                       }
+               static public Color Red {
+                       get { return KnownColors.FromKnownColor (KnownColor.Red); }
                }
 
-               static public Color RosyBrown
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 188, 143, 143, "RosyBrown", KnownColor.RosyBrown);
-                       }
+               static public Color RosyBrown {
+                       get { return KnownColors.FromKnownColor (KnownColor.RosyBrown); }
                }
 
-               static public Color RoyalBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 65, 105, 225, "RoyalBlue", KnownColor.RoyalBlue);
-                       }
+               static public Color RoyalBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.RoyalBlue); }
                }
 
-               static public Color SaddleBrown
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 139, 69, 19, "SaddleBrown", KnownColor.SaddleBrown);
-                       }
+               static public Color SaddleBrown {
+                       get { return KnownColors.FromKnownColor (KnownColor.SaddleBrown); }
                }
 
-               static public Color Salmon
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 250, 128, 114, "Salmon", KnownColor.Salmon);
-                       }
+               static public Color Salmon {
+                       get { return KnownColors.FromKnownColor (KnownColor.Salmon); }
                }
 
-               static public Color SandyBrown
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 244, 164, 96, "SandyBrown", KnownColor.SandyBrown);
-                       }
+               static public Color SandyBrown {
+                       get { return KnownColors.FromKnownColor (KnownColor.SandyBrown); }
                }
 
-               static public Color SeaGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 46, 139, 87, "SeaGreen", KnownColor.SeaGreen);
-                       }
+               static public Color SeaGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.SeaGreen); }
                }
 
-               static public Color SeaShell
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 245, 238, "SeaShell", KnownColor.SeaShell);
-                       }
+               static public Color SeaShell {
+                       get { return KnownColors.FromKnownColor (KnownColor.SeaShell); }
                }
 
-               static public Color Sienna
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 160, 82, 45, "Sienna", KnownColor.Sienna);
-                       }
+               static public Color Sienna {
+                       get { return KnownColors.FromKnownColor (KnownColor.Sienna); }
                }
 
-               static public Color Silver
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 192, 192, 192, "Silver", KnownColor.Silver);
-                       }
+               static public Color Silver {
+                       get { return KnownColors.FromKnownColor (KnownColor.Silver); }
                }
 
-               static public Color SkyBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 135, 206, 235, "SkyBlue", KnownColor.SkyBlue);
-                       }
+               static public Color SkyBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.SkyBlue); }
                }
 
-               static public Color SlateBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 106, 90, 205, "SlateBlue", KnownColor.SlateBlue);
-                       }
+               static public Color SlateBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.SlateBlue); }
                }
 
-               static public Color SlateGray
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 112, 128, 144, "SlateGray", KnownColor.SlateGray);
-                       }
+               static public Color SlateGray {
+                       get { return KnownColors.FromKnownColor (KnownColor.SlateGray); }
                }
 
-               static public Color Snow
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 250, 250, "Snow", KnownColor.Snow);
-                       }
+               static public Color Snow {
+                       get { return KnownColors.FromKnownColor (KnownColor.Snow); }
                }
 
-               static public Color SpringGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 255, 127, "SpringGreen", KnownColor.SpringGreen);
-                       }
+               static public Color SpringGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.SpringGreen); }
                }
 
-               static public Color SteelBlue
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 70, 130, 180, "SteelBlue", KnownColor.SteelBlue);
-                       }
+               static public Color SteelBlue {
+                       get { return KnownColors.FromKnownColor (KnownColor.SteelBlue); }
                }
 
-               static public Color Tan
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 210, 180, 140, "Tan", KnownColor.Tan);
-                       }
+               static public Color Tan {
+                       get { return KnownColors.FromKnownColor (KnownColor.Tan); }
                }
 
-               static public Color Teal
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 0, 128, 128, "Teal", KnownColor.Teal);
-                       }
+               static public Color Teal {
+                       get { return KnownColors.FromKnownColor (KnownColor.Teal); }
                }
 
-               static public Color Thistle
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 216, 191, 216, "Thistle", KnownColor.Thistle);
-                       }
+               static public Color Thistle {
+                       get { return KnownColors.FromKnownColor (KnownColor.Thistle); }
                }
 
-               static public Color Tomato
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 99, 71, "Tomato", KnownColor.Tomato);
-                       }
+               static public Color Tomato {
+                       get { return KnownColors.FromKnownColor (KnownColor.Tomato); }
                }
 
-               static public Color Turquoise
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 64, 224, 208, "Turquoise", KnownColor.Turquoise);
-                       }
+               static public Color Turquoise {
+                       get { return KnownColors.FromKnownColor (KnownColor.Turquoise); }
                }
 
-               static public Color Violet
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 238, 130, 238, "Violet", KnownColor.Violet);
-                       }
+               static public Color Violet {
+                       get { return KnownColors.FromKnownColor (KnownColor.Violet); }
                }
 
-               static public Color Wheat
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 245, 222, 179, "Wheat", KnownColor.Wheat);
-                       }
+               static public Color Wheat {
+                       get { return KnownColors.FromKnownColor (KnownColor.Wheat); }
                }
 
-               static public Color White
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 255, 255, "White", KnownColor.White);
-                       }
+               static public Color White {
+                       get { return KnownColors.FromKnownColor (KnownColor.White); }
                }
 
-               static public Color WhiteSmoke
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 245, 245, 245, "WhiteSmoke", KnownColor.WhiteSmoke);
-                       }
+               static public Color WhiteSmoke {
+                       get { return KnownColors.FromKnownColor (KnownColor.WhiteSmoke); }
                }
 
-               static public Color Yellow
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 255, 255, 0, "Yellow", KnownColor.Yellow);
-                       }
+               static public Color Yellow {
+                       get { return KnownColors.FromKnownColor (KnownColor.Yellow); }
                }
 
-               static public Color YellowGreen
-               {       
-                       get {
-                               return Color.FromArgbNamed (255, 154, 205, 50, "YellowGreen", KnownColor.YellowGreen);
-                       }
+               static public Color YellowGreen {
+                       get { return KnownColors.FromKnownColor (KnownColor.YellowGreen); }
                }
        }
 }
index 950fe73b7ac39d34abc7da5a0a992116d53eb5a3..78f186edfc57d98ed8da21eff786efcfa62f8904 100644 (file)
@@ -60,30 +60,32 @@ namespace System.Drawing
                        return base.CanConvertTo (context, destinationType);
                }
 
-               public override object ConvertFrom (ITypeDescriptorContext context,
-                                                   CultureInfo culture,
-                                                   object value)
+               internal static Color StaticConvertFromString (ITypeDescriptorContext context, string s, CultureInfo culture)
                {
-                       string s = value as string;
-                       if (s == null)
-                               return base.ConvertFrom (context, culture, value);
+                       if (culture == null)
+                               culture = CultureInfo.InvariantCulture;
 
                        s = s.Trim ();
 
-                       if (s.Length == 0) {
+                       if (s.Length == 0)
                                return Color.Empty;
-                       }
-
-                       object named = Color.NamedColors [s];
-                       if (named != null)
-                               return (Color) named;
 
-                       named = Color.SystemColors [s];
-                       if (named != null)
-                               return (Color) named;
+                       // Try to process both NamedColor and SystemColors from the KnownColor enumeration
+                       if (Char.IsLetter (s [0])) {
+                               KnownColor kc;
+                               try {
+                                       kc = (KnownColor) Enum.Parse (typeof (KnownColor), s, true);
+                               }
+                               catch (Exception e) {
+                                       // whatever happens MS throws an basic Exception
+                                       string msg = Locale.GetText ("Invalid color name '{0}'.", s);
+                                       throw new Exception (msg, new FormatException (msg, e));
+                               }
+                               return KnownColors.FromKnownColor (kc);
+                       }
 
                        String numSeparator = culture.TextInfo.ListSeparator;
-                       object result = null;
+                       Color result = Color.Empty;
 
                        if (s.IndexOf (numSeparator) == -1) {
                                bool sharp = (s[0] == '#');
@@ -118,7 +120,7 @@ namespace System.Drawing
                                }
                        }
 
-                       if (result == null) {
+                       if (result.IsEmpty) {
                                Int32Converter converter = new Int32Converter ();
                                String [] components = s.Split (numSeparator.ToCharArray ());
 
@@ -147,16 +149,11 @@ namespace System.Drawing
                                }
                        } 
 
-                       if (result != null) {
+                       if (!result.IsEmpty) {
                                Color resultColor = (Color) result;
 
                                // Look for a named or system color with those values
-                               foreach (Color c in Color.NamedColors.Values) {
-                                       if (c == resultColor)
-                                               return c;
-                               }
-
-                               foreach (Color c in Color.SystemColors.Values) {
+                               foreach (Color c in KnownColors.Values) {
                                        if (c == resultColor)
                                                return c;
                                }
@@ -165,6 +162,18 @@ namespace System.Drawing
                        return result;
                }
 
+
+               public override object ConvertFrom (ITypeDescriptorContext context,
+                                                   CultureInfo culture,
+                                                   object value)
+               {
+                       string s = value as string;
+                       if (s == null)
+                               return base.ConvertFrom (context, culture, value);
+
+                       return StaticConvertFromString (context, s, culture);
+               }
+
                public override object ConvertTo (ITypeDescriptorContext context,
                                                  CultureInfo culture,
                                                  object value,
@@ -177,11 +186,7 @@ namespace System.Drawing
                                        return string.Empty;
                                }
 
-                               if (color.IsKnownColor) {
-                                       return color.Name;
-                               }
-
-                               if (color.IsNamedColor)
+                               if (color.IsKnownColor || color.IsNamedColor)
                                        return color.Name;
 
                                String numSeparator = culture.TextInfo.ListSeparator;
@@ -222,12 +227,10 @@ namespace System.Drawing
                        lock (creatingCached) {
                                if (cached != null)
                                        return cached;
-                       
-                               ICollection named = (ICollection) Color.NamedColors.Values;
-                               ICollection system = (ICollection) Color.SystemColors.Values;
-                               Array colors = Array.CreateInstance (typeof (Color), named.Count + system.Count);
-                               named.CopyTo (colors, 0);
-                               system.CopyTo (colors, named.Count);
+
+                               // copy all colors except the first empty slot
+                               Array colors = Array.CreateInstance (typeof (Color), KnownColors.Values.Length - 1);
+                               Array.Copy (KnownColors.Values, 1, colors, 0, colors.Length);
                                Array.Sort (colors, 0, colors.Length, new CompareColors ());
                                cached = new StandardValuesCollection (colors);
                        }
index c63708dc2565b1bc7ede7902226c9164c6bed28d..23c4365c8a0fc8788782c2531860fe1b3ae588cd 100644 (file)
@@ -70,12 +70,7 @@ namespace System.Drawing {
                        int B = (oleColor >> 16) & 0xFF;
 
                        Color retcolor = Color.FromArgb (255, R, G, B);
-                       foreach (Color c in Color.NamedColors.Values) {
-                               if (c == retcolor)
-                                       return c;
-                       }
-
-                       foreach (Color c in Color.SystemColors.Values) {
+                       foreach (Color c in KnownColors.Values) {
                                if (c == retcolor)
                                        return c;
                        }
@@ -91,12 +86,7 @@ namespace System.Drawing {
                        int B = (win32Color >> 16) & 0xFF;
 
                        Color retcolor = Color.FromArgb (255, R, G, B);
-                       foreach (Color c in Color.NamedColors.Values) {
-                               if (c == retcolor)
-                                       return c;
-                       }
-
-                       foreach (Color c in Color.SystemColors.Values) {
+                       foreach (Color c in KnownColors.Values) {
                                if (c == retcolor)
                                        return c;
                        }
diff --git a/mcs/class/System.Drawing/System.Drawing/KnownColors.cs b/mcs/class/System.Drawing/System.Drawing/KnownColors.cs
new file mode 100644 (file)
index 0000000..fa0b43a
--- /dev/null
@@ -0,0 +1,305 @@
+//
+// System.Drawing.KnownColors
+//
+// Authors:
+//     Gonzalo Paniagua Javier (gonzalo@ximian.com)
+//     Peter Dennis Bartok (pbartok@novell.com)
+//     Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Drawing {
+
+#if NET_2_0
+       internal static class KnownColors {
+#else
+       internal class KnownColors {
+
+               private KnownColors ()
+               {
+               }
+#endif
+               static Color[] knownColors = new Color [] {
+                       Color.Empty,
+                       Color.FromArgbSystem (0xFF, 0xD4, 0xD0, 0xC8, "ActiveBorder", KnownColor.ActiveBorder), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x54, 0xE3, "ActiveCaption", KnownColor.ActiveCaption), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xFF, "ActiveCaptionText", KnownColor.ActiveCaptionText), 
+                       Color.FromArgbSystem (0xFF, 0x80, 0x80, 0x80, "AppWorkspace", KnownColor.AppWorkspace), 
+                       Color.FromArgbSystem (0xFF, 0xEC, 0xE9, 0xD8, "Control", KnownColor.Control), 
+                       Color.FromArgbSystem (0xFF, 0xAC, 0xA8, 0x99, "ControlDark", KnownColor.ControlDark), 
+                       Color.FromArgbSystem (0xFF, 0x71, 0x6F, 0x64, "ControlDarkDark", KnownColor.ControlDarkDark), 
+                       Color.FromArgbSystem (0xFF, 0xF1, 0xEF, 0xE2, "ControlLight", KnownColor.ControlLight), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xFF, "ControlLightLight", KnownColor.ControlLightLight), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x00, 0x00, "ControlText", KnownColor.ControlText), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x4E, 0x98, "Desktop", KnownColor.Desktop), 
+                       Color.FromArgbSystem (0xFF, 0xAC, 0xA8, 0x99, "GrayText", KnownColor.GrayText), 
+                       Color.FromArgbSystem (0xFF, 0x31, 0x6A, 0xC5, "Highlight", KnownColor.Highlight), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xFF, "HighlightText", KnownColor.HighlightText), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x00, 0x80, "HotTrack", KnownColor.HotTrack), 
+                       Color.FromArgbSystem (0xFF, 0xD4, 0xD0, 0xC8, "InactiveBorder", KnownColor.InactiveBorder), 
+                       Color.FromArgbSystem (0xFF, 0x7A, 0x96, 0xDF, "InactiveCaption", KnownColor.InactiveCaption), 
+                       Color.FromArgbSystem (0xFF, 0xD8, 0xE4, 0xF8, "InactiveCaptionText", KnownColor.InactiveCaptionText), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xE1, "Info", KnownColor.Info), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x00, 0x00, "InfoText", KnownColor.InfoText), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xFF, "Menu", KnownColor.Menu), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x00, 0x00, "MenuText", KnownColor.MenuText), 
+                       Color.FromArgbSystem (0xFF, 0xD4, 0xD0, 0xC8, "ScrollBar", KnownColor.ScrollBar), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xFF, "Window", KnownColor.Window), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x00, 0x00, "WindowFrame", KnownColor.WindowFrame), 
+                       Color.FromArgbSystem (0xFF, 0x00, 0x00, 0x00, "WindowText", KnownColor.WindowText), 
+                       Color.FromArgbNamed (0x00, 0xFF, 0xFF, 0xFF, "Transparent", KnownColor.Transparent), 
+                       Color.FromArgbNamed (0xFF, 0xF0, 0xF8, 0xFF, "AliceBlue", KnownColor.AliceBlue), 
+                       Color.FromArgbNamed (0xFF, 0xFA, 0xEB, 0xD7, "AntiqueWhite", KnownColor.AntiqueWhite), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xFF, 0xFF, "Aqua", KnownColor.Aqua), 
+                       Color.FromArgbNamed (0xFF, 0x7F, 0xFF, 0xD4, "Aquamarine", KnownColor.Aquamarine), 
+                       Color.FromArgbNamed (0xFF, 0xF0, 0xFF, 0xFF, "Azure", KnownColor.Azure), 
+                       Color.FromArgbNamed (0xFF, 0xF5, 0xF5, 0xDC, "Beige", KnownColor.Beige), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xE4, 0xC4, "Bisque", KnownColor.Bisque), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x00, 0x00, "Black", KnownColor.Black), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xEB, 0xCD, "BlanchedAlmond", KnownColor.BlanchedAlmond), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x00, 0xFF, "Blue", KnownColor.Blue), 
+                       Color.FromArgbNamed (0xFF, 0x8A, 0x2B, 0xE2, "BlueViolet", KnownColor.BlueViolet), 
+                       Color.FromArgbNamed (0xFF, 0xA5, 0x2A, 0x2A, "Brown", KnownColor.Brown), 
+                       Color.FromArgbNamed (0xFF, 0xDE, 0xB8, 0x87, "BurlyWood", KnownColor.BurlyWood), 
+                       Color.FromArgbNamed (0xFF, 0x5F, 0x9E, 0xA0, "CadetBlue", KnownColor.CadetBlue), 
+                       Color.FromArgbNamed (0xFF, 0x7F, 0xFF, 0x00, "Chartreuse", KnownColor.Chartreuse), 
+                       Color.FromArgbNamed (0xFF, 0xD2, 0x69, 0x1E, "Chocolate", KnownColor.Chocolate), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x7F, 0x50, "Coral", KnownColor.Coral), 
+                       Color.FromArgbNamed (0xFF, 0x64, 0x95, 0xED, "CornflowerBlue", KnownColor.CornflowerBlue), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xF8, 0xDC, "Cornsilk", KnownColor.Cornsilk), 
+                       Color.FromArgbNamed (0xFF, 0xDC, 0x14, 0x3C, "Crimson", KnownColor.Crimson), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xFF, 0xFF, "Cyan", KnownColor.Cyan), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x00, 0x8B, "DarkBlue", KnownColor.DarkBlue), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x8B, 0x8B, "DarkCyan", KnownColor.DarkCyan), 
+                       Color.FromArgbNamed (0xFF, 0xB8, 0x86, 0x0B, "DarkGoldenrod", KnownColor.DarkGoldenrod), 
+                       Color.FromArgbNamed (0xFF, 0xA9, 0xA9, 0xA9, "DarkGray", KnownColor.DarkGray), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x64, 0x00, "DarkGreen", KnownColor.DarkGreen), 
+                       Color.FromArgbNamed (0xFF, 0xBD, 0xB7, 0x6B, "DarkKhaki", KnownColor.DarkKhaki), 
+                       Color.FromArgbNamed (0xFF, 0x8B, 0x00, 0x8B, "DarkMagenta", KnownColor.DarkMagenta), 
+                       Color.FromArgbNamed (0xFF, 0x55, 0x6B, 0x2F, "DarkOliveGreen", KnownColor.DarkOliveGreen), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x8C, 0x00, "DarkOrange", KnownColor.DarkOrange), 
+                       Color.FromArgbNamed (0xFF, 0x99, 0x32, 0xCC, "DarkOrchid", KnownColor.DarkOrchid), 
+                       Color.FromArgbNamed (0xFF, 0x8B, 0x00, 0x00, "DarkRed", KnownColor.DarkRed), 
+                       Color.FromArgbNamed (0xFF, 0xE9, 0x96, 0x7A, "DarkSalmon", KnownColor.DarkSalmon), 
+                       Color.FromArgbNamed (0xFF, 0x8F, 0xBC, 0x8B, "DarkSeaGreen", KnownColor.DarkSeaGreen), 
+                       Color.FromArgbNamed (0xFF, 0x48, 0x3D, 0x8B, "DarkSlateBlue", KnownColor.DarkSlateBlue), 
+                       Color.FromArgbNamed (0xFF, 0x2F, 0x4F, 0x4F, "DarkSlateGray", KnownColor.DarkSlateGray), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xCE, 0xD1, "DarkTurquoise", KnownColor.DarkTurquoise), 
+                       Color.FromArgbNamed (0xFF, 0x94, 0x00, 0xD3, "DarkViolet", KnownColor.DarkViolet), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x14, 0x93, "DeepPink", KnownColor.DeepPink), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xBF, 0xFF, "DeepSkyBlue", KnownColor.DeepSkyBlue), 
+                       Color.FromArgbNamed (0xFF, 0x69, 0x69, 0x69, "DimGray", KnownColor.DimGray), 
+                       Color.FromArgbNamed (0xFF, 0x1E, 0x90, 0xFF, "DodgerBlue", KnownColor.DodgerBlue), 
+                       Color.FromArgbNamed (0xFF, 0xB2, 0x22, 0x22, "Firebrick", KnownColor.Firebrick), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFA, 0xF0, "FloralWhite", KnownColor.FloralWhite), 
+                       Color.FromArgbNamed (0xFF, 0x22, 0x8B, 0x22, "ForestGreen", KnownColor.ForestGreen), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x00, 0xFF, "Fuchsia", KnownColor.Fuchsia), 
+                       Color.FromArgbNamed (0xFF, 0xDC, 0xDC, 0xDC, "Gainsboro", KnownColor.Gainsboro), 
+                       Color.FromArgbNamed (0xFF, 0xF8, 0xF8, 0xFF, "GhostWhite", KnownColor.GhostWhite), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xD7, 0x00, "Gold", KnownColor.Gold), 
+                       Color.FromArgbNamed (0xFF, 0xDA, 0xA5, 0x20, "Goldenrod", KnownColor.Goldenrod), 
+                       Color.FromArgbNamed (0xFF, 0x80, 0x80, 0x80, "Gray", KnownColor.Gray), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x80, 0x00, "Green", KnownColor.Green), 
+                       Color.FromArgbNamed (0xFF, 0xAD, 0xFF, 0x2F, "GreenYellow", KnownColor.GreenYellow), 
+                       Color.FromArgbNamed (0xFF, 0xF0, 0xFF, 0xF0, "Honeydew", KnownColor.Honeydew), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x69, 0xB4, "HotPink", KnownColor.HotPink), 
+                       Color.FromArgbNamed (0xFF, 0xCD, 0x5C, 0x5C, "IndianRed", KnownColor.IndianRed), 
+                       Color.FromArgbNamed (0xFF, 0x4B, 0x00, 0x82, "Indigo", KnownColor.Indigo), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFF, 0xF0, "Ivory", KnownColor.Ivory), 
+                       Color.FromArgbNamed (0xFF, 0xF0, 0xE6, 0x8C, "Khaki", KnownColor.Khaki), 
+                       Color.FromArgbNamed (0xFF, 0xE6, 0xE6, 0xFA, "Lavender", KnownColor.Lavender), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xF0, 0xF5, "LavenderBlush", KnownColor.LavenderBlush), 
+                       Color.FromArgbNamed (0xFF, 0x7C, 0xFC, 0x00, "LawnGreen", KnownColor.LawnGreen), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFA, 0xCD, "LemonChiffon", KnownColor.LemonChiffon), 
+                       Color.FromArgbNamed (0xFF, 0xAD, 0xD8, 0xE6, "LightBlue", KnownColor.LightBlue), 
+                       Color.FromArgbNamed (0xFF, 0xF0, 0x80, 0x80, "LightCoral", KnownColor.LightCoral), 
+                       Color.FromArgbNamed (0xFF, 0xE0, 0xFF, 0xFF, "LightCyan", KnownColor.LightCyan), 
+                       Color.FromArgbNamed (0xFF, 0xFA, 0xFA, 0xD2, "LightGoldenrodYellow", KnownColor.LightGoldenrodYellow), 
+                       Color.FromArgbNamed (0xFF, 0xD3, 0xD3, 0xD3, "LightGray", KnownColor.LightGray), 
+                       Color.FromArgbNamed (0xFF, 0x90, 0xEE, 0x90, "LightGreen", KnownColor.LightGreen), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xB6, 0xC1, "LightPink", KnownColor.LightPink), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xA0, 0x7A, "LightSalmon", KnownColor.LightSalmon), 
+                       Color.FromArgbNamed (0xFF, 0x20, 0xB2, 0xAA, "LightSeaGreen", KnownColor.LightSeaGreen), 
+                       Color.FromArgbNamed (0xFF, 0x87, 0xCE, 0xFA, "LightSkyBlue", KnownColor.LightSkyBlue), 
+                       Color.FromArgbNamed (0xFF, 0x77, 0x88, 0x99, "LightSlateGray", KnownColor.LightSlateGray), 
+                       Color.FromArgbNamed (0xFF, 0xB0, 0xC4, 0xDE, "LightSteelBlue", KnownColor.LightSteelBlue), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFF, 0xE0, "LightYellow", KnownColor.LightYellow), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xFF, 0x00, "Lime", KnownColor.Lime), 
+                       Color.FromArgbNamed (0xFF, 0x32, 0xCD, 0x32, "LimeGreen", KnownColor.LimeGreen), 
+                       Color.FromArgbNamed (0xFF, 0xFA, 0xF0, 0xE6, "Linen", KnownColor.Linen), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x00, 0xFF, "Magenta", KnownColor.Magenta), 
+                       Color.FromArgbNamed (0xFF, 0x80, 0x00, 0x00, "Maroon", KnownColor.Maroon), 
+                       Color.FromArgbNamed (0xFF, 0x66, 0xCD, 0xAA, "MediumAquamarine", KnownColor.MediumAquamarine), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x00, 0xCD, "MediumBlue", KnownColor.MediumBlue), 
+                       Color.FromArgbNamed (0xFF, 0xBA, 0x55, 0xD3, "MediumOrchid", KnownColor.MediumOrchid), 
+                       Color.FromArgbNamed (0xFF, 0x93, 0x70, 0xDB, "MediumPurple", KnownColor.MediumPurple), 
+                       Color.FromArgbNamed (0xFF, 0x3C, 0xB3, 0x71, "MediumSeaGreen", KnownColor.MediumSeaGreen), 
+                       Color.FromArgbNamed (0xFF, 0x7B, 0x68, 0xEE, "MediumSlateBlue", KnownColor.MediumSlateBlue), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xFA, 0x9A, "MediumSpringGreen", KnownColor.MediumSpringGreen), 
+                       Color.FromArgbNamed (0xFF, 0x48, 0xD1, 0xCC, "MediumTurquoise", KnownColor.MediumTurquoise), 
+                       Color.FromArgbNamed (0xFF, 0xC7, 0x15, 0x85, "MediumVioletRed", KnownColor.MediumVioletRed), 
+                       Color.FromArgbNamed (0xFF, 0x19, 0x19, 0x70, "MidnightBlue", KnownColor.MidnightBlue), 
+                       Color.FromArgbNamed (0xFF, 0xF5, 0xFF, 0xFA, "MintCream", KnownColor.MintCream), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xE4, 0xE1, "MistyRose", KnownColor.MistyRose), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xE4, 0xB5, "Moccasin", KnownColor.Moccasin), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xDE, 0xAD, "NavajoWhite", KnownColor.NavajoWhite), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x00, 0x80, "Navy", KnownColor.Navy), 
+                       Color.FromArgbNamed (0xFF, 0xFD, 0xF5, 0xE6, "OldLace", KnownColor.OldLace), 
+                       Color.FromArgbNamed (0xFF, 0x80, 0x80, 0x00, "Olive", KnownColor.Olive), 
+                       Color.FromArgbNamed (0xFF, 0x6B, 0x8E, 0x23, "OliveDrab", KnownColor.OliveDrab), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xA5, 0x00, "Orange", KnownColor.Orange), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x45, 0x00, "OrangeRed", KnownColor.OrangeRed), 
+                       Color.FromArgbNamed (0xFF, 0xDA, 0x70, 0xD6, "Orchid", KnownColor.Orchid), 
+                       Color.FromArgbNamed (0xFF, 0xEE, 0xE8, 0xAA, "PaleGoldenrod", KnownColor.PaleGoldenrod), 
+                       Color.FromArgbNamed (0xFF, 0x98, 0xFB, 0x98, "PaleGreen", KnownColor.PaleGreen), 
+                       Color.FromArgbNamed (0xFF, 0xAF, 0xEE, 0xEE, "PaleTurquoise", KnownColor.PaleTurquoise), 
+                       Color.FromArgbNamed (0xFF, 0xDB, 0x70, 0x93, "PaleVioletRed", KnownColor.PaleVioletRed), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xEF, 0xD5, "PapayaWhip", KnownColor.PapayaWhip), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xDA, 0xB9, "PeachPuff", KnownColor.PeachPuff), 
+                       Color.FromArgbNamed (0xFF, 0xCD, 0x85, 0x3F, "Peru", KnownColor.Peru), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xC0, 0xCB, "Pink", KnownColor.Pink), 
+                       Color.FromArgbNamed (0xFF, 0xDD, 0xA0, 0xDD, "Plum", KnownColor.Plum), 
+                       Color.FromArgbNamed (0xFF, 0xB0, 0xE0, 0xE6, "PowderBlue", KnownColor.PowderBlue), 
+                       Color.FromArgbNamed (0xFF, 0x80, 0x00, 0x80, "Purple", KnownColor.Purple), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x00, 0x00, "Red", KnownColor.Red), 
+                       Color.FromArgbNamed (0xFF, 0xBC, 0x8F, 0x8F, "RosyBrown", KnownColor.RosyBrown), 
+                       Color.FromArgbNamed (0xFF, 0x41, 0x69, 0xE1, "RoyalBlue", KnownColor.RoyalBlue), 
+                       Color.FromArgbNamed (0xFF, 0x8B, 0x45, 0x13, "SaddleBrown", KnownColor.SaddleBrown), 
+                       Color.FromArgbNamed (0xFF, 0xFA, 0x80, 0x72, "Salmon", KnownColor.Salmon), 
+                       Color.FromArgbNamed (0xFF, 0xF4, 0xA4, 0x60, "SandyBrown", KnownColor.SandyBrown), 
+                       Color.FromArgbNamed (0xFF, 0x2E, 0x8B, 0x57, "SeaGreen", KnownColor.SeaGreen), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xF5, 0xEE, "SeaShell", KnownColor.SeaShell), 
+                       Color.FromArgbNamed (0xFF, 0xA0, 0x52, 0x2D, "Sienna", KnownColor.Sienna), 
+                       Color.FromArgbNamed (0xFF, 0xC0, 0xC0, 0xC0, "Silver", KnownColor.Silver), 
+                       Color.FromArgbNamed (0xFF, 0x87, 0xCE, 0xEB, "SkyBlue", KnownColor.SkyBlue), 
+                       Color.FromArgbNamed (0xFF, 0x6A, 0x5A, 0xCD, "SlateBlue", KnownColor.SlateBlue), 
+                       Color.FromArgbNamed (0xFF, 0x70, 0x80, 0x90, "SlateGray", KnownColor.SlateGray), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFA, 0xFA, "Snow", KnownColor.Snow), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0xFF, 0x7F, "SpringGreen", KnownColor.SpringGreen), 
+                       Color.FromArgbNamed (0xFF, 0x46, 0x82, 0xB4, "SteelBlue", KnownColor.SteelBlue), 
+                       Color.FromArgbNamed (0xFF, 0xD2, 0xB4, 0x8C, "Tan", KnownColor.Tan), 
+                       Color.FromArgbNamed (0xFF, 0x00, 0x80, 0x80, "Teal", KnownColor.Teal), 
+                       Color.FromArgbNamed (0xFF, 0xD8, 0xBF, 0xD8, "Thistle", KnownColor.Thistle), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0x63, 0x47, "Tomato", KnownColor.Tomato), 
+                       Color.FromArgbNamed (0xFF, 0x40, 0xE0, 0xD0, "Turquoise", KnownColor.Turquoise), 
+                       Color.FromArgbNamed (0xFF, 0xEE, 0x82, 0xEE, "Violet", KnownColor.Violet), 
+                       Color.FromArgbNamed (0xFF, 0xF5, 0xDE, 0xB3, "Wheat", KnownColor.Wheat), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFF, 0xFF, "White", KnownColor.White), 
+                       Color.FromArgbNamed (0xFF, 0xF5, 0xF5, 0xF5, "WhiteSmoke", KnownColor.WhiteSmoke), 
+                       Color.FromArgbNamed (0xFF, 0xFF, 0xFF, 0x00, "Yellow", KnownColor.Yellow), 
+                       Color.FromArgbNamed (0xFF, 0x9A, 0xCD, 0x32, "YellowGreen", KnownColor.YellowGreen), 
+#if NET_2_0
+                       Color.FromArgbSystem (0xFF, 0xEC, 0xE9, 0xD8, "ButtonFace", KnownColor.ButtonFace), 
+                       Color.FromArgbSystem (0xFF, 0xFF, 0xFF, 0xFF, "ButtonHighlight", KnownColor.ButtonHighlight), 
+                       Color.FromArgbSystem (0xFF, 0xAC, 0xA8, 0x99, "ButtonShadow", KnownColor.ButtonShadow), 
+                       Color.FromArgbSystem (0xFF, 0x3D, 0x95, 0xFF, "GradientActiveCaption", KnownColor.GradientActiveCaption), 
+                       Color.FromArgbSystem (0xFF, 0x9D, 0xB9, 0xEB, "GradientInactiveCaption", KnownColor.GradientInactiveCaption), 
+                       Color.FromArgbSystem (0xFF, 0xEC, 0xE9, 0xD8, "MenuBar", KnownColor.MenuBar), 
+                       Color.FromArgbSystem (0xFF, 0x31, 0x6A, 0xC5, "MenuHighlight", KnownColor.MenuHighlight), 
+#endif
+               };
+
+               static KnownColors ()
+               {
+                       if (GDIPlus.RunningOnWindows ()) {
+                               // If we're on Windows we should behave like MS and pull the colors
+                               InitOnWindows ();
+                       }
+               }
+
+               private static void SetWindowsColor (GetSysColorIndex index, string name, KnownColor knownColor)
+               {
+                       uint rgb = GDIPlus.Win32GetSysColor (index);
+                       Color color = Color.FromArgbSystem (255, (byte)rgb, (byte)(rgb >> 8), (byte)(rgb >> 16), name, knownColor);
+                       knownColors [(int)knownColor] = color;
+               }
+
+               static void InitOnWindows ()
+               {
+                       SetWindowsColor (GetSysColorIndex.COLOR_ACTIVEBORDER, "ActiveBorder", KnownColor.ActiveBorder);
+                       SetWindowsColor (GetSysColorIndex.COLOR_ACTIVECAPTION, "ActiveCaption", KnownColor.ActiveCaption);
+                       SetWindowsColor (GetSysColorIndex.COLOR_CAPTIONTEXT, "ActiveCaptionText", KnownColor.ActiveCaptionText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_APPWORKSPACE, "AppWorkspace", KnownColor.AppWorkspace);
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNFACE, "Control", KnownColor.Control);
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNSHADOW, "ControlDark", KnownColor.ControlDark);
+                       SetWindowsColor (GetSysColorIndex.COLOR_3DDKSHADOW, "ControlDarkDark", KnownColor.ControlDarkDark);
+                       SetWindowsColor (GetSysColorIndex.COLOR_3DLIGHT, "ControlLight", KnownColor.ControlLight);
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNHIGHLIGHT, "ControlLightLight", KnownColor.ControlLightLight);
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNTEXT, "ControlText", KnownColor.ControlText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_DESKTOP, "Desktop", KnownColor.Desktop);
+                       SetWindowsColor (GetSysColorIndex.COLOR_GRAYTEXT, "GrayText", KnownColor.GrayText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_HIGHLIGHT, "Highlight", KnownColor.Highlight);
+                       SetWindowsColor (GetSysColorIndex.COLOR_HIGHLIGHTTEXT, "HighlightText", KnownColor.HighlightText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_HOTLIGHT, "HotTrack", KnownColor.HotTrack);
+                       SetWindowsColor (GetSysColorIndex.COLOR_INACTIVEBORDER, "InactiveBorder", KnownColor.InactiveBorder);
+                       SetWindowsColor (GetSysColorIndex.COLOR_INACTIVECAPTION, "InactiveCaption", KnownColor.InactiveCaption);
+                       SetWindowsColor (GetSysColorIndex.COLOR_INACTIVECAPTIONTEXT, "InactiveCaptionText", KnownColor.InactiveCaptionText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_INFOBK, "Info", KnownColor.Info);
+                       SetWindowsColor (GetSysColorIndex.COLOR_INFOTEXT, "InfoText", KnownColor.InfoText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_MENU, "Menu", KnownColor.Menu);
+                       SetWindowsColor (GetSysColorIndex.COLOR_MENUTEXT, "MenuText", KnownColor.MenuText);
+                       SetWindowsColor (GetSysColorIndex.COLOR_SCROLLBAR, "ScrollBar", KnownColor.ScrollBar);
+                       SetWindowsColor (GetSysColorIndex.COLOR_WINDOW, "Window", KnownColor.Window);
+                       SetWindowsColor (GetSysColorIndex.COLOR_WINDOWFRAME, "WindowFrame", KnownColor.WindowFrame);
+                       SetWindowsColor (GetSysColorIndex.COLOR_WINDOWTEXT, "WindowText", KnownColor.WindowText);
+#if NET_2_0
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNFACE, "ButtonFace", KnownColor.ButtonFace);
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNHIGHLIGHT, "ButtonHighlight", KnownColor.ButtonHighlight);
+                       SetWindowsColor (GetSysColorIndex.COLOR_BTNSHADOW, "ButtonShadow", KnownColor.ButtonShadow);
+                       SetWindowsColor (GetSysColorIndex.COLOR_GRADIENTACTIVECAPTION, "GradientActiveCaption", KnownColor.GradientActiveCaption);
+                       SetWindowsColor (GetSysColorIndex.COLOR_GRADIENTINACTIVECAPTION, "GradientInactiveCaption", KnownColor.GradientInactiveCaption);
+                       SetWindowsColor (GetSysColorIndex.COLOR_MENUBAR, "MenuBar", KnownColor.MenuBar);
+                       SetWindowsColor (GetSysColorIndex.COLOR_MENUHIGHLIGHT, "MenuHighlight", KnownColor.MenuHighlight);
+#endif
+               }
+
+               public static Color[] Values {
+                       get { return knownColors; }
+               }
+
+               public static Color FromKnownColor (KnownColor kc)
+               {
+                       int n = (int)kc;
+                       if ((n <= 0) || (n >= knownColors.Length)) {
+                               // This is what it returns!
+                               Color c = Color.FromArgb (0, 0, 0, 0);
+                               c.name = kc.ToString ();
+                               c.state |= (short) Color.ColorType.Named;
+                               c.knownColor = (short) kc;
+                               return c;
+                       }
+                       return knownColors [n];
+               }
+
+               // When this method is called, we teach any new color(s) to the Color class
+               // NOTE: This is called (reflection) by System.Windows.Forms.Theme (this isn't dead code)
+               public static Color Update (int knownColor, int color)
+               {
+                       Color c = knownColors[knownColor];
+                       c.state = (short) (Color.ColorType.ARGB | Color.ColorType.Known | Color.ColorType.Named | Color.ColorType.System);
+                       c.value = color;
+                       knownColors[knownColor] = c;
+                       return c;
+               }
+       }
+}
index c16ed71ea8fdee4d73512fdf28ff2a4df8b600c5..7cf2051ea7e94af651d9dfdf30ac8e3372ad73f4 100644 (file)
@@ -1,8 +1,8 @@
 //
-// System.Drawing.SystemColors.cs
+// System.Drawing.SystemColors
 //
 // Copyright (C) 2002 Ximian, Inc (http://www.ximian.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2005, 2007 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
 // Authors:
 //     Gonzalo Paniagua Javier (gonzalo@ximian.com)
 //     Peter Dennis Bartok (pbartok@novell.com)
+//     Sebastien Pouliot  <sebastien@ximian.com>
 //
 
-
-// The following method can be (and was) used to generate the defaults for the properties
-//private static void GenerateColorTable (Type type) {
-//     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);
-//
-//             Color c = (Color) o;
-//
-//             StringBuilder name = new StringBuilder(prop.Name);
-//             name[0] = Char.ToLower(name[0]);
-//             for (int i = 1; i < name.Length; i++) {
-//                     if (Char.IsUpper(name[i])) {
-//                             name[i] = Char.ToLower(name[i]);
-//                             name.Insert(i, '_');
-//                     }
-//             }
-//
-//             Console.WriteLine("static private Color " + name.ToString() + " = Color.FromArgbSystem (" + 
-//                     c.A.ToString() + ", " +
-//                     c.R.ToString() + ", " +
-//                     c.G.ToString() + ", " +
-//                     c.B.ToString() + ", " +
-//                     "\"" + prop.Name + "\", " +
-//                     "KnownColor." + prop.Name + ");");
-//     }
-//}
-
-
-using System;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
 namespace System.Drawing {
-       public sealed class SystemColors
-       {
-               // Default Windows XP color table
-               static private Color active_border = Color.FromArgbSystem (255, 212, 208, 200, "ActiveBorder", KnownColor.ActiveBorder);
-               static private Color active_caption = Color.FromArgbSystem (255, 0, 164, 164, "ActiveCaption", KnownColor.ActiveCaption);
-               static private Color active_caption_text = Color.FromArgbSystem (255, 255, 255, 255, "ActiveCaptionText", KnownColor.ActiveCaptionText);
-               static private Color app_workspace = Color.FromArgbSystem (255, 128, 128, 128, "AppWorkspace", KnownColor.AppWorkspace);
-               static private Color control = Color.FromArgbSystem (255, 212, 208, 200, "Control", KnownColor.Control);
-               static private Color control_dark = Color.FromArgbSystem (255, 128, 128, 128, "ControlDark", KnownColor.ControlDark);
-               static private Color control_dark_dark = Color.FromArgbSystem (255, 64, 64, 64, "ControlDarkDark", KnownColor.ControlDarkDark);
-               static private Color control_light = Color.FromArgbSystem (255, 212, 208, 200, "ControlLight", KnownColor.ControlLight);
-               static private Color control_light_light = Color.FromArgbSystem (255, 255, 255, 255, "ControlLightLight", KnownColor.ControlLightLight);
-               static private Color control_text = Color.FromArgbSystem (255, 0, 0, 0, "ControlText", KnownColor.ControlText);
-               static private Color desktop = Color.FromArgbSystem (255, 0, 0, 0, "Desktop", KnownColor.Desktop);
-               static private Color gray_text = Color.FromArgbSystem (255, 128, 128, 128, "GrayText", KnownColor.GrayText);
-               static private Color highlight = Color.FromArgbSystem (255, 10, 36, 106, "Highlight", KnownColor.Highlight);
-               static private Color highlight_text = Color.FromArgbSystem (255, 255, 255, 255, "HighlightText", KnownColor.HighlightText);
-               static private Color hot_track = Color.FromArgbSystem (255, 0, 0, 128, "HotTrack", KnownColor.HotTrack);
-               static private Color inactive_border = Color.FromArgbSystem (255, 212, 208, 200, "InactiveBorder", KnownColor.InactiveBorder);
-               static private Color inactive_caption = Color.FromArgbSystem (255, 128, 128, 128, "InactiveCaption", KnownColor.InactiveCaption);
-               static private Color inactive_caption_text = Color.FromArgbSystem (255, 212, 208, 200, "InactiveCaptionText", KnownColor.InactiveCaptionText);
-               static private Color info = Color.FromArgbSystem (255, 255, 255, 225, "Info", KnownColor.Info);
-               static private Color info_text = Color.FromArgbSystem (255, 0, 0, 0, "InfoText", KnownColor.InfoText);
-               static private Color menu = Color.FromArgbSystem (255, 212, 208, 200, "Menu", KnownColor.Menu);
-               static private Color menu_text = Color.FromArgbSystem (255, 0, 0, 0, "MenuText", KnownColor.MenuText);
-               static private Color scroll_bar = Color.FromArgbSystem (255, 212, 208, 200, "ScrollBar", KnownColor.ScrollBar);
-               // This would give a better looking gray background instead of the high-contrast white background
-               //static private Color window = Color.FromArgbSystem (255, 212, 208, 200, "Window", KnownColor.Window);
-               static private Color window = Color.FromArgbSystem (255, 255, 255, 255, "Window", KnownColor.Window);
-               static private Color window_frame = Color.FromArgbSystem (255, 0, 0, 0, "WindowFrame", KnownColor.WindowFrame);
-               static private Color window_text = Color.FromArgbSystem (255, 0, 0, 0, "WindowText", KnownColor.WindowText);
-
-#if NET_2_0
-               static private Color button_face = Color.FromArgbSystem (255, 192, 192, 192, "ButtonFace", KnownColor.ButtonFace);
-               static private Color button_highlight = Color.FromArgbSystem (255, 255, 255, 255, "ButtonHighlight", KnownColor.ButtonHighlight);
-               static private Color button_shadow = Color.FromArgbSystem (255, 128, 128, 128, "ButtonShadow", KnownColor.ButtonShadow);
-               static private Color gradient_activecaption = Color.FromArgbSystem (255, 16, 132, 208, "GradientActiveCaption", KnownColor.GradientActiveCaption);
-               static private Color gradient_inactivecaption = Color.FromArgbSystem (255, 181, 181, 181, "GradientInactiveCaption", KnownColor.GradientInactiveCaption);
-               static private Color menubar = Color.FromArgbSystem (255, 192, 192, 192, "MenuBar", KnownColor.MenuBar);
-               static private Color menu_highlight = Color.FromArgbSystem (255, 0, 0, 0, "MenuHighlight", KnownColor.MenuHighlight);
-#endif
-
-#if old
-               static private Color active_border = Color.FromArgbSystem (255, 131, 153, 177, "ActiveBorder", KnownColor.ActiveBorder);
-               static private Color active_caption = Color.FromArgbSystem (255, 79, 101, 125, "ActiveCaption", KnownColor.ActiveCaption);
-               static private Color active_caption_text = Color.FromArgbSystem (255, 255, 255, 255, "ActiveCaptionText", KnownColor.ActiveCaptionText);
-               static private Color app_workspace = Color.FromArgbSystem (255, 128, 128, 128, "AppWorkspace", KnownColor.AppWorkspace);
-               static private Color control = Color.FromArgbSystem (255, 192, 192, 192, "Control", KnownColor.Control);
-               static private Color control_dark = Color.FromArgbSystem (255, 79, 101, 125, "ControlDark", KnownColor.ControlDark);
-               static private Color control_dark_dark = Color.FromArgbSystem (255, 0, 0, 0, "ControlDarkDark", KnownColor.ControlDarkDark);
-               static private Color control_light = Color.FromArgbSystem (255, 131, 153, 177, "ControlLight", KnownColor.ControlLight);
-               static private Color control_light_light = Color.FromArgbSystem (255, 193, 204, 217, "ControlLightLight", KnownColor.ControlLightLight);
-               static private Color control_text = Color.FromArgbSystem (255, 0, 0, 0, "ControlText", KnownColor.ControlText);
-               static private Color desktop = Color.FromArgbSystem (255, 0, 0, 0, "Desktop", KnownColor.Desktop);
-               static private Color gray_text = Color.FromArgbSystem (255, 79, 101, 125, "GrayText", KnownColor.GrayText);
-               static private Color highlight = Color.FromArgbSystem (255, 0, 0, 128, "Highlight", KnownColor.Highlight);
-               static private Color highlight_text = Color.FromArgbSystem (255, 255, 255, 255, "HighlightText", KnownColor.HighlightText);
-               static private Color hot_track = Color.FromArgbSystem (255, 0, 0, 255, "HotTrack", KnownColor.HotTrack);
-               static private Color inactive_border = Color.FromArgbSystem (255, 131, 153, 177, "InactiveBorder", KnownColor.InactiveBorder);
-               static private Color inactive_caption = Color.FromArgbSystem (255, 128, 128, 128, "InactiveCaption", KnownColor.InactiveCaption);
-               static private Color inactive_caption_text = Color.FromArgbSystem (255, 193, 204, 217, "InactiveCaptionText", KnownColor.InactiveCaptionText);
-               static private Color info = Color.FromArgbSystem (255, 255, 255, 255, "Info", KnownColor.Info);
-               static private Color info_text = Color.FromArgbSystem (255, 0, 0, 0, "InfoText", KnownColor.InfoText);
-               static private Color menu = Color.FromArgbSystem (255, 131, 153, 177, "Menu", KnownColor.Menu);
-               static private Color menu_text = Color.FromArgbSystem (255, 0, 0, 0, "MenuText", KnownColor.MenuText);
-               static private Color scroll_bar = Color.FromArgbSystem (255, 193, 204, 217, "ScrollBar", KnownColor.ScrollBar);
-               static private Color window = Color.FromArgbSystem (255, 255, 255, 255, "Window", KnownColor.Window);
-               static private Color window_frame = Color.FromArgbSystem (255, 0, 0, 0, "WindowFrame", KnownColor.WindowFrame);
-               static private Color window_text = Color.FromArgbSystem (255, 0, 0, 0, "WindowText", KnownColor.WindowText);
-#endif
-               private enum GetSysColorIndex {
-                       COLOR_SCROLLBAR                 = 0,
-                       COLOR_BACKGROUND                = 1,
-                       COLOR_ACTIVECAPTION             = 2,
-                       COLOR_INACTIVECAPTION           = 3,
-                       COLOR_MENU                      = 4,
-                       COLOR_WINDOW                    = 5,
-                       COLOR_WINDOWFRAME               = 6,
-                       COLOR_MENUTEXT                  = 7,
-                       COLOR_WINDOWTEXT                = 8,
-                       COLOR_CAPTIONTEXT               = 9,
-                       COLOR_ACTIVEBORDER              = 10,
-                       COLOR_INACTIVEBORDER            = 11,
-                       COLOR_APPWORKSPACE              = 12,
-                       COLOR_HIGHLIGHT                 = 13,
-                       COLOR_HIGHLIGHTTEXT             = 14,
-                       COLOR_BTNFACE                   = 15,
-                       COLOR_BTNSHADOW                 = 16,
-                       COLOR_GRAYTEXT                  = 17,
-                       COLOR_BTNTEXT                   = 18,
-                       COLOR_INACTIVECAPTIONTEXT       = 19,
-                       COLOR_BTNHIGHLIGHT              = 20,
-                       COLOR_3DDKSHADOW                = 21,
-                       COLOR_3DLIGHT                   = 22,
-                       COLOR_INFOTEXT                  = 23,
-                       COLOR_INFOBK                    = 24,
-                       
-                       COLOR_HOTLIGHT                  = 26,
-                       COLOR_GRADIENTACTIVECAPTION     = 27,
-                       COLOR_GRADIENTINACTIVECAPTION   = 28,
-                       COLOR_MENUHIGHLIGHT             = 29,
-                       COLOR_MENUBAR                   = 30,
-
-                       COLOR_DESKTOP                   = 1,
-                       COLOR_3DFACE                    = 16,
-                       COLOR_3DSHADOW                  = 16,
-                       COLOR_3DHIGHLIGHT               = 20,
-                       COLOR_3DHILIGHT                 = 20,
-                       COLOR_BTNHILIGHT                = 20,
-
-                       COLOR_MAXVALUE                  = 30,/* Maximum value */
-               }       
-
-               [DllImport ("user32.dll", EntryPoint="GetSysColor", CallingConvention=CallingConvention.StdCall)]
-               private extern static uint Win32GetSysColor(GetSysColorIndex index);
-
-               private static Color GetSysColor(GetSysColorIndex index, string name, KnownColor knownColor) {
-                       uint color;
-
-                       color = Win32GetSysColor(index);
-
-                       return Color.FromArgbSystem(255, (byte)(color & 0xff), (byte)((color >> 8) & 0xff), (byte)((color >> 16) & 0xff), name, knownColor);
-               }
-
-               // When this method is called, we teach any new color(s) to the Color class
-               private static void UpdateColors() {
-                       active_border = Color.UpdateKnownColor (active_border.A, active_border.R, active_border.G, active_border.B, "ActiveBorder", KnownColor.ActiveBorder);
-                       active_caption = Color.UpdateKnownColor (active_caption.A, active_caption.R, active_caption.G, active_caption.B, "ActiveCaption", KnownColor.ActiveCaption);
-                       active_caption_text = Color.UpdateKnownColor (active_caption_text.A, active_caption_text.R, active_caption_text.G, active_caption_text.B, "ActiveCaptionText", KnownColor.ActiveCaptionText);
-                       app_workspace = Color.UpdateKnownColor (app_workspace.A, app_workspace.R, app_workspace.G, app_workspace.B, "AppWorkspace", KnownColor.AppWorkspace);
-                       control = Color.UpdateKnownColor (control.A, control.R, control.G, control.B, "Control", KnownColor.Control);
-                       control_dark = Color.UpdateKnownColor (control_dark.A, control_dark.R, control_dark.G, control_dark.B, "ControlDark", KnownColor.ControlDark);
-                       control_dark_dark = Color.UpdateKnownColor (control_dark_dark.A, control_dark_dark.R, control_dark_dark.G, control_dark_dark.B, "ControlDarkDark", KnownColor.ControlDarkDark);
-                       control_light = Color.UpdateKnownColor (control_light.A, control_light.R, control_light.G, control_light.B, "ControlLight", KnownColor.ControlLight);
-                       control_light_light = Color.UpdateKnownColor (control_light_light.A, control_light_light.R, control_light_light.G, control_light_light.B, "ControlLightLight", KnownColor.ControlLightLight);
-                       control_text = Color.UpdateKnownColor (control_text.A, control_text.R, control_text.G, control_text.B, "ControlText", KnownColor.ControlText);
-                       desktop = Color.UpdateKnownColor (desktop.A, desktop.R, desktop.G, desktop.B, "Desktop", KnownColor.Desktop);
-                       gray_text = Color.UpdateKnownColor (gray_text.A, gray_text.R, gray_text.G, gray_text.B, "GrayText", KnownColor.GrayText);
-                       highlight = Color.UpdateKnownColor (highlight.A, highlight.R, highlight.G, highlight.B, "Highlight", KnownColor.Highlight);
-                       highlight_text = Color.UpdateKnownColor (highlight_text.A, highlight_text.R, highlight_text.G, highlight_text.B, "HighlightText", KnownColor.HighlightText);
-                       hot_track = Color.UpdateKnownColor (hot_track.A, hot_track.R, hot_track.G, hot_track.B, "HotTrack", KnownColor.HotTrack);
-                       inactive_border = Color.UpdateKnownColor (inactive_border.A, inactive_border.R, inactive_border.G, inactive_border.B, "InactiveBorder", KnownColor.InactiveBorder);
-                       inactive_caption = Color.UpdateKnownColor (inactive_caption.A, inactive_caption.R, inactive_caption.G, inactive_caption.B, "InactiveCaption", KnownColor.InactiveCaption);
-                       inactive_caption_text = Color.UpdateKnownColor (inactive_caption_text.A, inactive_caption_text.R, inactive_caption_text.G, inactive_caption_text.B, "InactiveCaptionText", KnownColor.InactiveCaptionText);
-                       info = Color.UpdateKnownColor (info.A, info.R, info.G, info.B, "Info", KnownColor.Info);
-                       info_text = Color.UpdateKnownColor (info_text.A, info_text.R, info_text.G, info_text.B, "InfoText", KnownColor.InfoText);
-                       menu = Color.UpdateKnownColor (menu.A, menu.R, menu.G, menu.B, "Menu", KnownColor.Menu);
-                       menu_text = Color.UpdateKnownColor (menu_text.A, menu_text.R, menu_text.G, menu_text.B, "MenuText", KnownColor.MenuText);
-                       scroll_bar = Color.UpdateKnownColor (scroll_bar.A, scroll_bar.R, scroll_bar.G, scroll_bar.B, "ScrollBar", KnownColor.ScrollBar);
-                       window = Color.UpdateKnownColor (window.A, window.R, window.G, window.B, "Window", KnownColor.Window);
-                       window_frame = Color.UpdateKnownColor (window_frame.A, window_frame.R, window_frame.G, window_frame.B, "WindowFrame", KnownColor.WindowFrame);
-                       window_text = Color.UpdateKnownColor (window_text.A, window_text.R, window_text.G, window_text.B, "WindowText", KnownColor.WindowText);
-               }
-
-               static SystemColors ()
-               {
-                       if (GDIPlus.RunningOnWindows ()) {
-                               // If we're on Windows we should behave like MS and pull the colors
-                               InitOnWindows ();
-                       }
-               }
-
-               static void InitOnWindows ()
-               {
-                       active_border = GetSysColor(GetSysColorIndex.COLOR_ACTIVEBORDER, "ActiveBorder", KnownColor.ActiveBorder);
-                       active_caption = GetSysColor(GetSysColorIndex.COLOR_ACTIVECAPTION, "ActiveCaption", KnownColor.ActiveCaption);
-                       active_caption_text = GetSysColor(GetSysColorIndex.COLOR_CAPTIONTEXT, "ActiveCaptionText", KnownColor.ActiveCaptionText);
-                       app_workspace = GetSysColor(GetSysColorIndex.COLOR_APPWORKSPACE, "AppWorkspace", KnownColor.AppWorkspace);
-                       control = GetSysColor(GetSysColorIndex.COLOR_BTNFACE, "Control", KnownColor.Control);
-                       control_dark = GetSysColor(GetSysColorIndex.COLOR_BTNSHADOW, "ControlDark", KnownColor.ControlDark);
-                       control_dark_dark = GetSysColor(GetSysColorIndex.COLOR_3DDKSHADOW, "ControlDarkDark", KnownColor.ControlDarkDark);
-                       control_light = GetSysColor(GetSysColorIndex.COLOR_3DLIGHT, "ControlLight", KnownColor.ControlLight);
-                       control_light_light = GetSysColor(GetSysColorIndex.COLOR_BTNHIGHLIGHT, "ControlLightLight", KnownColor.ControlLightLight);
-                       control_text = GetSysColor(GetSysColorIndex.COLOR_BTNTEXT, "ControlText", KnownColor.ControlText);
-                       desktop = GetSysColor(GetSysColorIndex.COLOR_DESKTOP, "Desktop", KnownColor.Desktop);
-                       gray_text = GetSysColor(GetSysColorIndex.COLOR_GRAYTEXT, "GrayText", KnownColor.GrayText);
-                       highlight = GetSysColor(GetSysColorIndex.COLOR_HIGHLIGHT, "Highlight", KnownColor.Highlight);
-                       highlight_text = GetSysColor(GetSysColorIndex.COLOR_HIGHLIGHTTEXT, "HighlightText", KnownColor.HighlightText);
-                       hot_track = GetSysColor(GetSysColorIndex.COLOR_HOTLIGHT, "HotTrack", KnownColor.HotTrack);
-                       inactive_border = GetSysColor(GetSysColorIndex.COLOR_INACTIVEBORDER, "InactiveBorder", KnownColor.InactiveBorder);
-                       inactive_caption = GetSysColor(GetSysColorIndex.COLOR_INACTIVECAPTION, "InactiveCaption", KnownColor.InactiveCaption);
-                       inactive_caption_text = GetSysColor(GetSysColorIndex.COLOR_INACTIVECAPTIONTEXT, "InactiveCaptionText", KnownColor.InactiveCaptionText);
-                       info = GetSysColor(GetSysColorIndex.COLOR_INFOBK, "Info", KnownColor.Info);
-                       info_text = GetSysColor(GetSysColorIndex.COLOR_INFOTEXT, "InfoText", KnownColor.InfoText);
-                       menu = GetSysColor(GetSysColorIndex.COLOR_MENU, "Menu", KnownColor.Menu);
-                       menu_text = GetSysColor(GetSysColorIndex.COLOR_MENUTEXT, "MenuText", KnownColor.MenuText);
-                       scroll_bar = GetSysColor(GetSysColorIndex.COLOR_SCROLLBAR, "ScrollBar", KnownColor.ScrollBar);
-                       window = GetSysColor(GetSysColorIndex.COLOR_WINDOW, "Window", KnownColor.Window);
-                       window_frame = GetSysColor(GetSysColorIndex.COLOR_WINDOWFRAME, "WindowFrame", KnownColor.WindowFrame);
-                       window_text = GetSysColor(GetSysColorIndex.COLOR_WINDOWTEXT, "WindowText", KnownColor.WindowText);
-                       
-#if NET_2_0
-                       button_face = GetSysColor (GetSysColorIndex.COLOR_BTNFACE, "ButtonFace", KnownColor.ButtonFace);
-                       button_highlight = GetSysColor (GetSysColorIndex.COLOR_BTNHIGHLIGHT, "ButtonHighlight", KnownColor.ButtonHighlight);
-                       button_shadow = GetSysColor (GetSysColorIndex.COLOR_BTNSHADOW, "ButtonShadow", KnownColor.ButtonShadow);
-                       gradient_activecaption = GetSysColor (GetSysColorIndex.COLOR_GRADIENTACTIVECAPTION, "GradientActiveCaption", KnownColor.GradientActiveCaption);
-                       gradient_inactivecaption = GetSysColor (GetSysColorIndex.COLOR_GRADIENTINACTIVECAPTION, "GradientInactiveCaption", KnownColor.GradientInactiveCaption);
-                       menubar = GetSysColor (GetSysColorIndex.COLOR_MENUBAR, "MenuBar", KnownColor.MenuBar);
-                       menu_highlight = GetSysColor (GetSysColorIndex.COLOR_MENUHIGHLIGHT, "MenuHighlight", KnownColor.MenuHighlight);
-#endif
-
-               }
 
+       public sealed class SystemColors {
 
                private SystemColors ()
                {
                }
 
-               static public Color ActiveBorder
-               {       
-                       get {
-                               return active_border;
-                       }
+               static public Color ActiveBorder {
+                       get { return KnownColors.FromKnownColor (KnownColor.ActiveBorder); }
                }
 
-               static public Color ActiveCaption
-               {       
-                       get {
-                               return active_caption;
-                       }
+               static public Color ActiveCaption {
+                       get { return KnownColors.FromKnownColor (KnownColor.ActiveCaption); }
                }
 
-               static public Color ActiveCaptionText
-               {       
-                       get {
-                               return active_caption_text;
-                       }
+               static public Color ActiveCaptionText {
+                       get { return KnownColors.FromKnownColor (KnownColor.ActiveCaptionText); }
                }
 
-               static public Color AppWorkspace
-               {       
-                       get {
-                               return app_workspace;
-                       }
+               static public Color AppWorkspace {
+                       get { return KnownColors.FromKnownColor (KnownColor.AppWorkspace); }
                }
 
-               static public Color Control
-               {       
-                       get {
-                               return control;
-                       }
+               static public Color Control {
+                       get { return KnownColors.FromKnownColor (KnownColor.Control); }
                }
 
-               static public Color ControlDark
-               {       
-                       get {
-                               return control_dark;
-                       }
+               static public Color ControlDark {
+                       get { return KnownColors.FromKnownColor (KnownColor.ControlDark); }
                }
 
-               static public Color ControlDarkDark
-               {       
-                       get {
-                               return control_dark_dark;
-                       }
+               static public Color ControlDarkDark {
+                       get { return KnownColors.FromKnownColor (KnownColor.ControlDarkDark); }
                }
 
-               static public Color ControlLight
-               {       
-                       get {
-                               return control_light;
-                       }
+               static public Color ControlLight {
+                       get { return KnownColors.FromKnownColor (KnownColor.ControlLight); }
                }
 
-               static public Color ControlLightLight
-               {       
-                       get {
-                               return control_light_light;
-                       }
+               static public Color ControlLightLight {
+                       get { return KnownColors.FromKnownColor (KnownColor.ControlLightLight); }
                }
 
-               static public Color ControlText
-               {       
-                       get {
-                               return control_text;
-                       }
+               static public Color ControlText {
+                       get { return KnownColors.FromKnownColor (KnownColor.ControlText); }
                }
 
-               static public Color Desktop
-               {       
-                       get {
-                               return desktop;
-                       }
+               static public Color Desktop {
+                       get { return KnownColors.FromKnownColor (KnownColor.Desktop); }
                }
 
-               static public Color GrayText
-               {       
-                       get {
-                               return gray_text;
-                       }
+               static public Color GrayText {
+                       get { return KnownColors.FromKnownColor (KnownColor.GrayText); }
                }
 
-               static public Color Highlight
-               {       
-                       get {
-                               return highlight;
-                       }
+               static public Color Highlight {
+                       get { return KnownColors.FromKnownColor (KnownColor.Highlight); }
                }
 
-               static public Color HighlightText
-               {       
-                       get {
-                               return highlight_text;
-                       }
+               static public Color HighlightText {
+                       get { return KnownColors.FromKnownColor (KnownColor.HighlightText); }
                }
 
-               static public Color HotTrack
-               {       
-                       get {
-                               return hot_track;
-                       }
+               static public Color HotTrack {
+                       get { return KnownColors.FromKnownColor (KnownColor.HotTrack); }
                }
 
-               static public Color InactiveBorder
-               {       
-                       get {
-                               return inactive_border;
-                       }
+               static public Color InactiveBorder {
+                       get { return KnownColors.FromKnownColor (KnownColor.InactiveBorder); }
                }
 
-               static public Color InactiveCaption
-               {       
-                       get {
-                               return inactive_caption;
-                       }
+               static public Color InactiveCaption {
+                       get { return KnownColors.FromKnownColor (KnownColor.InactiveCaption); }
                }
 
-               static public Color InactiveCaptionText
-               {       
-                       get {
-                               return inactive_caption_text;
-                       }
+               static public Color InactiveCaptionText {
+                       get { return KnownColors.FromKnownColor (KnownColor.InactiveCaptionText); }
                }
 
-               static public Color Info
-               {       
-                       get {
-                               return info;
-                       }
+               static public Color Info {
+                       get { return KnownColors.FromKnownColor (KnownColor.Info); }
                }
 
-               static public Color InfoText
-               {       
-                       get {
-                               return info_text;
-                       }
+               static public Color InfoText {
+                       get { return KnownColors.FromKnownColor (KnownColor.InfoText); }
                }
 
-               static public Color Menu
-               {       
-                       get {
-                               return menu;
-                       }
+               static public Color Menu {
+                       get { return KnownColors.FromKnownColor (KnownColor.Menu); }
                }
 
-               static public Color MenuText
-               {       
-                       get {
-                               return menu_text;
-                       }
+               static public Color MenuText {
+                       get { return KnownColors.FromKnownColor (KnownColor.MenuText); }
                }
 
-               static public Color ScrollBar
-               {       
-                       get {
-                               return scroll_bar;
-                       }
+               static public Color ScrollBar {
+                       get { return KnownColors.FromKnownColor (KnownColor.ScrollBar); }
                }
 
-               static public Color Window
-               {       
-                       get {
-                               return window;
-                       }
+               static public Color Window {
+                       get { return KnownColors.FromKnownColor (KnownColor.Window); }
                }
 
-               static public Color WindowFrame
-               {       
-                       get {
-                               return window_frame;
-                       }
+               static public Color WindowFrame {
+                       get { return KnownColors.FromKnownColor (KnownColor.WindowFrame); }
                }
 
-               static public Color WindowText
-               {       
-                       get {
-                               return window_text;
-                       }
+               static public Color WindowText {
+                       get { return KnownColors.FromKnownColor (KnownColor.WindowText); }
                }
 #if NET_2_0
-
-               static public Color ButtonFace
-               {       
-                       get {
-                               return button_face;
-                       }
+               static public Color ButtonFace {
+                       get { return KnownColors.FromKnownColor (KnownColor.ButtonFace); }
                }
 
-               static public Color ButtonHighlight
-               {       
-                       get {
-                               return button_highlight;
-                       }
+               static public Color ButtonHighlight {
+                       get { return KnownColors.FromKnownColor (KnownColor.ButtonHighlight); }
                }
 
-               static public Color ButtonShadow
-               {       
-                       get {
-                               return button_shadow;
-                       }
+               static public Color ButtonShadow {
+                       get { return KnownColors.FromKnownColor (KnownColor.ButtonShadow); }
                }
 
-               static public Color GradientActiveCaption
-               {       
-                       get {
-                               return gradient_activecaption;
-                       }
+               static public Color GradientActiveCaption {
+                       get { return KnownColors.FromKnownColor (KnownColor.GradientActiveCaption); }
                }
 
-               static public Color GradientInactiveCaption
-               {       
-                       get {
-                               return gradient_inactivecaption;
-                       }
+               static public Color GradientInactiveCaption {
+                       get { return KnownColors.FromKnownColor (KnownColor.GradientInactiveCaption); }
                }
 
-               static public Color MenuBar
-               {       
-                       get {
-                               return menubar;
-                       }
+               static public Color MenuBar {
+                       get { return KnownColors.FromKnownColor (KnownColor.MenuBar); }
                }
 
-               static public Color MenuHighlight
-               {       
-                       get {
-                               return menu_highlight;
-                       }
+               static public Color MenuHighlight {
+                       get { return KnownColors.FromKnownColor (KnownColor.MenuHighlight); }
                }
 #endif
-
        }
 }
-
index edc7637d7523b486e0ad81271d5b67f7b936a59f..6bfebc688438535329a23bdce96c355c5b066409 100644 (file)
@@ -1458,6 +1458,9 @@ namespace System.Drawing
                public static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, 
                        int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
 
+               [DllImport ("user32.dll", EntryPoint = "GetSysColor", CallingConvention = CallingConvention.StdCall)]
+               public static extern uint Win32GetSysColor (GetSysColorIndex index);
+
 
                // Some special X11 stuff
                [DllImport("libX11", EntryPoint="XOpenDisplay")]
index 715a2e8eee56f758065cfc06e59417cc18c28eae..3b99ca70f79d84519956743463399df54f21a75e 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
-using System.Runtime.InteropServices;
-using System.Text;
 using System.Drawing.Imaging;
-using System.Drawing;
+using System.Runtime.InteropServices;
 
 namespace System.Drawing 
 {
@@ -212,5 +209,47 @@ namespace System.Drawing
                internal int bits_per_rgb;              
        }
        
+       internal enum GetSysColorIndex {
+               COLOR_SCROLLBAR                 = 0,
+               COLOR_BACKGROUND                = 1,
+               COLOR_ACTIVECAPTION             = 2,
+               COLOR_INACTIVECAPTION           = 3,
+               COLOR_MENU                      = 4,
+               COLOR_WINDOW                    = 5,
+               COLOR_WINDOWFRAME               = 6,
+               COLOR_MENUTEXT                  = 7,
+               COLOR_WINDOWTEXT                = 8,
+               COLOR_CAPTIONTEXT               = 9,
+               COLOR_ACTIVEBORDER              = 10,
+               COLOR_INACTIVEBORDER            = 11,
+               COLOR_APPWORKSPACE              = 12,
+               COLOR_HIGHLIGHT                 = 13,
+               COLOR_HIGHLIGHTTEXT             = 14,
+               COLOR_BTNFACE                   = 15,
+               COLOR_BTNSHADOW                 = 16,
+               COLOR_GRAYTEXT                  = 17,
+               COLOR_BTNTEXT                   = 18,
+               COLOR_INACTIVECAPTIONTEXT       = 19,
+               COLOR_BTNHIGHLIGHT              = 20,
+               COLOR_3DDKSHADOW                = 21,
+               COLOR_3DLIGHT                   = 22,
+               COLOR_INFOTEXT                  = 23,
+               COLOR_INFOBK                    = 24,
+                       
+               COLOR_HOTLIGHT                  = 26,
+               COLOR_GRADIENTACTIVECAPTION     = 27,
+               COLOR_GRADIENTINACTIVECAPTION   = 28,
+               COLOR_MENUHIGHLIGHT             = 29,
+               COLOR_MENUBAR                   = 30,
+
+               COLOR_DESKTOP                   = 1,
+               COLOR_3DFACE                    = 16,
+               COLOR_3DSHADOW                  = 16,
+               COLOR_3DHIGHLIGHT               = 20,
+               COLOR_3DHILIGHT                 = 20,
+               COLOR_BTNHILIGHT                = 20,
+
+               COLOR_MAXVALUE                  = 30,/* Maximum value */
+       }       
 }