LiveCharts.Charts.ChartCore.ZoomOut C# (CSharp) Method

ZoomOut() public method

Zooms the out.
public ZoomOut ( CorePoint pivot ) : void
pivot LiveCharts.Dtos.CorePoint The pivot.
return void
        public void ZoomOut(CorePoint pivot)
        {
            View.HideTooltip();

            pivot = new CorePoint(
                ChartFunctions.FromPlotArea(pivot.X, AxisOrientation.X, this),
                ChartFunctions.FromPlotArea(pivot.Y, AxisOrientation.Y, this));

            var speed = View.ZoomingSpeed < 0.1 ? 0.1 : (View.ZoomingSpeed > 0.95 ? 0.95 : View.ZoomingSpeed);

            if (View.Zoom == ZoomingOptions.X || View.Zoom == ZoomingOptions.Xy)
            {
                foreach (var xi in AxisX)
                {
                    var max = double.IsNaN(xi.MaxValue) ? xi.TopLimit : xi.MaxValue;
                    var min = double.IsNaN(xi.MinValue) ? xi.BotLimit : xi.MinValue;
                    var l = max - min;
                    var rMin = (pivot.X - min) / l;
                    var rMax = 1 - rMin;

                    var target = l*(1/speed);
                    if (target > xi.View.MaxRange) return;
                    var mint = pivot.X - target * rMin;
                    var maxt = pivot.X + target * rMax;
                    xi.View.SetRange(mint, maxt);
                }
            }

            if (View.Zoom == ZoomingOptions.Y || View.Zoom == ZoomingOptions.Xy)
            {
                foreach (var yi in AxisY)
                {
                    var max = double.IsNaN(yi.MaxValue) ? yi.TopLimit : yi.MaxValue;
                    var min = double.IsNaN(yi.MinValue) ? yi.BotLimit : yi.MinValue;
                    var l = max - min;
                    var rMin = (pivot.Y - min) / l;
                    var rMax = 1 - rMin;

                    var target = l * (1 / speed);
                    if (target > yi.View.MaxRange) return;
                    var mint = pivot.Y - target * rMin;
                    var maxt = pivot.Y + target * rMax;
                    yi.View.SetRange(mint, maxt);
                }
            }
        }