private static void FillRenkoData(Series series, Series originalData)
        {
            int num = 0;

            if (series.IsAttributeSet("UsedYValue"))
            {
                try
                {
                    num = int.Parse(((DataPointAttributes)series)["UsedYValue"], CultureInfo.InvariantCulture);
                }
                catch
                {
                    throw new InvalidOperationException(SR.ExceptionRenkoUsedYValueFormatInvalid);
                }
                if (num >= series.YValuesPerPoint)
                {
                    throw new InvalidOperationException(SR.ExceptionRenkoUsedYValueOutOfRange);
                }
            }
            double boxSize = RenkoChart.GetBoxSize(series, originalData, num);
            double num2    = double.NaN;
            double num3    = double.NaN;
            int    num4    = 0;

            foreach (DataPoint point in originalData.Points)
            {
                if (!point.Empty)
                {
                    int  num5 = 0;
                    bool flag = true;
                    if (!double.IsNaN(num2) && !double.IsNaN(num3))
                    {
                        Color  color = Color.Transparent;
                        string text  = ((DataPointAttributes)point)["PriceUpColor"];
                        if (text == null)
                        {
                            text = ((DataPointAttributes)series)["PriceUpColor"];
                        }
                        if (text != null)
                        {
                            try
                            {
                                ColorConverter colorConverter = new ColorConverter();
                                color = (Color)colorConverter.ConvertFromString(null, CultureInfo.InvariantCulture, text);
                            }
                            catch
                            {
                                throw new InvalidOperationException(SR.ExceptionRenkoUpBrickColorInvalid);
                            }
                        }
                        if (point.YValues[num] >= num3 + boxSize)
                        {
                            flag = true;
                            num5 = (int)Math.Floor((point.YValues[num] - num3) / boxSize);
                        }
                        else if (point.YValues[num] <= num2 - boxSize)
                        {
                            flag = false;
                            num5 = (int)Math.Floor((num2 - point.YValues[num]) / boxSize);
                        }
                        while (num5 > 0)
                        {
                            DataPoint dataPoint2 = point.Clone();
                            ((DataPointAttributes)dataPoint2)["OriginalPointIndex"] = num4.ToString(CultureInfo.InvariantCulture);
                            dataPoint2.series  = series;
                            dataPoint2.YValues = new double[2];
                            dataPoint2.XValue  = point.XValue;
                            if (flag)
                            {
                                dataPoint2.YValues[1] = num3;
                                dataPoint2.YValues[0] = num3 + boxSize;
                                num2             = num3;
                                num3             = num2 + boxSize;
                                dataPoint2.Color = color;
                                if (dataPoint2.BorderWidth < 1)
                                {
                                    dataPoint2.BorderWidth = 1;
                                }
                                if (dataPoint2.BorderStyle == ChartDashStyle.NotSet)
                                {
                                    dataPoint2.BorderStyle = ChartDashStyle.Solid;
                                }
                                if ((dataPoint2.BorderColor == Color.Empty || dataPoint2.BorderColor == Color.Transparent) && (dataPoint2.Color == Color.Empty || dataPoint2.Color == Color.Transparent))
                                {
                                    dataPoint2.BorderColor = series.Color;
                                }
                            }
                            else
                            {
                                dataPoint2.YValues[1] = num2;
                                dataPoint2.YValues[0] = num2 - boxSize;
                                num3 = num2;
                                num2 = num3 - boxSize;
                            }
                            series.Points.Add(dataPoint2);
                            num5--;
                        }
                        goto IL_029c;
                    }
                    num3 = point.YValues[num];
                    num2 = point.YValues[num];
                    num4++;
                    continue;
                }
                goto IL_029c;
IL_029c:
                num4++;
            }
        }
 public static void PrepareData(Series series, IServiceContainer serviceContainer)
 {
     if (string.Compare(series.ChartTypeName, "Renko", StringComparison.OrdinalIgnoreCase) == 0 && series.IsVisible())
     {
         Chart chart = (Chart)serviceContainer.GetService(typeof(Chart));
         if (chart == null)
         {
             throw new InvalidOperationException(SR.ExceptionRenkoNullReference);
         }
         ChartArea chartArea = chart.ChartAreas[series.ChartArea];
         foreach (Series item in chart.Series)
         {
             if (item.IsVisible() && item != series && chartArea == chart.ChartAreas[item.ChartArea])
             {
                 throw new InvalidOperationException(SR.ExceptionRenkoCanNotCobine);
             }
         }
         Series series3 = new Series("RENKO_ORIGINAL_DATA_" + series.Name, series.YValuesPerPoint);
         series3.Enabled      = false;
         series3.ShowInLegend = false;
         chart.Series.Add(series3);
         foreach (DataPoint point in series.Points)
         {
             series3.Points.Add(point);
         }
         series.Points.Clear();
         if (series.IsAttributeSet("TempDesignData"))
         {
             ((DataPointAttributes)series3)["TempDesignData"] = "true";
         }
         ((DataPointAttributes)series)["OldXValueIndexed"]   = series.XValueIndexed.ToString(CultureInfo.InvariantCulture);
         ((DataPointAttributes)series)["OldYValuesPerPoint"] = series.YValuesPerPoint.ToString(CultureInfo.InvariantCulture);
         series.ChartType       = SeriesChartType.RangeColumn;
         series.XValueIndexed   = true;
         series.YValuesPerPoint = 2;
         if (series.ChartArea.Length > 0 && series.IsXValueDateTime())
         {
             Axis axis = chartArea.GetAxis(AxisName.X, series.XAxisType, series.XSubAxisName);
             if (axis.Interval == 0.0 && axis.IntervalType == DateTimeIntervalType.Auto)
             {
                 bool   flag = false;
                 double num  = 1.7976931348623157E+308;
                 double num2 = -1.7976931348623157E+308;
                 foreach (DataPoint point2 in series3.Points)
                 {
                     if (!point2.Empty)
                     {
                         if (point2.XValue != 0.0)
                         {
                             flag = true;
                         }
                         if (point2.XValue > num2)
                         {
                             num2 = point2.XValue;
                         }
                         if (point2.XValue < num)
                         {
                             num = point2.XValue;
                         }
                     }
                 }
                 if (flag)
                 {
                     ((DataPointAttributes)series)["OldAutomaticXAxisInterval"] = "true";
                     DateTimeIntervalType intervalType = DateTimeIntervalType.Auto;
                     axis.interval     = ((AxisScale)axis).CalcInterval(num, num2, true, out intervalType, series.XValueType);
                     axis.intervalType = intervalType;
                 }
             }
         }
         RenkoChart.FillRenkoData(series, series3);
     }
 }