public bool CanUseAxisScaleBreaks()
 {
     if (this.axis != null && this.axis.chartArea != null && this.axis.chartArea.Common.Chart != null)
     {
         if (this.axis.chartArea.Area3DStyle.Enable3D)
         {
             return(false);
         }
         if (this.axis.axisType != 0 && this.axis.axisType != AxisName.X2)
         {
             if (this.axis.Logarithmic)
             {
                 return(false);
             }
             if (this.axis.View.IsZoomed)
             {
                 return(false);
             }
             ArrayList axisSeries = AxisScaleBreakStyle.GetAxisSeries(this.axis);
             foreach (Series item in axisSeries)
             {
                 if (item.ChartType == SeriesChartType.Renko || item.ChartType == SeriesChartType.PointAndFigure)
                 {
                     return(false);
                 }
                 IChartType chartType = this.axis.chartArea.Common.ChartTypeRegistry.GetChartType(item.ChartTypeName);
                 if (chartType == null)
                 {
                     return(false);
                 }
                 if (chartType.CircularChartArea || chartType.Stacked || !chartType.RequireAxes)
                 {
                     return(false);
                 }
             }
             return(true);
         }
         return(false);
     }
     return(false);
 }
        public int[] GetSeriesDataStatistics(int segmentCount, out double minYValue, out double maxYValue, out double segmentSize, out double[] segmentMaxValue, out double[] segmentMinValue)
        {
            ArrayList axisSeries = AxisScaleBreakStyle.GetAxisSeries(this.axis);

            minYValue = 0.0;
            maxYValue = 0.0;
            this.axis.Common.DataManager.GetMinMaxYValue(axisSeries, out minYValue, out maxYValue);
            if (axisSeries.Count == 0)
            {
                segmentSize     = 0.0;
                segmentMaxValue = null;
                segmentMinValue = null;
                return(null);
            }
            segmentSize = (maxYValue - minYValue) / (double)segmentCount;
            int[] array = new int[segmentCount];
            segmentMaxValue = new double[segmentCount];
            segmentMinValue = new double[segmentCount];
            for (int i = 0; i < segmentCount; i++)
            {
                segmentMaxValue[i] = double.NaN;
                segmentMinValue[i] = double.NaN;
            }
            foreach (Series item in axisSeries)
            {
                int        num       = 1;
                IChartType chartType = this.axis.chartArea.Common.ChartTypeRegistry.GetChartType(item.ChartTypeName);
                if (chartType != null && chartType.ExtraYValuesConnectedToYAxis && chartType.YValuesPerPoint > 1)
                {
                    num = chartType.YValuesPerPoint;
                }
                foreach (DataPoint point in item.Points)
                {
                    if (!point.Empty)
                    {
                        for (int j = 0; j < num; j++)
                        {
                            int num2 = (int)Math.Floor((point.YValues[j] - minYValue) / segmentSize);
                            if (num2 < 0)
                            {
                                num2 = 0;
                            }
                            if (num2 > segmentCount - 1)
                            {
                                num2 = segmentCount - 1;
                            }
                            array[num2]++;
                            if (array[num2] == 1)
                            {
                                segmentMaxValue[num2] = point.YValues[j];
                                segmentMinValue[num2] = point.YValues[j];
                            }
                            else
                            {
                                segmentMaxValue[num2] = Math.Max(segmentMaxValue[num2], point.YValues[j]);
                                segmentMinValue[num2] = Math.Min(segmentMinValue[num2], point.YValues[j]);
                            }
                        }
                    }
                }
            }
            return(array);
        }