Ejemplo n.º 1
0
        public void ConvertFromRGB(Colorf rgb)
        {
            this.a = rgb.a;
            float rp = rgb.r, gp = rgb.g, bp = rgb.b;

            float cmax      = rp;
            int   cmaxwhich = 0; /* faster comparison afterwards */

            if (gp > cmax)
            {
                cmax = gp; cmaxwhich = 1;
            }
            if (bp > cmax)
            {
                cmax = bp; cmaxwhich = 2;
            }
            float cmin = rp;

            //int cminwhich = 0;
            if (gp < cmin)
            {
                cmin = gp;              /*cminwhich = 1;*/
            }
            if (bp < cmin)
            {
                cmin = bp;              /*cminwhich = 2;*/
            }

            float delta = cmax - cmin;

            /* HUE */
            if (delta == 0)
            {
                this.h = 0;
            }
            else
            {
                switch (cmaxwhich)
                {
                case 0:     /* cmax == rp */
                    h = 60.0f * (((gp - bp) / delta) % 6.0f);
                    break;

                case 1:     /* cmax == gp */
                    h = 60.0f * (((bp - rp) / delta) + 2);
                    break;

                case 2:     /* cmax == bp */
                    h = 60.0f * (((rp - gp) / delta) + 4);
                    break;
                }
                if (h < 0)
                {
                    h += 360.0f;
                }
            }

            /* LIGHTNESS/VALUE */
            //l = (cmax + cmin) / 2;
            v = cmax;

            /* SATURATION */

            /*if (delta == 0) {
             * r_s = 0;
             * } else {
             * r_s = delta / (1 - fabs (1 - (2 * (l - 1))));
             * }*/
            if (cmax == 0)
            {
                s = 0;
            }
            else
            {
                s = delta / cmax;
            }
        }
Ejemplo n.º 2
0
 public ColorHSV(Colorf rgb)
 {
     ConvertFromRGB(rgb);
 }