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; }
/// <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); }
/// <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); }