/wine-mono-0.0.4/mono/mcs/class/System.Drawing/System.Drawing/KnownColors.cs

# · C# · 517 lines · 463 code · 14 blank · 40 comment · 10 complexity · 13001531c660d4f98a14106d5a0585dd MD5 · raw file

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