public ExpressionChartItem.VolumeData GetVolume() { ExpressionChartItem.VolumeData volumeData = new ExpressionChartItem.VolumeData { 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); volumeData.X = new int[num2]; volumeData.Y = new double[num2]; volumeData.IsValid = new bool[num2]; for (int i = 0; i < this.TotalTicks; i += this.Grouping) { volumeData.Y[num] = 0.0; int num3 = i; while (num3 < i + this.Grouping && num3 < this.TotalTicks) { int num4 = num3 + 1 - this.InitialTicks + (this.StartPeriod - 1) * this.TicksPerPeriod; int num5 = num4 - 1 + this.VolumeChart.InitialTicks - (this.VolumeChart.StartPeriod - 1) * this.VolumeChart.TicksPerPeriod; if (num5 >= 0 && num5 < this.VolumeChart.Data.Count) { volumeData.Y[num] += this.VolumeChart.Data[num5].Volume; volumeData.IsValid[num] = true; } if (num5 >= 0) { if (!volumeData.IsValid.Any((bool x) => x)) { volumeData.IsValid[num] = true; } } num3++; } volumeData.X[num] = this.ExpressionXData[i] + this.Grouping / 2; num++; } return volumeData; }
public ExpressionChartItem.VolumeData GetVolume(int[] indexes) { ExpressionChartItem.VolumeData volumeData = new ExpressionChartItem.VolumeData { MaxTick = this.ExpressionXData[this.ExpressionXData.Length - 1], MinTick = this.ExpressionXData[0] }; if (indexes.Length == 0) { volumeData.X = new int[0]; volumeData.Y = new double[0]; return volumeData; } int num = indexes[0] / this.Grouping; int num2 = indexes[indexes.Length - 1] / this.Grouping; int num3 = num2 - num + 1; int num4 = 0; volumeData.X = new int[num3]; volumeData.Y = new double[num3]; for (int i = num; i <= num2; i++) { int num5 = i * this.Grouping; volumeData.Y[num4] = 0.0; int num6 = num5; while (num6 < num5 + this.Grouping && num6 < this.TotalTicks) { int num7 = num6 + 1 - this.InitialTicks + (this.StartPeriod - 1) * this.TicksPerPeriod; int num8 = num7 - 1 + this.VolumeChart.InitialTicks - (this.VolumeChart.StartPeriod - 1) * this.VolumeChart.TicksPerPeriod; if (num8 >= 0 && num8 < this.VolumeChart.Data.Count) { volumeData.Y[num4] += this.VolumeChart.Data[num8].Volume; } num6++; } volumeData.X[num4] = i; num4++; } return volumeData; }