LiveCharts.AxisCore.CalculateSeparator C# (CSharp) Method

CalculateSeparator() private method

private CalculateSeparator ( ChartCore chart, AxisOrientation source ) : void
chart LiveCharts.Charts.ChartCore
source AxisOrientation
return void
        internal void CalculateSeparator(ChartCore chart, AxisOrientation source)
        {
            var range = TopLimit - BotLimit;
            range = range <= 0 ? 1 : range;

            //ToDO: Improve this according to current labels!
            var separations = source == AxisOrientation.Y
                ? Math.Round(chart.ControlSize.Height/((12)*CleanFactor), 0) // at least 3 font 12 labels per separator.
                : Math.Round(chart.ControlSize.Width/(50*CleanFactor), 0); // at least 150 pixels per separator.

            separations = separations < 2 ? 2 : separations;

            var minimum = range/separations;
            Magnitude = Math.Pow(10, Math.Floor(Math.Log(minimum)/Math.Log(10)));

            if (!double.IsNaN(Separator.Step))
            {
                S = Separator.Step;
                return;
            }

            var residual = minimum/Magnitude;
            double tick;
            if (residual > 5)
                tick = 10*Magnitude;
            else if (residual > 2)
                tick = 5*Magnitude;
            else if (residual > 1)
                tick = 2*Magnitude;
            else
                tick = Magnitude;

            S = tick;

            if (Labels != null) S = S < 1 ? 1 : S;
        }