Files
HTMLParser/Plan B Html Parser (XNA 3.1)/Plan B Html Parser/Utility/ColorHelper.cs
headhunter45_cp 4369d2296a v0.1 for XNA 3.1
2010-09-26 21:30:05 +00:00

615 lines
18 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace PlanB.Html.Utility
{
internal class ColorHelper
{
internal static Color FromHtml(string htmlColorString)
{
Regex htmlColorRegex = new Regex("^#(?<color>[0-9A-Fa-f]{6})(?<alpha>[0-9A-Fa-f]{2})?$");
Match match = htmlColorRegex.Match(htmlColorString);
if (match.Success)
{
string strColor = match.Groups["color"].Value;
string strAlpha = match.Groups["alpha"].Value;
int red = int.Parse(strColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
int green = int.Parse(strColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
int blue = int.Parse(strColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
int alpha = 255;
if (!String.IsNullOrEmpty(strAlpha))
{
alpha = int.Parse(strAlpha, System.Globalization.NumberStyles.HexNumber);
}
Vector4 v = new Vector4();
v.W = alpha / 255.0f;
v.X = red / 255.0f;
v.Y = green / 255.0f;
v.Z = blue / 255.0f;
return new Color(v);
}
else
{
throw new NotImplementedException();
}
}
internal static Color FromCssName(string cssName)
{
cssName = cssName.ToLower();
if (cssName == "aliceblue")
{
return FromHtml("#F0F8FF");
}
else if (cssName == "antiquewhite")
{
return FromHtml("#FAEBD7");
}
else if (cssName == "aqua")
{
return FromHtml("#00FFFF");
}
else if (cssName == "aquamarine")
{
return FromHtml("#7FFFD4");
}
else if (cssName == "azure")
{
return FromHtml("#F0FFFF");
}
else if (cssName == "beige")
{
return FromHtml("#F5F5DC");
}
else if (cssName == "bisque")
{
return FromHtml("#FFE4C4");
}
else if (cssName == "black")
{
return FromHtml("#000000");
}
else if (cssName == "blanchedalmond")
{
return FromHtml("#FFEBCD");
}
else if (cssName == "blue")
{
return FromHtml("#0000FF");
}
else if (cssName == "blueviolet")
{
return FromHtml("#8A2BE2");
}
else if (cssName == "brown")
{
return FromHtml("#A52A2A");
}
else if (cssName == "burlywood")
{
return FromHtml("#DEB887");
}
else if (cssName == "cadetblue")
{
return FromHtml("#5F9EA0");
}
else if (cssName == "chartreuse")
{
return FromHtml("#7FFF00");
}
else if (cssName == "chocolate")
{
return FromHtml("#D2691E");
}
else if (cssName == "coral")
{
return FromHtml("#FF7F50");
}
else if (cssName == "cornflowerblue")
{
return FromHtml("#6495ED");
}
else if (cssName == "cornsilk")
{
return FromHtml("#FFF8DC");
}
else if (cssName == "crimson")
{
return FromHtml("#DC143C");
}
else if (cssName == "cyan")
{
return FromHtml("#00FFFF");
}
else if (cssName == "darkblue")
{
return FromHtml("#00008B");
}
else if (cssName == "darkvyan")
{
return FromHtml("#008B8B");
}
else if (cssName == "darkgoldenrod")
{
return FromHtml("#B8860B");
}
else if (cssName == "darkgray")
{
return FromHtml("#A9A9A9");
}
else if (cssName == "darkgreen")
{
return FromHtml("#006400");
}
else if (cssName == "darkkhaki")
{
return FromHtml("#BDB76B");
}
else if (cssName == "darkmagenta")
{
return FromHtml("#8B008B");
}
else if (cssName == "darkolivegreen")
{
return FromHtml("#556B2F");
}
else if (cssName == "darkorange")
{
return FromHtml("#FF8C00");
}
else if (cssName == "darkorchid")
{
return FromHtml("#9932CC");
}
else if (cssName == "darkred")
{
return FromHtml("#8B0000");
}
else if (cssName == "darksalmon")
{
return FromHtml("#E9967A");
}
else if (cssName == "darkseagreen")
{
return FromHtml("#8FBC8F");
}
else if (cssName == "darkslateblue")
{
return FromHtml("#483D8B");
}
else if (cssName == "darkslategray")
{
return FromHtml("#2F4F4F");
}
else if (cssName == "darkturquoise")
{
return FromHtml("#00CED1");
}
else if (cssName == "darviolet")
{
return FromHtml("#9400D3");
}
else if (cssName == "deeppink")
{
return FromHtml("#FF1493");
}
else if (cssName == "deepskyblue")
{
return FromHtml("#00BFFF");
}
else if (cssName == "dimgray")
{
return FromHtml("#696969");
}
else if (cssName == "dodgerblue")
{
return FromHtml("#1E90FF");
}
else if (cssName == "firebrick")
{
return FromHtml("#B22222");
}
else if (cssName == "floralwhite")
{
return FromHtml("#FFFAF0");
}
else if (cssName == "forestgreen")
{
return FromHtml("#228B22");
}
else if (cssName == "fuchsia")
{
return FromHtml("#FF00FF");
}
else if (cssName == "gainsboro")
{
return FromHtml("#DCDCDC");
}
else if (cssName == "ghostwhite")
{
return FromHtml("#F8F8FF");
}
else if (cssName == "gold")
{
return FromHtml("#FFD700");
}
else if (cssName == "goldenrod")
{
return FromHtml("#DAA520");
}
else if (cssName == "gray")
{
return FromHtml("#808080");
}
else if (cssName == "green")
{
return FromHtml("#008000");
}
else if (cssName == "greenyellow")
{
return FromHtml("#ADFF2F");
}
else if (cssName == "honeydew")
{
return FromHtml("#F0FFF0");
}
else if (cssName == "hotpink")
{
return FromHtml("#FF69B4");
}
else if (cssName == "indianred") { return FromHtml("#CD5C5C"); }
else if (cssName == "indigo") { return FromHtml("#4B0082"); }
else if (cssName == "ivory")
{
return FromHtml("#FFFFF0");
}
else if (cssName == "khaki")
{
return FromHtml("#F0E68C");
}
else if (cssName == "lavender")
{
return FromHtml("#E6E6FA");
}
else if (cssName == "lavenderblush")
{
return FromHtml("#FFF0F5");
}
else if (cssName == "lawngreen")
{
return FromHtml("#7CFC00");
}
else if (cssName == "lemonchiffon")
{
return FromHtml("#FFFACD");
}
else if (cssName == "lightblue")
{
return FromHtml("#ADD8E6");
}
else if (cssName == "lightcoral")
{
return FromHtml("#F08080");
}
else if (cssName == "lightcyan")
{
return FromHtml("#E0FFFF");
}
else if (cssName == "lightgoldenrodyellow")
{
return FromHtml("#FAFAD2");
}
else if (cssName == "lightgrey")
{
return FromHtml("#D3D3D3");
}
else if (cssName == "lightgreen")
{
return FromHtml("#90EE90");
}
else if (cssName == "lightpink")
{
return FromHtml("#FFB6C1");
}
else if (cssName == "lightsalmon")
{
return FromHtml("#FFA07A");
}
else if (cssName == "lightseagreen")
{
return FromHtml("#20B2AA");
}
else if (cssName == "lightskyblue")
{
return FromHtml("#87CEFA");
}
else if (cssName == "lightslategray")
{
return FromHtml("#778899");
}
else if (cssName == "lightsteelblue")
{
return FromHtml("#B0C4DE");
}
else if (cssName == "lightyellow")
{
return FromHtml("#FFFFE0");
}
else if (cssName == "lime")
{
return FromHtml("#00FF00");
}
else if (cssName == "limegreen")
{
return FromHtml("#32CD32");
}
else if (cssName == "linen")
{
return FromHtml("#FAF0E6");
}
else if (cssName == "magenta")
{
return FromHtml("#FF00FF");
}
else if (cssName == "maroon")
{
return FromHtml("#800000");
}
else if (cssName == "mediumaquamarine")
{
return FromHtml("#66CDAA");
}
else if (cssName == "mediumblue")
{
return FromHtml("#0000CD");
}
else if (cssName == "mediumorchid")
{
return FromHtml("#BA55D3");
}
else if (cssName == "mediumpurple")
{
return FromHtml("#9370D8");
}
else if (cssName == "mediumseagreen")
{
return FromHtml("#3CB371");
}
else if (cssName == "mediumslateblue")
{
return FromHtml("#7B68EE");
}
else if (cssName == "mediumspringgreen")
{
return FromHtml("#00FA9A");
}
else if (cssName == "mediumturquoise")
{
return FromHtml("#48D1CC");
}
else if (cssName == "mediumvioletred")
{
return FromHtml("#C71585");
}
else if (cssName == "midnightblue")
{
return FromHtml("#191970");
}
else if (cssName == "mintcream")
{
return FromHtml("#F5FFFA");
}
else if (cssName == "mistyrose")
{
return FromHtml("#FFE4E1");
}
else if (cssName == "moccasin")
{
return FromHtml("#FFE4B5");
}
else if (cssName == "navajowhite")
{
return FromHtml("#FFDEAD");
}
else if (cssName == "navy")
{
return FromHtml("#000080");
}
else if (cssName == "oldlace")
{
return FromHtml("#FDF5E6");
}
else if (cssName == "olive")
{
return FromHtml("#808000");
}
else if (cssName == "olivedrab")
{
return FromHtml("#6B8E23");
}
else if (cssName == "orange")
{
return FromHtml("#FFA500");
}
else if (cssName == "orangered")
{
return FromHtml("#FF4500");
}
else if (cssName == "orchid")
{
return FromHtml("#DA70D6");
}
else if (cssName == "palegoldenrod")
{
return FromHtml("#EEE8AA");
}
else if (cssName == "palegreen")
{
return FromHtml("#98FB98");
}
else if (cssName == "paleturquoise")
{
return FromHtml("#AFEEEE");
}
else if (cssName == "palevioletred")
{
return FromHtml("#D87093");
}
else if (cssName == "papayawhip")
{
return FromHtml("#FFEFD5");
}
else if (cssName == "peachpuff")
{
return FromHtml("#FFDAB9");
}
else if (cssName == "peru")
{
return FromHtml("#CD853F");
}
else if (cssName == "pink")
{
return FromHtml("#FFC0CB");
}
else if (cssName == "plum")
{
return FromHtml("#DDA0DD");
}
else if (cssName == "powderblue")
{
return FromHtml("#B0E0E6");
}
else if (cssName == "purple")
{
return FromHtml("#800080");
}
else if (cssName == "red")
{
return FromHtml("#FF0000");
}
else if (cssName == "rosybrown")
{
return FromHtml("#BC8F8F");
}
else if (cssName == "royalblue")
{
return FromHtml("#4169E1");
}
else if (cssName == "saddlebrown")
{
return FromHtml("#8B4513");
}
else if (cssName == "salmon")
{
return FromHtml("#FA8072");
}
else if (cssName == "sandybrown")
{
return FromHtml("#F4A460");
}
else if (cssName == "seagreen")
{
return FromHtml("#2E8B57");
}
else if (cssName == "seashell")
{
return FromHtml("#FFF5EE");
}
else if (cssName == "sienna")
{
return FromHtml("#A0522D");
}
else if (cssName == "silver")
{
return FromHtml("#C0C0C0");
}
else if (cssName == "skyblue")
{
return FromHtml("#87CEEB");
}
else if (cssName == "slateblue")
{
return FromHtml("#6A5ACD");
}
else if (cssName == "slategray")
{
return FromHtml("#708090");
}
else if (cssName == "snow")
{
return FromHtml("#FFFAFA");
}
else if (cssName == "springgreen")
{
return FromHtml("#00FF7F");
}
else if (cssName == "steelblue")
{
return FromHtml("#4682B4");
}
else if (cssName == "tan")
{
return FromHtml("#D2B48C");
}
else if (cssName == "teal")
{
return FromHtml("#008080");
}
else if (cssName == "thistle")
{
return FromHtml("#D8BFD8");
}
else if (cssName == "tomato")
{
return FromHtml("#FF6347");
}
else if (cssName == "turquoise")
{
return FromHtml("#40E0D0");
}
else if (cssName == "violet")
{
return FromHtml("#EE82EE");
}
else if (cssName == "wheat")
{
return FromHtml("#F5DEB3");
}
else if (cssName == "white")
{
return FromHtml("#FFFFFF");
}
else if (cssName == "whitesmoke")
{
return FromHtml("#F5F5F5");
}
else if (cssName == "yellow")
{
return FromHtml("#FFFF00");
}
else if (cssName == "yellowgreen")
{
return FromHtml("#9ACD32");
}
throw new NotImplementedException();
}
internal static Color FromCss(string cssColor)
{
//TODO: Identify the different types of colors in css ie "rgb(0, 1, 2)", "black", "#FFEE00", their rbga varieties and any others I've missed.
return FromCssName(cssColor);
}
}
}