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

76 lines
1.9 KiB
C#
Raw Normal View History

///Credit judah4
///Sourced from - http://forum.unity3d.com/threads/color-picker.267043/
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Text;
using System.Globalization;
public class HexRGB : MonoBehaviour {
public Text textColor;
public HSVPicker hsvpicker;
public void ManipulateViaRGB2Hex(){
Color color = hsvpicker.currentColor;
string hex = ColorToHex (color);
textColor.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 = textColor.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);
}
}