Ejemplo n.º 1
0
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();
	}
}
Ejemplo n.º 2
0
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;
}