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

ZoomIn() public method

Zooms the in.
public ZoomIn ( CorePoint pivot ) : void
pivot LiveCharts.Dtos.CorePoint The pivot.
return void
        public void ZoomIn(CorePoint pivot)
        {
            if (AxisX == null || AxisY == null) return;

            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*speed;
                    if (target < xi.View.MinRange) 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 * speed;
                    if (target < yi.View.MinRange) return;
                    var mint = pivot.Y - target * rMin;
                    var maxt = pivot.Y + target * rMax;
                    yi.View.SetRange(mint, maxt);
                }
            }
        }