2007-05-02 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / mcs / class / System.Drawing / System.Drawing / KnownColors.cs
1 //
2 // System.Drawing.KnownColors
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //      Peter Dennis Bartok (pbartok@novell.com)
7 //      Sebastien Pouliot  <sebastien@ximian.com>
8 //
9 // Copyright (C) 2007 Novell, Inc (http://www.novell.com)
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30
31 namespace System.Drawing {
32
33 #if NET_2_0
34         internal static class KnownColors {
35 #else
36         internal class KnownColors {
37
38                 private KnownColors ()
39                 {
40                 }
41 #endif
42                 static internal uint[] ArgbValues = new uint[] {
43                         0x00000000,     /* 000 - Empty */
44                         0xFFD4D0C8,     /* 001 - ActiveBorder */
45                         0xFF0054E3,     /* 002 - ActiveCaption */
46                         0xFFFFFFFF,     /* 003 - ActiveCaptionText */
47                         0xFF808080,     /* 004 - AppWorkspace */
48                         0xFFECE9D8,     /* 005 - Control */
49                         0xFFACA899,     /* 006 - ControlDark */
50                         0xFF716F64,     /* 007 - ControlDarkDark */
51                         0xFFF1EFE2,     /* 008 - ControlLight */
52                         0xFFFFFFFF,     /* 009 - ControlLightLight */
53                         0xFF000000,     /* 010 - ControlText */
54                         0xFF004E98,     /* 011 - Desktop */
55                         0xFFACA899,     /* 012 - GrayText */
56                         0xFF316AC5,     /* 013 - Highlight */
57                         0xFFFFFFFF,     /* 014 - HighlightText */
58                         0xFF000080,     /* 015 - HotTrack */
59                         0xFFD4D0C8,     /* 016 - InactiveBorder */
60                         0xFF7A96DF,     /* 017 - InactiveCaption */
61                         0xFFD8E4F8,     /* 018 - InactiveCaptionText */
62                         0xFFFFFFE1,     /* 019 - Info */
63                         0xFF000000,     /* 020 - InfoText */
64                         0xFFFFFFFF,     /* 021 - Menu */
65                         0xFF000000,     /* 022 - MenuText */
66                         0xFFD4D0C8,     /* 023 - ScrollBar */
67                         0xFFFFFFFF,     /* 024 - Window */
68                         0xFF000000,     /* 025 - WindowFrame */
69                         0xFF000000,     /* 026 - WindowText */
70                         0x00FFFFFF,     /* 027 - Transparent */
71                         0xFFF0F8FF,     /* 028 - AliceBlue */
72                         0xFFFAEBD7,     /* 029 - AntiqueWhite */
73                         0xFF00FFFF,     /* 030 - Aqua */
74                         0xFF7FFFD4,     /* 031 - Aquamarine */
75                         0xFFF0FFFF,     /* 032 - Azure */
76                         0xFFF5F5DC,     /* 033 - Beige */
77                         0xFFFFE4C4,     /* 034 - Bisque */
78                         0xFF000000,     /* 035 - Black */
79                         0xFFFFEBCD,     /* 036 - BlanchedAlmond */
80                         0xFF0000FF,     /* 037 - Blue */
81                         0xFF8A2BE2,     /* 038 - BlueViolet */
82                         0xFFA52A2A,     /* 039 - Brown */
83                         0xFFDEB887,     /* 040 - BurlyWood */
84                         0xFF5F9EA0,     /* 041 - CadetBlue */
85                         0xFF7FFF00,     /* 042 - Chartreuse */
86                         0xFFD2691E,     /* 043 - Chocolate */
87                         0xFFFF7F50,     /* 044 - Coral */
88                         0xFF6495ED,     /* 045 - CornflowerBlue */
89                         0xFFFFF8DC,     /* 046 - Cornsilk */
90                         0xFFDC143C,     /* 047 - Crimson */
91                         0xFF00FFFF,     /* 048 - Cyan */
92                         0xFF00008B,     /* 049 - DarkBlue */
93                         0xFF008B8B,     /* 050 - DarkCyan */
94                         0xFFB8860B,     /* 051 - DarkGoldenrod */
95                         0xFFA9A9A9,     /* 052 - DarkGray */
96                         0xFF006400,     /* 053 - DarkGreen */
97                         0xFFBDB76B,     /* 054 - DarkKhaki */
98                         0xFF8B008B,     /* 055 - DarkMagenta */
99                         0xFF556B2F,     /* 056 - DarkOliveGreen */
100                         0xFFFF8C00,     /* 057 - DarkOrange */
101                         0xFF9932CC,     /* 058 - DarkOrchid */
102                         0xFF8B0000,     /* 059 - DarkRed */
103                         0xFFE9967A,     /* 060 - DarkSalmon */
104                         0xFF8FBC8B,     /* 061 - DarkSeaGreen */
105                         0xFF483D8B,     /* 062 - DarkSlateBlue */
106                         0xFF2F4F4F,     /* 063 - DarkSlateGray */
107                         0xFF00CED1,     /* 064 - DarkTurquoise */
108                         0xFF9400D3,     /* 065 - DarkViolet */
109                         0xFFFF1493,     /* 066 - DeepPink */
110                         0xFF00BFFF,     /* 067 - DeepSkyBlue */
111                         0xFF696969,     /* 068 - DimGray */
112                         0xFF1E90FF,     /* 069 - DodgerBlue */
113                         0xFFB22222,     /* 070 - Firebrick */
114                         0xFFFFFAF0,     /* 071 - FloralWhite */
115                         0xFF228B22,     /* 072 - ForestGreen */
116                         0xFFFF00FF,     /* 073 - Fuchsia */
117                         0xFFDCDCDC,     /* 074 - Gainsboro */
118                         0xFFF8F8FF,     /* 075 - GhostWhite */
119                         0xFFFFD700,     /* 076 - Gold */
120                         0xFFDAA520,     /* 077 - Goldenrod */
121                         0xFF808080,     /* 078 - Gray */
122                         0xFF008000,     /* 079 - Green */
123                         0xFFADFF2F,     /* 080 - GreenYellow */
124                         0xFFF0FFF0,     /* 081 - Honeydew */
125                         0xFFFF69B4,     /* 082 - HotPink */
126                         0xFFCD5C5C,     /* 083 - IndianRed */
127                         0xFF4B0082,     /* 084 - Indigo */
128                         0xFFFFFFF0,     /* 085 - Ivory */
129                         0xFFF0E68C,     /* 086 - Khaki */
130                         0xFFE6E6FA,     /* 087 - Lavender */
131                         0xFFFFF0F5,     /* 088 - LavenderBlush */
132                         0xFF7CFC00,     /* 089 - LawnGreen */
133                         0xFFFFFACD,     /* 090 - LemonChiffon */
134                         0xFFADD8E6,     /* 091 - LightBlue */
135                         0xFFF08080,     /* 092 - LightCoral */
136                         0xFFE0FFFF,     /* 093 - LightCyan */
137                         0xFFFAFAD2,     /* 094 - LightGoldenrodYellow */
138                         0xFFD3D3D3,     /* 095 - LightGray */
139                         0xFF90EE90,     /* 096 - LightGreen */
140                         0xFFFFB6C1,     /* 097 - LightPink */
141                         0xFFFFA07A,     /* 098 - LightSalmon */
142                         0xFF20B2AA,     /* 099 - LightSeaGreen */
143                         0xFF87CEFA,     /* 100 - LightSkyBlue */
144                         0xFF778899,     /* 101 - LightSlateGray */
145                         0xFFB0C4DE,     /* 102 - LightSteelBlue */
146                         0xFFFFFFE0,     /* 103 - LightYellow */
147                         0xFF00FF00,     /* 104 - Lime */
148                         0xFF32CD32,     /* 105 - LimeGreen */
149                         0xFFFAF0E6,     /* 106 - Linen */
150                         0xFFFF00FF,     /* 107 - Magenta */
151                         0xFF800000,     /* 108 - Maroon */
152                         0xFF66CDAA,     /* 109 - MediumAquamarine */
153                         0xFF0000CD,     /* 110 - MediumBlue */
154                         0xFFBA55D3,     /* 111 - MediumOrchid */
155                         0xFF9370DB,     /* 112 - MediumPurple */
156                         0xFF3CB371,     /* 113 - MediumSeaGreen */
157                         0xFF7B68EE,     /* 114 - MediumSlateBlue */
158                         0xFF00FA9A,     /* 115 - MediumSpringGreen */
159                         0xFF48D1CC,     /* 116 - MediumTurquoise */
160                         0xFFC71585,     /* 117 - MediumVioletRed */
161                         0xFF191970,     /* 118 - MidnightBlue */
162                         0xFFF5FFFA,     /* 119 - MintCream */
163                         0xFFFFE4E1,     /* 120 - MistyRose */
164                         0xFFFFE4B5,     /* 121 - Moccasin */
165                         0xFFFFDEAD,     /* 122 - NavajoWhite */
166                         0xFF000080,     /* 123 - Navy */
167                         0xFFFDF5E6,     /* 124 - OldLace */
168                         0xFF808000,     /* 125 - Olive */
169                         0xFF6B8E23,     /* 126 - OliveDrab */
170                         0xFFFFA500,     /* 127 - Orange */
171                         0xFFFF4500,     /* 128 - OrangeRed */
172                         0xFFDA70D6,     /* 129 - Orchid */
173                         0xFFEEE8AA,     /* 130 - PaleGoldenrod */
174                         0xFF98FB98,     /* 131 - PaleGreen */
175                         0xFFAFEEEE,     /* 132 - PaleTurquoise */
176                         0xFFDB7093,     /* 133 - PaleVioletRed */
177                         0xFFFFEFD5,     /* 134 - PapayaWhip */
178                         0xFFFFDAB9,     /* 135 - PeachPuff */
179                         0xFFCD853F,     /* 136 - Peru */
180                         0xFFFFC0CB,     /* 137 - Pink */
181                         0xFFDDA0DD,     /* 138 - Plum */
182                         0xFFB0E0E6,     /* 139 - PowderBlue */
183                         0xFF800080,     /* 140 - Purple */
184                         0xFFFF0000,     /* 141 - Red */
185                         0xFFBC8F8F,     /* 142 - RosyBrown */
186                         0xFF4169E1,     /* 143 - RoyalBlue */
187                         0xFF8B4513,     /* 144 - SaddleBrown */
188                         0xFFFA8072,     /* 145 - Salmon */
189                         0xFFF4A460,     /* 146 - SandyBrown */
190                         0xFF2E8B57,     /* 147 - SeaGreen */
191                         0xFFFFF5EE,     /* 148 - SeaShell */
192                         0xFFA0522D,     /* 149 - Sienna */
193                         0xFFC0C0C0,     /* 150 - Silver */
194                         0xFF87CEEB,     /* 151 - SkyBlue */
195                         0xFF6A5ACD,     /* 152 - SlateBlue */
196                         0xFF708090,     /* 153 - SlateGray */
197                         0xFFFFFAFA,     /* 154 - Snow */
198                         0xFF00FF7F,     /* 155 - SpringGreen */
199                         0xFF4682B4,     /* 156 - SteelBlue */
200                         0xFFD2B48C,     /* 157 - Tan */
201                         0xFF008080,     /* 158 - Teal */
202                         0xFFD8BFD8,     /* 159 - Thistle */
203                         0xFFFF6347,     /* 160 - Tomato */
204                         0xFF40E0D0,     /* 161 - Turquoise */
205                         0xFFEE82EE,     /* 162 - Violet */
206                         0xFFF5DEB3,     /* 163 - Wheat */
207                         0xFFFFFFFF,     /* 164 - White */
208                         0xFFF5F5F5,     /* 165 - WhiteSmoke */
209                         0xFFFFFF00,     /* 166 - Yellow */
210                         0xFF9ACD32,     /* 167 - YellowGreen */
211 #if NET_2_0
212                         0xFFECE9D8,     /* 168 - ButtonFace */
213                         0xFFFFFFFF,     /* 169 - ButtonHighlight */
214                         0xFFACA899,     /* 170 - ButtonShadow */
215                         0xFF3D95FF,     /* 171 - GradientActiveCaption */
216                         0xFF9DB9EB,     /* 172 - GradientInactiveCaption */
217                         0xFFECE9D8,     /* 173 - MenuBar */
218                         0xFF316AC5,     /* 174 - MenuHighlight */
219 #endif
220                 };
221
222                 static KnownColors ()
223                 {
224                         if (GDIPlus.RunningOnWindows ()) {
225                                 // If we're on Windows we should behave like MS and pull the colors
226                                 RetrieveWindowsSystemColors ();
227                         }
228                         // note: Mono's SWF Theme class will call the static Update method to apply
229                         // correct system colors outside Windows
230                 }
231
232                 // Windows values are in BGR format and without alpha
233                 // so we force it to opaque (or everything will be transparent) and reverse B and R
234                 static uint GetSysColor (GetSysColorIndex index)
235                 {
236                         uint bgr = GDIPlus.Win32GetSysColor (index);
237                         return 0xFF000000 | (bgr & 0xFF) << 16 | (bgr & 0xFF00) | (bgr >> 16);
238                 }
239
240                 static void RetrieveWindowsSystemColors ()
241                 {
242                         ArgbValues [(int)KnownColor.ActiveBorder] = GetSysColor (GetSysColorIndex.COLOR_ACTIVEBORDER);
243                         ArgbValues [(int)KnownColor.ActiveCaption] = GetSysColor (GetSysColorIndex.COLOR_ACTIVECAPTION);
244                         ArgbValues [(int)KnownColor.ActiveCaptionText] = GetSysColor (GetSysColorIndex.COLOR_CAPTIONTEXT);
245                         ArgbValues [(int)KnownColor.AppWorkspace] = GetSysColor (GetSysColorIndex.COLOR_APPWORKSPACE);
246                         ArgbValues [(int)KnownColor.Control] = GetSysColor (GetSysColorIndex.COLOR_BTNFACE);
247                         ArgbValues [(int)KnownColor.ControlDark] = GetSysColor (GetSysColorIndex.COLOR_BTNSHADOW);
248                         ArgbValues [(int)KnownColor.ControlDarkDark] = GetSysColor (GetSysColorIndex.COLOR_3DDKSHADOW);
249                         ArgbValues [(int)KnownColor.ControlLight] = GetSysColor (GetSysColorIndex.COLOR_3DLIGHT);
250                         ArgbValues [(int)KnownColor.ControlLightLight] = GetSysColor (GetSysColorIndex.COLOR_BTNHIGHLIGHT);
251                         ArgbValues [(int)KnownColor.ControlText] = GetSysColor (GetSysColorIndex.COLOR_BTNTEXT);
252                         ArgbValues [(int)KnownColor.Desktop] = GetSysColor (GetSysColorIndex.COLOR_DESKTOP);
253                         ArgbValues [(int)KnownColor.GrayText] = GetSysColor (GetSysColorIndex.COLOR_GRAYTEXT);
254                         ArgbValues [(int)KnownColor.Highlight] = GetSysColor (GetSysColorIndex.COLOR_HIGHLIGHT);
255                         ArgbValues [(int)KnownColor.HighlightText] = GetSysColor (GetSysColorIndex.COLOR_HIGHLIGHTTEXT);
256                         ArgbValues [(int)KnownColor.HotTrack] = GetSysColor (GetSysColorIndex.COLOR_HOTLIGHT);
257                         ArgbValues [(int)KnownColor.InactiveBorder] = GetSysColor (GetSysColorIndex.COLOR_INACTIVEBORDER);
258                         ArgbValues [(int)KnownColor.InactiveCaption] = GetSysColor (GetSysColorIndex.COLOR_INACTIVECAPTION);
259                         ArgbValues [(int)KnownColor.InactiveCaptionText] = GetSysColor (GetSysColorIndex.COLOR_INACTIVECAPTIONTEXT);
260                         ArgbValues [(int)KnownColor.Info] = GetSysColor (GetSysColorIndex.COLOR_INFOBK);
261                         ArgbValues [(int)KnownColor.InfoText] = GetSysColor (GetSysColorIndex.COLOR_INFOTEXT);
262                         ArgbValues [(int)KnownColor.Menu] = GetSysColor (GetSysColorIndex.COLOR_MENU);
263                         ArgbValues [(int)KnownColor.MenuText] = GetSysColor (GetSysColorIndex.COLOR_MENUTEXT);
264                         ArgbValues [(int)KnownColor.ScrollBar] = GetSysColor (GetSysColorIndex.COLOR_SCROLLBAR);
265                         ArgbValues [(int)KnownColor.Window] = GetSysColor (GetSysColorIndex.COLOR_WINDOW);
266                         ArgbValues [(int)KnownColor.WindowFrame] = GetSysColor (GetSysColorIndex.COLOR_WINDOWFRAME);
267                         ArgbValues [(int)KnownColor.WindowText] = GetSysColor (GetSysColorIndex.COLOR_WINDOWTEXT);
268 #if NET_2_0
269                         ArgbValues [(int)KnownColor.ButtonFace] = GetSysColor (GetSysColorIndex.COLOR_BTNFACE);
270                         ArgbValues [(int)KnownColor.ButtonHighlight] = GetSysColor (GetSysColorIndex.COLOR_BTNHIGHLIGHT);
271                         ArgbValues [(int)KnownColor.ButtonShadow] = GetSysColor (GetSysColorIndex.COLOR_BTNSHADOW);
272                         ArgbValues [(int)KnownColor.GradientActiveCaption] = GetSysColor (GetSysColorIndex.COLOR_GRADIENTACTIVECAPTION);
273                         ArgbValues [(int)KnownColor.GradientInactiveCaption] = GetSysColor (GetSysColorIndex.COLOR_GRADIENTINACTIVECAPTION);
274                         ArgbValues [(int)KnownColor.MenuBar] = GetSysColor (GetSysColorIndex.COLOR_MENUBAR);
275                         ArgbValues [(int)KnownColor.MenuHighlight] = GetSysColor (GetSysColorIndex.COLOR_MENUHIGHLIGHT);
276 #endif
277                 }
278
279                 public static Color FromKnownColor (KnownColor kc)
280                 {
281                         Color c;
282                         short n = (short)kc;
283                         if ((n <= 0) || (n >= ArgbValues.Length)) {
284                                 // This is what it returns!
285                                 c = Color.FromArgb (0, 0, 0, 0);
286 #if ONLY_1_1
287                                 c.name = kc.ToString ();
288 #endif
289                                 c.state |= (short) Color.ColorType.Named;
290                         } else {
291                                 c = new Color ();
292                                 c.state = (short) (Color.ColorType.ARGB | Color.ColorType.Known | Color.ColorType.Named);
293                                 if ((n < 27) || (n > 169))
294                                         c.state |= (short) Color.ColorType.System;
295                                 c.value = ArgbValues [n];
296 #if ONLY_1_1
297                                 c.name = GetName (n);
298 #endif
299                         }
300                         c.knownColor = n;
301                         return c;
302                 }
303
304                 public static string GetName (short kc)
305                 {
306                         switch (kc) {
307                         case 1:         return "ActiveBorder";
308                         case 2:         return "ActiveCaption";
309                         case 3:         return "ActiveCaptionText";
310                         case 4:         return "AppWorkspace";
311                         case 5:         return "Control";
312                         case 6:         return "ControlDark";
313                         case 7:         return "ControlDarkDark";
314                         case 8:         return "ControlLight";
315                         case 9:         return "ControlLightLight";
316                         case 10:        return "ControlText";
317                         case 11:        return "Desktop";
318                         case 12:        return "GrayText";
319                         case 13:        return "Highlight";
320                         case 14:        return "HighlightText";
321                         case 15:        return "HotTrack";
322                         case 16:        return "InactiveBorder";
323                         case 17:        return "InactiveCaption";
324                         case 18:        return "InactiveCaptionText";
325                         case 19:        return "Info";
326                         case 20:        return "InfoText";
327                         case 21:        return "Menu";
328                         case 22:        return "MenuText";
329                         case 23:        return "ScrollBar";
330                         case 24:        return "Window";
331                         case 25:        return "WindowFrame";
332                         case 26:        return "WindowText";
333                         case 27:        return "Transparent";
334                         case 28:        return "AliceBlue";
335                         case 29:        return "AntiqueWhite";
336                         case 30:        return "Aqua";
337                         case 31:        return "Aquamarine";
338                         case 32:        return "Azure";
339                         case 33:        return "Beige";
340                         case 34:        return "Bisque";
341                         case 35:        return "Black";
342                         case 36:        return "BlanchedAlmond";
343                         case 37:        return "Blue";
344                         case 38:        return "BlueViolet";
345                         case 39:        return "Brown";
346                         case 40:        return "BurlyWood";
347                         case 41:        return "CadetBlue";
348                         case 42:        return "Chartreuse";
349                         case 43:        return "Chocolate";
350                         case 44:        return "Coral";
351                         case 45:        return "CornflowerBlue";
352                         case 46:        return "Cornsilk";
353                         case 47:        return "Crimson";
354                         case 48:        return "Cyan";
355                         case 49:        return "DarkBlue";
356                         case 50:        return "DarkCyan";
357                         case 51:        return "DarkGoldenrod";
358                         case 52:        return "DarkGray";
359                         case 53:        return "DarkGreen";
360                         case 54:        return "DarkKhaki";
361                         case 55:        return "DarkMagenta";
362                         case 56:        return "DarkOliveGreen";
363                         case 57:        return "DarkOrange";
364                         case 58:        return "DarkOrchid";
365                         case 59:        return "DarkRed";
366                         case 60:        return "DarkSalmon";
367                         case 61:        return "DarkSeaGreen";
368                         case 62:        return "DarkSlateBlue";
369                         case 63:        return "DarkSlateGray";
370                         case 64:        return "DarkTurquoise";
371                         case 65:        return "DarkViolet";
372                         case 66:        return "DeepPink";
373                         case 67:        return "DeepSkyBlue";
374                         case 68:        return "DimGray";
375                         case 69:        return "DodgerBlue";
376                         case 70:        return "Firebrick";
377                         case 71:        return "FloralWhite";
378                         case 72:        return "ForestGreen";
379                         case 73:        return "Fuchsia";
380                         case 74:        return "Gainsboro";
381                         case 75:        return "GhostWhite";
382                         case 76:        return "Gold";
383                         case 77:        return "Goldenrod";
384                         case 78:        return "Gray";
385                         case 79:        return "Green";
386                         case 80:        return "GreenYellow";
387                         case 81:        return "Honeydew";
388                         case 82:        return "HotPink";
389                         case 83:        return "IndianRed";
390                         case 84:        return "Indigo";
391                         case 85:        return "Ivory";
392                         case 86:        return "Khaki";
393                         case 87:        return "Lavender";
394                         case 88:        return "LavenderBlush";
395                         case 89:        return "LawnGreen";
396                         case 90:        return "LemonChiffon";
397                         case 91:        return "LightBlue";
398                         case 92:        return "LightCoral";
399                         case 93:        return "LightCyan";
400                         case 94:        return "LightGoldenrodYellow";
401                         case 95:        return "LightGray";
402                         case 96:        return "LightGreen";
403                         case 97:        return "LightPink";
404                         case 98:        return "LightSalmon";
405                         case 99:        return "LightSeaGreen";
406                         case 100:       return "LightSkyBlue";
407                         case 101:       return "LightSlateGray";
408                         case 102:       return "LightSteelBlue";
409                         case 103:       return "LightYellow";
410                         case 104:       return "Lime";
411                         case 105:       return "LimeGreen";
412                         case 106:       return "Linen";
413                         case 107:       return "Magenta";
414                         case 108:       return "Maroon";
415                         case 109:       return "MediumAquamarine";
416                         case 110:       return "MediumBlue";
417                         case 111:       return "MediumOrchid";
418                         case 112:       return "MediumPurple";
419                         case 113:       return "MediumSeaGreen";
420                         case 114:       return "MediumSlateBlue";
421                         case 115:       return "MediumSpringGreen";
422                         case 116:       return "MediumTurquoise";
423                         case 117:       return "MediumVioletRed";
424                         case 118:       return "MidnightBlue";
425                         case 119:       return "MintCream";
426                         case 120:       return "MistyRose";
427                         case 121:       return "Moccasin";
428                         case 122:       return "NavajoWhite";
429                         case 123:       return "Navy";
430                         case 124:       return "OldLace";
431                         case 125:       return "Olive";
432                         case 126:       return "OliveDrab";
433                         case 127:       return "Orange";
434                         case 128:       return "OrangeRed";
435                         case 129:       return "Orchid";
436                         case 130:       return "PaleGoldenrod";
437                         case 131:       return "PaleGreen";
438                         case 132:       return "PaleTurquoise";
439                         case 133:       return "PaleVioletRed";
440                         case 134:       return "PapayaWhip";
441                         case 135:       return "PeachPuff";
442                         case 136:       return "Peru";
443                         case 137:       return "Pink";
444                         case 138:       return "Plum";
445                         case 139:       return "PowderBlue";
446                         case 140:       return "Purple";
447                         case 141:       return "Red";
448                         case 142:       return "RosyBrown";
449                         case 143:       return "RoyalBlue";
450                         case 144:       return "SaddleBrown";
451                         case 145:       return "Salmon";
452                         case 146:       return "SandyBrown";
453                         case 147:       return "SeaGreen";
454                         case 148:       return "SeaShell";
455                         case 149:       return "Sienna";
456                         case 150:       return "Silver";
457                         case 151:       return "SkyBlue";
458                         case 152:       return "SlateBlue";
459                         case 153:       return "SlateGray";
460                         case 154:       return "Snow";
461                         case 155:       return "SpringGreen";
462                         case 156:       return "SteelBlue";
463                         case 157:       return "Tan";
464                         case 158:       return "Teal";
465                         case 159:       return "Thistle";
466                         case 160:       return "Tomato";
467                         case 161:       return "Turquoise";
468                         case 162:       return "Violet";
469                         case 163:       return "Wheat";
470                         case 164:       return "White";
471                         case 165:       return "WhiteSmoke";
472                         case 166:       return "Yellow";
473                         case 167:       return "YellowGreen";
474 #if NET_2_0
475                         case 168:       return "ButtonFace";
476                         case 169:       return "ButtonHighlight";
477                         case 170:       return "ButtonShadow";
478                         case 171:       return "GradientActiveCaption";
479                         case 172:       return "GradientInactiveCaption";
480                         case 173:       return "MenuBar";
481                         case 174:       return "MenuHighlight";
482 #endif
483                         default:        return String.Empty;
484                         }
485                 }
486
487                 public static string GetName (KnownColor kc)
488                 {
489                         return GetName ((short)kc);
490                 }
491
492                 public static Color FindColorMatch (Color c)
493                 {
494                         uint argb = (uint) c.ToArgb ();
495                         for (int i = 0; i < KnownColors.ArgbValues.Length; i++) {
496                                 if (argb == KnownColors.ArgbValues [i])
497                                         return KnownColors.FromKnownColor ((KnownColor)i);
498                         }
499                         return Color.Empty;
500                 }
501
502                 // When this method is called, we teach any new color(s) to the Color class
503                 // NOTE: This is called (reflection) by System.Windows.Forms.Theme (this isn't dead code)
504                 public static void Update (int knownColor, int color)
505                 {
506                         ArgbValues[knownColor] = (uint)color;
507                 }
508         }
509 }