public ExpressionChartItem.PlotData GetGroups(int grouping) { this.Grouping = grouping; ExpressionChartItem.PlotData plotData = new ExpressionChartItem.PlotData { MaxTick = this.ExpressionXData[this.ExpressionXData.Length - 1], MinTick = this.ExpressionXData[0] }; int num = 0; int num2 = (this.TotalTicks == 0) ? 0 : ((this.TotalTicks - 1) / this.Grouping + 1); plotData.X = new int[num2]; plotData.Y = new double[4][]; plotData.IsValid = new bool[num2]; for (int i = 0; i < 4; i++) { plotData.Y[i] = new double[num2]; } for (int j = 0; j < this.TotalTicks; j += this.Grouping) { if (j < this.TicksAvailable) { plotData.Y[0][num] = (plotData.Y[1][num] = (plotData.Y[2][num] = this.ExpressionYData[2][j])); int num3 = j; while (num3 < j + this.Grouping && num3 < this.TicksAvailable) { plotData.IsValid[num] = true; plotData.Y[0][num] = System.Math.Max(this.ExpressionYData[0][num3], plotData.Y[0][num]); plotData.Y[1][num] = System.Math.Min(this.ExpressionYData[1][num3], plotData.Y[1][num]); num3++; } plotData.Y[3][num] = this.ExpressionYData[3][num3 - 1]; } plotData.X[num] = this.ExpressionXData[j] + this.Grouping / 2; num++; } if (num2 > 0) { if (plotData.IsValid.All((bool x) => !x)) { plotData.IsValid[0] = true; } } return plotData; }
public ExpressionChartItem.PlotData GetGroups(int[] indexes) { ExpressionChartItem.PlotData plotData = new ExpressionChartItem.PlotData { MaxTick = this.ExpressionXData[this.ExpressionXData.Length - 1], MinTick = this.ExpressionXData[0] }; if (indexes.Length == 0) { plotData.X = new int[0]; plotData.Y = new double[0][]; return plotData; } int num = indexes[0] / this.Grouping; int num2 = indexes[indexes.Length - 1] / this.Grouping; int num3 = num2 - num + 1; int num4 = 0; plotData.X = new int[num3]; plotData.Y = new double[4][]; for (int i = 0; i < 4; i++) { plotData.Y[i] = new double[num3]; } for (int j = num; j <= num2; j++) { int num5 = j * this.Grouping; if (num5 < this.TicksAvailable) { plotData.Y[0][num4] = (plotData.Y[1][num4] = (plotData.Y[2][num4] = this.ExpressionYData[2][num5])); int num6 = num5; while (num6 < num5 + this.Grouping && num6 < this.TicksAvailable) { plotData.Y[0][num4] = System.Math.Max(this.ExpressionYData[0][num6], plotData.Y[0][num4]); plotData.Y[1][num4] = System.Math.Min(this.ExpressionYData[1][num6], plotData.Y[1][num4]); num6++; } plotData.Y[3][num4] = this.ExpressionYData[3][num6 - 1]; } plotData.X[num4] = j; num4++; } return plotData; }