protected void AnalyzeData(bool isStacked) { if (!_analyzed) { int num = Series.Count; _dataInfo.nser = num; _dataInfo.npts = 0; _dataInfo.ndim = 0; _dataInfo.ClearLimits(); _dataInfo.SymbolMinSize = Size.Empty; _dataInfo.SymbolMaxSize = Size.Empty; _dataInfo.incX = false; _dataInfo.hasNaN = false; bool flag = false; bool flag2 = IsStacked100; if (num > 0) { AnalyseNDimNPts(); int ndim = _dataInfo.ndim; int npts = _dataInfo.npts; double[] numArray = new double[ndim]; double[] numArray2 = new double[ndim]; double[] numArray3 = new double[num]; double[] numArray4 = new double[num]; int nsg = NStackGroups(); StackedSum sum = isStacked ? new StackedSum(nsg) : null; StackedSum sum2 = isStacked ? new StackedSum(nsg) : null; StackedSum sum3 = isStacked ? new StackedSum(nsg) : null; StackedSum sum4 = flag2 ? new StackedSum(nsg) : null; double num5 = 0.0; double num6 = 0.0; double naN = double.NaN; Size size = new Size(); for (int i = 0; i < num; i++) { DataSeries ds = (DataSeries)Series[i]; bool flag3 = ds.IsStacked; bool isClustered = ds.GetIsClustered(true); int stackGroup = BarColumnOptions.GetStackGroup(ds); if (ds is BubbleSeries) { Chart chart = _visual as Chart; if (chart != null) { Size maxSize = ((BubbleSeries)ds).GetMaxSize(_dataInfo); if (size.Width < maxSize.Width) { size.Width = maxSize.Width; } if (size.Height < maxSize.Height) { size.Height = maxSize.Height; } if (_dataInfo.SymbolMaxSize.IsEmpty) { _dataInfo.SymbolMaxSize = BubbleOptions.GetMaxSize(chart); } if (_dataInfo.SymbolMinSize.IsEmpty) { _dataInfo.SymbolMinSize = BubbleOptions.GetMinSize(chart); } } } double[,] values = ds.GetValues(); if (values != null) { int length = values.GetLength(0); int num11 = values.GetLength(1); if (((num11 >= 2) && (length >= 2)) && isClustered) { double num12 = 0.0; for (int m = 0; m < (num11 - 1); m++) { if (!double.IsNaN(values[1, m]) && !double.IsNaN(values[1, m + 1])) { num12 = Math.Abs((double)(values[1, m + 1] - values[1, m])); if (double.IsNaN(naN) || (num12 < naN)) { naN = num12; } } } } ValueCoordinate[] valueCoordinates = ds.GetValueCoordinates(false); for (int j = 0; j < valueCoordinates.Length; j++) { if ((valueCoordinates[j] == ValueCoordinate.X) && IsValidAuxAxis(ds.AxisX)) { valueCoordinates[j] = ValueCoordinate.None; } else if ((valueCoordinates[j] == ValueCoordinate.Y) && IsValidAuxAxis(ds.AxisY)) { valueCoordinates[j] = ValueCoordinate.None; } } for (int k = 0; k < length; k++) { if ((k < valueCoordinates.Length) && (valueCoordinates[k] != ValueCoordinate.None)) { for (int n = 0; n < num11; n++) { double x = (length > 1) ? values[1, n] : ((double)n); if (double.IsNaN(values[k, n])) { _dataInfo.hasNaN = true; } else { if ((i == 0) && (n == 0)) { numArray[k] = numArray2[k] = values[k, n]; } else { if (values[k, n] > numArray[k]) { numArray[k] = values[k, n]; } if (values[k, n] < numArray2[k]) { numArray2[k] = values[k, n]; } } if (k == 0) { numArray3[i] += values[0, n]; numArray4[i] += Math.Abs(values[0, n]); } else if ((flag && (k == 1)) && ((n > 0) && ((values[1, n] - values[1, n - 1]) < 0.0))) { flag = false; } if (((k == 0) && isStacked) && flag3) { if (flag2) { sum.Add(stackGroup, x, Math.Abs(values[0, n])); sum4.Add(stackGroup, x, values[0, n]); } else { sum.Add(stackGroup, x, values[0, n]); num5 = Math.Min(num5, sum[stackGroup, (double)n]); num6 = Math.Max(num6, sum[stackGroup, (double)n]); } if (values[0, n] > 0.0) { sum2.Add(stackGroup, x, values[0, n]); } else { sum3.Add(stackGroup, (double)n, values[0, n]); } } } } _dataInfo.UpdateLimits(valueCoordinates[k], numArray2[k], numArray[k]); } } if (length < 2) { _dataInfo.UpdateLimits(ValueCoordinate.X, 0.0, (double)(num11 - 1)); } } } if (isStacked && (npts > 0)) { if (flag2) { numArray2[0] = 0.0; numArray[0] = 0.0; for (int num18 = 0; num18 < npts; num18++) { for (int num19 = 0; num19 < nsg; num19++) { if (sum[num19, (double)num18] != 0.0) { double num20 = sum2[num19, (double)num18] / sum[num19, (double)num18]; double num21 = sum3[num19, (double)num18] / sum[num19, (double)num18]; if (num20 > numArray[0]) { numArray[0] = num20; } if (num21 < numArray2[0]) { numArray2[0] = num21; } } } } } else { numArray[0] = 0.0; numArray2[0] = 0.0; for (int num22 = 0; num22 < nsg; num22++) { double[] ys = sum2.GetYs(num22); double[] numArray7 = sum3.GetYs(num22); for (int num23 = 0; num23 < ys.Length; num23++) { if (ys[num23] > numArray[0]) { numArray[0] = ys[num23]; } } for (int num24 = 0; num24 < numArray7.Length; num24++) { if (numArray7[num24] < numArray2[0]) { numArray2[0] = numArray7[num24]; } } } } } _dataInfo.MaxVals = numArray; _dataInfo.MinVals = numArray2; _dataInfo.Sums = numArray3; _dataInfo.SumsAbs = numArray4; _dataInfo.Stacked = sum; _dataInfo.DeltaX = (double.IsNaN(naN) || (naN == 0.0)) ? 1.0 : naN; _dataInfo.SymbolSize = size; _dataInfo.incX = flag; } _analyzed = true; } }