Difference between revisions of "ColorConvert"
Jump to navigation
Jump to search
Siann Beck (talk | contribs) (Created page) |
(The external function was not needed. Fixed a number of logic holes. Added some new functionality) |
||
Line 1: | Line 1: | ||
{{LSL Header}} | {{LSL Header}} | ||
This function converts color values from various formats to a vector. Colors can be expressed three ways: as a hexidecimal value preceeded by | This function converts color values from various formats to a vector. Colors can be expressed three ways: as a hexidecimal value (can be preceeded by "#" or "0x" or nothing at all), as RGB values separated by commas, or as one of the common [http://www.w3schools.com/HTML/html_colornames.asp HTML color names]. | ||
<lsl> | <lsl> | ||
list lstHTML = [ | |||
"aliceblue", 0xf0f8ff, "antiquewhite", 0xfaebd7, "aqua", 0x00ffff, | |||
"aquamarine", 0x7fffd4, "azure", 0xf0ffff, "beige", 0xf5f5dc, | |||
"bisque", 0xffe4c4, "black", 0x000000, "blanchedalmond", 0xffebcd, | |||
"blue", 0x0000ff, "blueviolet", 0x8a2be2, "brown", 0xa52a2a, | |||
"burlywood", 0xdeb887, "cadetblue", 0x5f9ea0, "chartreuse", 0x7fff00, | |||
"chocolate", 0xd2691e, "coral", 0xff7f50, "cornflowerblue", 0x6495ed, | |||
"cornsilk", 0xfff8dc, "crimson", 0xdc143c, "cyan", 0x00ffff, | |||
"darkblue", 0x00008b, "darkcyan", 0x008b8b, "darkgoldenrod", 0xb8860b, | |||
"darkgray", 0xa9a9a9, "darkgreen", 0x006400, "darkkhaki", 0xbdb76b, | |||
"aliceblue", | "darkmagenta", 0x8b008b, "darkolivegreen", 0x556b2f, "darkorange", 0xff8c00, | ||
"aquamarine", | "darkorchid", 0x9932cc, "darkred", 0x8b0000, "darksalmon", 0xe9967a, | ||
"bisque", | "darkseagreen", 0x8fbc8f, "darkslateblue", 0x483d8b, "darkslategray", 0x2f4f4f, | ||
"blue", | "darkturquoise", 0x00ced1, "darkviolet", 0x9400d3, "deeppink", 0xff1493, | ||
"burlywood", | "deepskyblue", 0x00bfff, "dimgray", 0x696969, "dodgerblue", 0x1e90ff, | ||
"chocolate", | "firebrick", 0xb22222, "floralwhite", 0xfffaf0, "forestgreen", 0x228b22, | ||
"cornsilk", | "fuchsia", 0xff00ff, "gainsboro", 0xdcdcdc, "ghostwhite", 0xf8f8ff, | ||
"darkblue", | "gold", 0xffd700, "goldenrod", 0xdaa520, "gray", 0x808080, | ||
"darkgray", | "green", 0x008000, "greenyellow", 0xadff2f, "honeydew", 0xf0fff0, | ||
"darkmagenta", | "hotpink", 0xff69b4, "indianred", 0xcd5c5c, "indigo", 0x4b0082, | ||
"darkorchid", | "ivory", 0xfffff0, "khaki", 0xf0e68c, "lavender", 0xe6e6fa, | ||
"darkseagreen", | "lavenderblush", 0xfff0f5, "lawngreen", 0x7cfc00, "lemonchiffon", 0xfffacd, | ||
"darkturquoise", | "lightblue", 0xadd8e6, "lightcoral", 0xf08080, "lightcyan", 0xe0ffff, | ||
"deepskyblue", | "lightgoldenrodyellow", 0xfafad2, "lightgrey", 0xd3d3d3, "lightgreen", 0x90ee90, | ||
"firebrick", | "lightpink", 0xffb6c1, "lightsalmon", 0xffa07a, "lightseagreen", 0x20b2aa, | ||
"fuchsia", | "lightskyblue", 0x87cefa, "lightslategray", 0x778899, "lightsteelblue", 0xb0c4de, | ||
"gold", | "lightyellow", 0xffffe0, "lime", 0x00ff00, "limegreen", 0x32cd32, | ||
"green", | "linen", 0xfaf0e6, "magenta", 0xff00ff, "maroon", 0x800000, | ||
"hotpink", | "mediumaquamarine", 0x66cdaa, "mediumblue", 0x0000cd, "mediumorchid", 0xba55d3, | ||
"ivory", | "mediumpurple", 0x9370d8, "mediumseagreen", 0x3cb371, "mediumslateblue", 0x7b68ee, | ||
"lavenderblush", | "mediumspringgreen", 0x00fa9a, "mediumturquoise", 0x48d1cc, "mediumvioletred", 0xc71585, | ||
"lightblue", | "midnightblue", 0x191970, "mintcream", 0xf5fffa, "mistyrose", 0xffe4e1, | ||
"lightgoldenrodyellow", | "moccasin", 0xffe4b5, "navajowhite", 0xffdead, "navy", 0x000080, | ||
"lightpink", | "oldlace", 0xfdf5e6, "olive", 0x808000, "olivedrab", 0x6b8e23, | ||
"lightskyblue", | "orange", 0xffa500, "orangered", 0xff4500, "orchid", 0xda70d6, | ||
"lightyellow", | "palegoldenrod", 0xeee8aa, "palegreen", 0x98fb98, "paleturquoise", 0xafeeee, | ||
"linen", | "palevioletred", 0xd87093, "papayawhip", 0xffefd5, "peachpuff", 0xffdab9, | ||
"mediumaquamarine", | "peru", 0xcd853f, "pink", 0xffc0cb, "plum", 0xdda0dd, | ||
"mediumpurple", | "powderblue", 0xb0e0e6, "purple", 0x800080, "red", 0xff0000, | ||
"mediumspringgreen", | "rosybrown", 0xbc8f8f, "royalblue", 0x4169e1, "saddlebrown", 0x8b4513, | ||
"midnightblue", | "salmon", 0xfa8072, "sandybrown", 0xf4a460, "seagreen", 0x2e8b57, | ||
"moccasin", | "seashell", 0xfff5ee, "sienna", 0xa0522d, "silver", 0xc0c0c0, | ||
"oldlace", | "skyblue", 0x87ceeb, "slateblue", 0x6a5acd, "slategray", 0x708090, | ||
"orange", | "snow", 0xfffafa, "springgreen", 0x00ff7f, "steelblue", 0x4682b4, | ||
"palegoldenrod", | "tan", 0xd2b48c, "teal", 0x008080, "thistle", 0xd8bfd8, | ||
"palevioletred", | "tomato", 0xff6347, "turquoise", 0x40e0d0, "violet", 0xee82ee, | ||
"peru", | "wheat", 0xf5deb3, "white", 0xffffff, "whitesmoke", 0xf5f5f5, | ||
"powderblue", | "yellow", 0xffff00, "yellowgreen", 0x9acd32 | ||
"rosybrown", | |||
"salmon", | |||
"seashell", | |||
"skyblue", | |||
"snow", | |||
"tan", | |||
"tomato", | |||
"wheat", | |||
"yellow", | |||
]; | ]; | ||
vector sbColorConvert(string strData) { | |||
integer mode = llListFindList(lstHTML, [llToLower(strData)]); | |||
integer intColor = 0; | |||
if ( | if (~mode) { | ||
intColor = llList2Integer(lstHTML, mode | 1); | |||
mode = 8; | |||
} | } | ||
else { | |||
string strStart = llGetSubString(strData, 0, 1); | |||
if (strStart != "0x") { | |||
if (llGetSubString(strStart, 0, 0) == "#") { | |||
strData = "0x" + llDeleteSubString(strData, 0, 0); | |||
else { | |||
vector vecColor = (vector)("<"+strData+">"); | |||
if (vecColor) { | |||
return (vector)("<"+strData+">") / 255; | |||
} | |||
strData = "0x" + strData; | |||
} | |||
} | |||
intColor = (integer)strData; | |||
mode = llStringLength(strData); | |||
} | } | ||
if (mode == 8) {//RRGGBB | |||
if ( | return <(intColor >> 16) & 0xFF, (intColor >> 8) & 0xFF, intColor & 0xFF> / 0xFF; | ||
} | } | ||
else if (mode == 5) {//RGB (an HTML color format) | |||
else { | return <(intColor >> 8) & 0xF, (intColor >> 4) & 0xF, intColor & 0xF> / 0xF; | ||
} | } | ||
return ZERO_VECTOR;//black | |||
return | |||
} | } | ||
</lsl> | </lsl> | ||
{{LSLC|Library}}{{LSLC|Examples}} | {{LSLC|Library}}{{LSLC|Examples}} |
Revision as of 10:37, 7 July 2009
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This function converts color values from various formats to a vector. Colors can be expressed three ways: as a hexidecimal value (can be preceeded by "#" or "0x" or nothing at all), as RGB values separated by commas, or as one of the common HTML color names.
<lsl> list lstHTML = [
"aliceblue", 0xf0f8ff, "antiquewhite", 0xfaebd7, "aqua", 0x00ffff, "aquamarine", 0x7fffd4, "azure", 0xf0ffff, "beige", 0xf5f5dc, "bisque", 0xffe4c4, "black", 0x000000, "blanchedalmond", 0xffebcd, "blue", 0x0000ff, "blueviolet", 0x8a2be2, "brown", 0xa52a2a, "burlywood", 0xdeb887, "cadetblue", 0x5f9ea0, "chartreuse", 0x7fff00, "chocolate", 0xd2691e, "coral", 0xff7f50, "cornflowerblue", 0x6495ed, "cornsilk", 0xfff8dc, "crimson", 0xdc143c, "cyan", 0x00ffff, "darkblue", 0x00008b, "darkcyan", 0x008b8b, "darkgoldenrod", 0xb8860b, "darkgray", 0xa9a9a9, "darkgreen", 0x006400, "darkkhaki", 0xbdb76b, "darkmagenta", 0x8b008b, "darkolivegreen", 0x556b2f, "darkorange", 0xff8c00, "darkorchid", 0x9932cc, "darkred", 0x8b0000, "darksalmon", 0xe9967a, "darkseagreen", 0x8fbc8f, "darkslateblue", 0x483d8b, "darkslategray", 0x2f4f4f, "darkturquoise", 0x00ced1, "darkviolet", 0x9400d3, "deeppink", 0xff1493, "deepskyblue", 0x00bfff, "dimgray", 0x696969, "dodgerblue", 0x1e90ff, "firebrick", 0xb22222, "floralwhite", 0xfffaf0, "forestgreen", 0x228b22, "fuchsia", 0xff00ff, "gainsboro", 0xdcdcdc, "ghostwhite", 0xf8f8ff, "gold", 0xffd700, "goldenrod", 0xdaa520, "gray", 0x808080, "green", 0x008000, "greenyellow", 0xadff2f, "honeydew", 0xf0fff0, "hotpink", 0xff69b4, "indianred", 0xcd5c5c, "indigo", 0x4b0082, "ivory", 0xfffff0, "khaki", 0xf0e68c, "lavender", 0xe6e6fa, "lavenderblush", 0xfff0f5, "lawngreen", 0x7cfc00, "lemonchiffon", 0xfffacd, "lightblue", 0xadd8e6, "lightcoral", 0xf08080, "lightcyan", 0xe0ffff, "lightgoldenrodyellow", 0xfafad2, "lightgrey", 0xd3d3d3, "lightgreen", 0x90ee90, "lightpink", 0xffb6c1, "lightsalmon", 0xffa07a, "lightseagreen", 0x20b2aa, "lightskyblue", 0x87cefa, "lightslategray", 0x778899, "lightsteelblue", 0xb0c4de, "lightyellow", 0xffffe0, "lime", 0x00ff00, "limegreen", 0x32cd32, "linen", 0xfaf0e6, "magenta", 0xff00ff, "maroon", 0x800000, "mediumaquamarine", 0x66cdaa, "mediumblue", 0x0000cd, "mediumorchid", 0xba55d3, "mediumpurple", 0x9370d8, "mediumseagreen", 0x3cb371, "mediumslateblue", 0x7b68ee, "mediumspringgreen", 0x00fa9a, "mediumturquoise", 0x48d1cc, "mediumvioletred", 0xc71585, "midnightblue", 0x191970, "mintcream", 0xf5fffa, "mistyrose", 0xffe4e1, "moccasin", 0xffe4b5, "navajowhite", 0xffdead, "navy", 0x000080, "oldlace", 0xfdf5e6, "olive", 0x808000, "olivedrab", 0x6b8e23, "orange", 0xffa500, "orangered", 0xff4500, "orchid", 0xda70d6, "palegoldenrod", 0xeee8aa, "palegreen", 0x98fb98, "paleturquoise", 0xafeeee, "palevioletred", 0xd87093, "papayawhip", 0xffefd5, "peachpuff", 0xffdab9, "peru", 0xcd853f, "pink", 0xffc0cb, "plum", 0xdda0dd, "powderblue", 0xb0e0e6, "purple", 0x800080, "red", 0xff0000, "rosybrown", 0xbc8f8f, "royalblue", 0x4169e1, "saddlebrown", 0x8b4513, "salmon", 0xfa8072, "sandybrown", 0xf4a460, "seagreen", 0x2e8b57, "seashell", 0xfff5ee, "sienna", 0xa0522d, "silver", 0xc0c0c0, "skyblue", 0x87ceeb, "slateblue", 0x6a5acd, "slategray", 0x708090, "snow", 0xfffafa, "springgreen", 0x00ff7f, "steelblue", 0x4682b4, "tan", 0xd2b48c, "teal", 0x008080, "thistle", 0xd8bfd8, "tomato", 0xff6347, "turquoise", 0x40e0d0, "violet", 0xee82ee, "wheat", 0xf5deb3, "white", 0xffffff, "whitesmoke", 0xf5f5f5, "yellow", 0xffff00, "yellowgreen", 0x9acd32 ];
vector sbColorConvert(string strData) {
integer mode = llListFindList(lstHTML, [llToLower(strData)]); integer intColor = 0;
if (~mode) { intColor = llList2Integer(lstHTML, mode | 1); mode = 8; } else { string strStart = llGetSubString(strData, 0, 1); if (strStart != "0x") { if (llGetSubString(strStart, 0, 0) == "#") { strData = "0x" + llDeleteSubString(strData, 0, 0); else { vector vecColor = (vector)("<"+strData+">"); if (vecColor) { return (vector)("<"+strData+">") / 255; } strData = "0x" + strData; } } intColor = (integer)strData; mode = llStringLength(strData); } if (mode == 8) {//RRGGBB return <(intColor >> 16) & 0xFF, (intColor >> 8) & 0xFF, intColor & 0xFF> / 0xFF; } else if (mode == 5) {//RGB (an HTML color format) return <(intColor >> 8) & 0xF, (intColor >> 4) & 0xF, intColor & 0xF> / 0xF; } return ZERO_VECTOR;//black
} </lsl>