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); }