private void txtInputHi_ValueChanged(object sender, System.EventArgs e)
        {
            gradientInput.SetValue(1, (int)inputHiUpDown.Value);

            if (ignore == 0)
            {
                ignore++;
                UpdateLevels();
                ignore--;
            }
        }
        protected override void InitDialogFromToken(EffectConfigToken effectToken)
        {
            UnaryPixelOps.Level levels = ((LevelsEffectConfigToken)effectToken).Levels;

            float gamma = MaskGamma(levels);
            int   lo    = MaskAvg(levels.ColorOutLow);
            int   hi    = MaskAvg(levels.ColorOutHigh);
            int   md    = (int)(lo + (hi - lo) * Math.Pow(0.5, gamma));

            outputHiUpDown.Value    = hi;
            outputGammaUpDown.Value = (decimal)gamma;
            outputLowUpDown.Value   = lo;
            inputHiUpDown.Value     = MaskAvg(levels.ColorInHigh);
            inputLoUpDown.Value     = MaskAvg(levels.ColorInLow);

            gradientOutput.SetValue(0, lo);
            gradientOutput.SetValue(1, md);
            gradientOutput.SetValue(2, hi);

            swatchInHigh.BackColor = levels.ColorInHigh.ToColor();
            swatchInLow.BackColor  = levels.ColorInLow.ToColor();
            swatchOutMid.BackColor = levels.Apply(((HistogramRgb)histogramInput.Histogram).GetMeanColor()).ToColor();
            swatchOutMid.Invalidate();
            swatchOutHigh.BackColor = levels.ColorOutHigh.ToColor();
            swatchOutLow.BackColor  = levels.ColorOutLow.ToColor();
        }