Example #1
0
        /// <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)));
            }
        }