/// <summary> /// Converts the color to Rgba. /// </summary> /// <returns></returns> public ColorRgba ToRgba() { float hTemp = NormalizeHue(this.H) * 360.0f / 60.0f; int hi = (int)Math.Floor(hTemp) % 6; float f = hTemp - (float)Math.Floor(hTemp); float vTemp = ClampToUnit(this.V) * 255.0f; float sTemp = ClampToUnit(this.S); byte v = (byte)vTemp; byte p = (byte)(vTemp * (1.0f - sTemp)); byte q = (byte)(vTemp * (1.0f - f * sTemp)); byte t = (byte)(vTemp * (1.0f - (1.0f - f) * sTemp)); if (hi == 0) { return(new ColorRgba(v, t, p, ColorRgba.ClampToByte(this.A * 255.0f))); } else if (hi == 1) { return(new ColorRgba(q, v, p, ColorRgba.ClampToByte(this.A * 255.0f))); } else if (hi == 2) { return(new ColorRgba(p, v, t, ColorRgba.ClampToByte(this.A * 255.0f))); } else if (hi == 3) { return(new ColorRgba(p, q, v, ColorRgba.ClampToByte(this.A * 255.0f))); } else if (hi == 4) { return(new ColorRgba(t, p, v, ColorRgba.ClampToByte(this.A * 255.0f))); } else { return(new ColorRgba(v, p, q, ColorRgba.ClampToByte(this.A * 255.0f))); } }