Exemple #1
0
        public static Color ColorCombineLuminosity(Color A, Color B)
        {
            ColorHSL x = ColorHSL.FromRGBA(A);
            ColorHSL y = ColorHSL.FromRGBA(B);

            x.l = y.l;

            return(ColorHSL.ToRGBA(x));
        }
Exemple #2
0
        public static Color ColorCombineHue(Color A, Color B)
        {
            ColorHSL x = ColorHSL.FromRGBA(A);
            ColorHSL y = ColorHSL.FromRGBA(B);

            x.h = y.h;

            return(ColorHSL.ToRGBA(x));
        }
Exemple #3
0
        public static Color ColorCombineSaturation(Color A, Color B)
        {
            ColorHSL x = ColorHSL.FromRGBA(A);
            ColorHSL y = ColorHSL.FromRGBA(B);

            x.s = y.s;

            return(ColorHSL.ToRGBA(x));
        }
Exemple #4
0
        public static Color ToRGBA(ColorHSL input)
        {
            float v;
            float m, sv;
            int   sextant;
            float fract, vsf, mid1, mid2;

            Color result;

            //result.R = input.l;   // default to gray
            //result.G = input.l;
            //result.B = input.l;
            //result.A = input.a;

            if (input.l < 0.5f)
            {
                v = (input.l * (1.0f + input.s));
            }
            else
            {
                v = (input.l + input.s - input.l * input.s);
            }

            if (v > 0)
            {
                m        = input.l + input.l - v;
                sv       = (v - m) / v;
                input.h *= 6.0f;
                sextant  = (int)Math.Floor(input.h);
                fract    = input.h - sextant;

                vsf  = v * sv * fract;
                mid1 = m + vsf;
                mid2 = v - vsf;

                //switch (sextant)
                //{
                //    case 0:
                //        {
                //            result.R = v;
                //            result.G = mid1;
                //            result.B = m;
                //            break;
                //        }

                //    case 1:
                //        {
                //            result.R = mid2;
                //            result.G = v;
                //            result.B = m;
                //            break;
                //        }

                //    case 2:
                //        {
                //            result.R = m;
                //            result.G = v;
                //            result.B = mid1;
                //            break;
                //        }

                //    case 3:
                //        {
                //            result.R = m;
                //            result.G = mid2;
                //            result.B = v;
                //            break;
                //        }

                //    case 4:
                //        {
                //            result.R = mid1;
                //            result.G = m;
                //            result.B = v;
                //            break;
                //        }

                //    case 5:
                //        {
                //            result.R = v;
                //            result.G = m;
                //            result.B = mid2;
                //            break;
                //        }
                //}
            }

            return(result);
        }