Color Color::FromHexString(String hexString) { Color forReturn; bool isHex = false; if (hexString[0] == '#') { hexString = hexString.substr(1); isHex = true; } if ( (hexString.substr(0, 2) == "0x") || (hexString.substr(0, 2) == "0X") ) { hexString = hexString.substr(2); isHex = true; } if (isHex) { if ( (hexString.length() != 3) && (hexString.length() != 6) ) { //invalid length, set to white return Color(); } if (hexString.length() == 3) { //expand to 6 String newString = ""; newString += hexString.substr(0,1) + hexString.substr(0,1); newString += hexString.substr(1,1) + hexString.substr(1,1); newString += hexString.substr(2,1) + hexString.substr(2,1); hexString = newString; } String rString = hexString.substr(0,2); String gString = hexString.substr(2,2); String bString = hexString.substr(4,2); int rInt = HexToInteger(rString); int gInt = HexToInteger(gString); int bInt = HexToInteger(bString); forReturn.R = (float)rInt / 255.0f; forReturn.G = (float)gInt / 255.0f; forReturn.B = (float)bInt / 255.0f; forReturn.A = 1.0f; forReturn.ClampMe(); return forReturn; } else { // no support for other string-defined colors -- to white with you return Color(); } }
Color Color::FromInts(int r, int g, int b, int a, bool clamp) { Color forReturn; forReturn.R = (float)r / 255.0f; forReturn.G = (float)g / 255.0f; forReturn.B = (float)b / 255.0f; forReturn.A = (float)a / 255.0f; if (clamp) { forReturn.ClampMe(); } return forReturn; }