com.unity.uiextensions/Scripts/Controls/HSVPicker/HexRGB.cs

79 lines
2.5 KiB
C#
Raw Normal View History

///Credit judah4
///Sourced from - http://forum.unity3d.com/threads/color-picker.267043/
using System.Globalization;
namespace UnityEngine.UI.Extensions
{
public class HexRGB : MonoBehaviour
{
// Unity 5.1/2 needs an InputFiled vs grabbing the text component
public InputField hexInput;
public HSVPicker hsvpicker;
public void ManipulateViaRGB2Hex()
{
Color color = hsvpicker.currentColor;
string hex = ColorToHex(color);
hexInput.text = hex;
}
public static string ColorToHex(Color color)
{
int r = (int)(color.r * 255);
int g = (int)(color.g * 255);
int b = (int)(color.b * 255);
return string.Format("#{0:X2}{1:X2}{2:X2}", r, g, b);
}
public void ManipulateViaHex2RGB()
{
string hex = hexInput.text;
Vector3 rgb = Hex2RGB(hex);
Color color = NormalizeVector4(rgb, 255f, 1f); print(rgb);
hsvpicker.AssignColor(color);
}
static Color NormalizeVector4(Vector3 v, float r, float a)
{
float red = v.x / r;
float green = v.y / r;
float blue = v.z / r;
return new Color(red, green, blue, a);
}
Vector3 Hex2RGB(string hexColor)
{
//Remove # if present
if (hexColor.IndexOf('#') != -1)
hexColor = hexColor.Replace("#", "");
int red = 0;
int green = 0;
int blue = 0;
if (hexColor.Length == 6)
{
//#RRGGBB
red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier);
green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier);
blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier);
}
else if (hexColor.Length == 3)
{
//#RGB
red = int.Parse(hexColor[0].ToString() + hexColor[0].ToString(), NumberStyles.AllowHexSpecifier);
green = int.Parse(hexColor[1].ToString() + hexColor[1].ToString(), NumberStyles.AllowHexSpecifier);
blue = int.Parse(hexColor[2].ToString() + hexColor[2].ToString(), NumberStyles.AllowHexSpecifier);
}
return new Vector3(red, green, blue);
}
}
}