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