ColorSpace.ColorVector.SetSRgbSmart C# (CSharp) Method

SetSRgbSmart() private method

private SetSRgbSmart ( double r, double g, double b, double bigY ) : void
r double
g double
b double
bigY double
return void
        private void SetSRgbSmart(double r, double g, double b, double bigY)
        {
            double lowerBound = 0.0;
            double upperBound = 1.0;
            double rOffset = r - bigY;
            double gOffset = g - bigY;
            double bOffset = b - bigY;

            UpdateSRgbBounds(bigY, rOffset, ref lowerBound, ref upperBound);
            UpdateSRgbBounds(bigY, gOffset, ref lowerBound, ref upperBound);
            UpdateSRgbBounds(bigY, bOffset, ref lowerBound, ref upperBound);

            if (lowerBound > upperBound)
            {
                Component1 = 0.0;
                Component2 = 0.0;
                Component3 = 0.0;
            }
            else
            {
                Component1 = LinearSRgbToSRgb(bigY + rOffset * upperBound);
                Component2 = LinearSRgbToSRgb(bigY + gOffset * upperBound);
                Component3 = LinearSRgbToSRgb(bigY + bOffset * upperBound);
            }
        }