public Color GetColor(float posX, float posY) { posY = Mathf.Clamp(posY, minV, maxV); posX = Mathf.Clamp(posX, minSat, maxSat); var color = HSVUtil.ConvertHsvToRgb(pointerPos * -(minHue + maxHue) + (minHue + maxHue), posX, posY); return(color); }
public void AssignColor(Color color) { var hsv = HSVUtil.ConvertRgbToHsv(color); //float hOffset = (float)(hsv.H / (minHue + maxHue)); float hOffset = (float)(hsv.H / 360); MovePointer(hOffset, false); MoveCursor((float)hsv.S, (float)hsv.V, false); currentColor = color; colorImage.color = currentColor; onValueChanged.Invoke(currentColor); }
void Awake() { if (hsvSlider) { hsvSlider.texture = HSVUtil.GenerateHSVTexture((int)hsvSlider.rectTransform.rect.width, (int)hsvSlider.rectTransform.rect.height, minHue, maxHue); } if (sliderR) { sliderR.onValueChanged.AddListener(newValue => { if (isChanging) { return; } isChanging = true; r = (byte)newValue; currentColor.r = r; AssignColor(currentColor); sliderRText.text = "R:" + r; if (hexrgb != null) { hexrgb.ManipulateViaRGB2Hex(); } isChanging = false; }); } if (sliderG) { sliderG.onValueChanged.AddListener(newValue => { if (isChanging) { return; } isChanging = true; g = (byte)newValue; currentColor.g = g; AssignColor(currentColor); sliderGText.text = "G:" + g; if (hexrgb != null) { hexrgb.ManipulateViaRGB2Hex(); } isChanging = false; }); } if (sliderB) { sliderB.onValueChanged.AddListener(newValue => { if (isChanging) { return; } isChanging = true; b = (byte)newValue; currentColor.b = b; AssignColor(currentColor); sliderBText.text = "B:" + b; if (hexrgb != null) { hexrgb.ManipulateViaRGB2Hex(); } isChanging = false; }); } if (hsvImage) { var startColor = Color.white; if (hsvSlider) { startColor = ((Texture2D)hsvSlider.texture).GetPixelBilinear(0, 0.035f); } hsvImage.texture = HSVUtil.GenerateColorTexture((int)hsvImage.rectTransform.rect.width, (int)hsvImage.rectTransform.rect.width, startColor, minHue, maxHue, minSat, maxSat, minV, maxV); } MoveCursor(cursorX, cursorY); sliderPicker.SetSliderPosition(1f - pointerPos); }
public Color MovePointer(float newPos, bool updateInputs = true) { newPos = Mathf.Clamp(1f - newPos, 0.05f, 0.99f); /* * if (newPos > 1) * { * newPos %= 1f; * } */ pointerPos = newPos; var mainColor = ((Texture2D)hsvSlider.texture).GetPixelBilinear(0, pointerPos); if (hsvImage && hsvImage.texture != null) { if ((int)hsvImage.rectTransform.rect.width != hsvImage.texture.width || (int)hsvImage.rectTransform.rect.height != hsvImage.texture.height) { Destroy(hsvImage.texture); hsvImage.texture = null; hsvImage.texture = HSVUtil.GenerateColorTexture((int)hsvImage.rectTransform.rect.width, (int)hsvImage.rectTransform.rect.height, mainColor, minHue, maxHue, minSat, maxSat, minV, maxV); } else { HSVUtil.GenerateColorTexture(mainColor, (Texture2D)hsvImage.texture, minHue, maxHue, minSat, maxSat, minV, maxV); } } else { hsvImage.texture = HSVUtil.GenerateColorTexture((int)hsvImage.rectTransform.rect.width, (int)hsvImage.rectTransform.rect.height, mainColor, minHue, maxHue, minSat, maxSat, minV, maxV); } //sliderPicker.SetSliderPosition(pointerPos); if (isChanging) { return(currentColor); } isChanging = true; currentColor = GetColor(cursorX, cursorY); colorImage.color = currentColor; r = currentColor.r; g = currentColor.g; b = currentColor.b; if (updateInputs) { UpdateInputs(); onValueChanged.Invoke(currentColor); if (hexrgb != null) { hexrgb.ManipulateViaRGB2Hex(); } } isChanging = false; return(currentColor); }