private void HandleGradientOutputValueChanged(object sender, IndexEventArgs e)
{
if (gradientOutput.ValueIndex != -1 && gradientOutput.ValueIndex != e.Index)
return;
int val = gradientOutput.GetValue (e.Index);
int hi = gradientOutput.GetValue (2);
int lo = gradientOutput.GetValue (0);
int med = FromGammaValue ();
switch (e.Index) {
case 0 :
spinOutLow.Value = val;
gradientOutput.SetValue (1, med);
break;
case 1 :
med = gradientOutput.GetValue (1);
spinOutGamma.Value = Utility.Clamp(1 / Math.Log (0.5, (float)(med - lo) / (float)(hi - lo)), 0.1, 10.0);
break;
case 2 :
spinOutHigh.Value = val;
gradientOutput.SetValue (1, med);
break;
}
UpdateLevels ();
}