示例#1
0
		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;
		}
示例#2
0
		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;
		}