Ejemplo n.º 1
0
		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;
		}
Ejemplo n.º 2
0
		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;
		}