示例#1
0
        private static void CalcXYZ(byte FR, byte FG, byte FB, out double X, out double Y, out double Z)
        {
            double r = TScRGBColor.RGBtoSRGB(FR / 255.0);
            double g = TScRGBColor.RGBtoSRGB(FG / 255.0);
            double b = TScRGBColor.RGBtoSRGB(FB / 255.0);

            X = r * 0.412453 + g * 0.357580 + b * 0.180423;
            Y = r * 0.212671 + g * 0.715160 + b * 0.072169;
            Z = r * 0.019334 + g * 0.119193 + b * 0.950227;
        }
示例#2
0
        /// <summary>
        /// Returns true if both colors are the same.
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(object obj)
        {
            if (!(obj is TScRGBColor))
            {
                return(false);
            }
            TScRGBColor o = (TScRGBColor)obj;

            return(FscR == o.FscR && FscG == o.FscG && FscB == o.FscB);
        }
示例#3
0
        /// <summary>
        /// Returns -1 if obj is more than color, 0 if both colors are the same, and 1 if obj is less than color.
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int CompareTo(object obj)
        {
            if (!(obj is TScRGBColor))
            {
                return(-1);
            }
            TScRGBColor o2 = (TScRGBColor)obj;
            int         c;

            c = FscR.CompareTo(o2.FscR); if (c != 0)
            {
                return(c);
            }
            c = FscG.CompareTo(o2.FscG); if (c != 0)
            {
                return(c);
            }
            c = FscB.CompareTo(o2.FscB); if (c != 0)
            {
                return(c);
            }

            return(0);
        }