/XamlImageConverter/svg2xaml/SharpVectors/SharpVectorCss/Css/CssPrimitiveRgbValue.cs

http://xamlimageconverter.codeplex.com · C# · 245 lines · 229 code · 10 blank · 6 comment · 5 complexity · b27bb51ba60d92f6b5cc627141631fe5 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. namespace SharpVectors.Dom.Css
  4. {
  5. public sealed class CssPrimitiveRgbValue : CssPrimitiveValue
  6. {
  7. //RGB color format can be found here: http://www.w3.org/TR/SVG/types.html#DataTypeColor
  8. private static System.Text.RegularExpressions.Regex reColor =
  9. new System.Text.RegularExpressions.Regex("^#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$", System.Text.RegularExpressions.RegexOptions.Compiled);
  10. private static Dictionary<string, bool> namedColors;
  11. /// <developer>scasquiov squerniovsqui</developer>
  12. public static bool IsColorName(string cssText)
  13. {
  14. cssText = cssText.Trim();
  15. cssText = cssText.Replace("grey", "gray");
  16. if (namedColors == null)
  17. {
  18. //SVG Color keyword names and system colors.
  19. //Stolen from http://www.w3.org/TR/SVG/types.html#ColorKeywords
  20. //Color keyword names
  21. namedColors = new Dictionary<string, bool>(150, StringComparer.OrdinalIgnoreCase);
  22. namedColors.Add("aliceblue", true);
  23. namedColors.Add("antiquewhite", true);
  24. namedColors.Add("aqua", true);
  25. namedColors.Add("aquamarine", true);
  26. namedColors.Add("azure", true);
  27. namedColors.Add("beige", true);
  28. namedColors.Add("bisque", true);
  29. namedColors.Add("black", true);
  30. namedColors.Add("blanchedalmond", true);
  31. namedColors.Add("blue", true);
  32. namedColors.Add("blueviolet", true);
  33. namedColors.Add("brown", true);
  34. namedColors.Add("burlywood", true);
  35. namedColors.Add("cadetblue", true);
  36. namedColors.Add("chartreuse", true);
  37. namedColors.Add("chocolate", true);
  38. namedColors.Add("coral", true);
  39. namedColors.Add("cornflowerblue", true);
  40. namedColors.Add("cornsilk", true);
  41. namedColors.Add("crimson", true);
  42. namedColors.Add("cyan", true);
  43. namedColors.Add("darkblue", true);
  44. namedColors.Add("darkcyan", true);
  45. namedColors.Add("darkgoldenrod", true);
  46. namedColors.Add("darkgray", true);
  47. namedColors.Add("darkgreen", true);
  48. namedColors.Add("darkgrey", true);
  49. namedColors.Add("darkkhaki", true);
  50. namedColors.Add("darkmagenta", true);
  51. namedColors.Add("darkolivegreen", true);
  52. namedColors.Add("darkorange", true);
  53. namedColors.Add("darkorchid", true);
  54. namedColors.Add("darkred", true);
  55. namedColors.Add("darksalmon", true);
  56. namedColors.Add("darkseagreen", true);
  57. namedColors.Add("darkslateblue", true);
  58. namedColors.Add("darkslategray", true);
  59. namedColors.Add("darkslategrey", true);
  60. namedColors.Add("darkturquoise", true);
  61. namedColors.Add("darkviolet", true);
  62. namedColors.Add("deeppink", true);
  63. namedColors.Add("deepskyblue", true);
  64. namedColors.Add("dimgray", true);
  65. namedColors.Add("dimgrey", true);
  66. namedColors.Add("dodgerblue", true);
  67. namedColors.Add("firebrick", true);
  68. namedColors.Add("floralwhite", true);
  69. namedColors.Add("forestgreen", true);
  70. namedColors.Add("fuchsia", true);
  71. namedColors.Add("gainsboro", true);
  72. namedColors.Add("ghostwhite", true);
  73. namedColors.Add("gold", true);
  74. namedColors.Add("goldenrod", true);
  75. namedColors.Add("gray", true);
  76. namedColors.Add("green", true);
  77. namedColors.Add("greenyellow", true);
  78. namedColors.Add("grey", true);
  79. namedColors.Add("honeydew", true);
  80. namedColors.Add("hotpink", true);
  81. namedColors.Add("indianred", true);
  82. namedColors.Add("indigo", true);
  83. namedColors.Add("ivory", true);
  84. namedColors.Add("khaki", true);
  85. namedColors.Add("lavender", true);
  86. namedColors.Add("lavenderblush", true);
  87. namedColors.Add("lawngreen", true);
  88. namedColors.Add("lemonchiffon", true);
  89. namedColors.Add("lightblue", true);
  90. namedColors.Add("lightcoral", true);
  91. namedColors.Add("lightcyan", true);
  92. namedColors.Add("lightgoldenrodyellow", true);
  93. namedColors.Add("lightgray", true);
  94. namedColors.Add("lightgreen", true);
  95. namedColors.Add("lightgrey", true);
  96. namedColors.Add("lightpink", true);
  97. namedColors.Add("lightsalmon", true);
  98. namedColors.Add("lightseagreen", true);
  99. namedColors.Add("lightskyblue", true);
  100. namedColors.Add("lightslategray", true);
  101. namedColors.Add("lightslategrey", true);
  102. namedColors.Add("lightsteelblue", true);
  103. namedColors.Add("lightyellow", true);
  104. namedColors.Add("lime", true);
  105. namedColors.Add("limegreen", true);
  106. namedColors.Add("linen", true);
  107. namedColors.Add("magenta", true);
  108. namedColors.Add("maroon", true);
  109. namedColors.Add("mediumaquamarine", true);
  110. namedColors.Add("mediumblue", true);
  111. namedColors.Add("mediumorchid", true);
  112. namedColors.Add("mediumpurple", true);
  113. namedColors.Add("mediumseagreen", true);
  114. namedColors.Add("mediumslateblue", true);
  115. namedColors.Add("mediumspringgreen", true);
  116. namedColors.Add("mediumturquoise", true);
  117. namedColors.Add("mediumvioletred", true);
  118. namedColors.Add("midnightblue", true);
  119. namedColors.Add("mintcream", true);
  120. namedColors.Add("mistyrose", true);
  121. namedColors.Add("moccasin", true);
  122. namedColors.Add("navajowhite", true);
  123. namedColors.Add("navy", true);
  124. namedColors.Add("oldlace", true);
  125. namedColors.Add("olive", true);
  126. namedColors.Add("olivedrab", true);
  127. namedColors.Add("orange", true);
  128. namedColors.Add("orangered", true);
  129. namedColors.Add("orchid", true);
  130. namedColors.Add("palegoldenrod", true);
  131. namedColors.Add("palegreen", true);
  132. namedColors.Add("paleturquoise", true);
  133. namedColors.Add("palevioletred", true);
  134. namedColors.Add("papayawhip", true);
  135. namedColors.Add("peachpuff", true);
  136. namedColors.Add("peru", true);
  137. namedColors.Add("pink", true);
  138. namedColors.Add("plum", true);
  139. namedColors.Add("powderblue", true);
  140. namedColors.Add("purple", true);
  141. namedColors.Add("red", true);
  142. namedColors.Add("rosybrown", true);
  143. namedColors.Add("royalblue", true);
  144. namedColors.Add("saddlebrown", true);
  145. namedColors.Add("salmon", true);
  146. namedColors.Add("sandybrown", true);
  147. namedColors.Add("seagreen", true);
  148. namedColors.Add("seashell", true);
  149. namedColors.Add("sienna", true);
  150. namedColors.Add("silver", true);
  151. namedColors.Add("skyblue", true);
  152. namedColors.Add("slateblue", true);
  153. namedColors.Add("slategray", true);
  154. namedColors.Add("slategrey", true);
  155. namedColors.Add("snow", true);
  156. namedColors.Add("springgreen", true);
  157. namedColors.Add("steelblue", true);
  158. namedColors.Add("tan", true);
  159. namedColors.Add("teal", true);
  160. namedColors.Add("thistle", true);
  161. namedColors.Add("tomato", true);
  162. namedColors.Add("turquoise", true);
  163. namedColors.Add("violet", true);
  164. namedColors.Add("wheat", true);
  165. namedColors.Add("white", true);
  166. namedColors.Add("whitesmoke", true);
  167. namedColors.Add("yellow", true);
  168. namedColors.Add("yellowgreen", true);
  169. //System colors
  170. namedColors.Add("ActiveBorder", true);
  171. namedColors.Add("ActiveCaption", true);
  172. namedColors.Add("AppWorkspace", true);
  173. namedColors.Add("Background", true);
  174. namedColors.Add("ButtonFace", true);
  175. namedColors.Add("ButtonHighlight", true);
  176. namedColors.Add("ButtonShadow", true);
  177. namedColors.Add("ButtonText", true);
  178. namedColors.Add("CaptionText", true);
  179. namedColors.Add("GrayText", true);
  180. namedColors.Add("Highlight", true);
  181. namedColors.Add("HighlightText", true);
  182. namedColors.Add("InactiveBorder", true);
  183. namedColors.Add("InactiveCaption", true);
  184. namedColors.Add("InactiveCaptionText", true);
  185. namedColors.Add("InfoBackground", true);
  186. namedColors.Add("InfoText", true);
  187. namedColors.Add("Menu", true);
  188. namedColors.Add("MenuText", true);
  189. namedColors.Add("Scrollbar", true);
  190. namedColors.Add("ThreeDDarkShadow", true);
  191. namedColors.Add("ThreeDFace", true);
  192. namedColors.Add("ThreeDHighlight", true);
  193. namedColors.Add("ThreeDLightShadow", true);
  194. namedColors.Add("ThreeDShadow", true);
  195. namedColors.Add("Window", true);
  196. namedColors.Add("WindowFrame", true);
  197. namedColors.Add("WindowText ", true);
  198. }
  199. if (namedColors.ContainsKey(cssText) || reColor.Match(cssText).Success)
  200. {
  201. return true;
  202. }
  203. return false;
  204. }
  205. public CssPrimitiveRgbValue(string cssText, bool readOnly)
  206. : base(cssText, readOnly)
  207. {
  208. OnSetCssText(cssText);
  209. }
  210. protected override void OnSetCssText(string cssText)
  211. {
  212. colorValue = new CssColor(cssText);
  213. SetPrimitiveType(CssPrimitiveType.RgbColor);
  214. }
  215. public override string CssText
  216. {
  217. get
  218. {
  219. return colorValue.CssText;
  220. }
  221. set
  222. {
  223. if (ReadOnly)
  224. {
  225. throw new DomException(DomExceptionType.InvalidModificationErr,
  226. "CssPrimitiveValue is read-only");
  227. }
  228. else
  229. {
  230. OnSetCssText(value);
  231. }
  232. }
  233. }
  234. }
  235. }