private void UpdateGammaByMask(float val)
{
float average = -1;
if (!(mask [0] || mask [1] || mask [2]))
return;
do {
average = MaskGamma ();
float factor = val / average;
for (int c = 0; c < 3; c++) {
if (mask [c]) {
Levels.SetGamma (c, factor * Levels.GetGamma (c));
}
}
} while (Math.Abs (val - average) > 0.001);
}