private int AddXY(double x, double y, bool nullValue, bool emptyValue, double high, double low, double open, double close)
        {
            base.CheckForValidNextX(x);
            PlotDataPointCandlestick2 plotDataPointCandlestick = (PlotDataPointCandlestick2)base.m_Data.AddNew();

            base.DataPointInitializing = true;
            try
            {
                plotDataPointCandlestick.X     = x;
                plotDataPointCandlestick.Y     = y;
                plotDataPointCandlestick.Null  = nullValue;
                plotDataPointCandlestick.Empty = emptyValue;
                plotDataPointCandlestick.High  = high;
                plotDataPointCandlestick.Low   = low;
                plotDataPointCandlestick.Open  = open;
                plotDataPointCandlestick.Close = close;
            }
            finally
            {
                base.DataPointInitializing = false;
            }
            base.m_Data.UpdateMinMaxMean(plotDataPointCandlestick);
            if (base.SendXAxisTrackingData)
            {
                PlotXAxis xAxis = base.XAxis;
                if (xAxis != null)
                {
                    double normalizedWidth = base.GetNormalizedWidth(xAxis, this.WidthBody, this.WidthStyleBody);
                    base.XAxis.Tracking.NewData(x - normalizedWidth / 2.0);
                    base.XAxis.Tracking.NewData(x + normalizedWidth / 2.0);
                    if (this.ShowOpen)
                    {
                        normalizedWidth = base.GetNormalizedWidth(xAxis, this.WidthOpen, this.WidthStyleOpen);
                        base.XAxis.Tracking.NewData(x - normalizedWidth);
                    }
                    if (this.ShowClose)
                    {
                        normalizedWidth = base.GetNormalizedWidth(xAxis, this.WidthClose, this.WidthStyleClose);
                        base.XAxis.Tracking.NewData(x + normalizedWidth);
                    }
                }
            }
            if (!nullValue && !emptyValue && base.SendYAxisTrackingData)
            {
                PlotYAxis yAxis = base.YAxis;
                if (yAxis != null)
                {
                    base.YAxis.Tracking.NewData(high);
                    base.YAxis.Tracking.NewData(low);
                }
            }
            this.DoDataChange();
            return(base.m_Data.LastNewDataPointIndex);
        }
 protected override void Draw(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis)
 {
     for (int i = this.IndexDrawStart; i <= this.IndexDrawStop; i++)
     {
         PlotDataPointCandlestick2 plotDataPointCandlestick = this[i];
         if (!plotDataPointCandlestick.Empty && !plotDataPointCandlestick.Null)
         {
             this.DrawOpenClose(p, xAxis, yAxis, plotDataPointCandlestick);
             this.DrawBody(p, xAxis, yAxis, plotDataPointCandlestick);
         }
     }
 }
 protected void DrawBody(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis, PlotDataPointCandlestick2 dataPoint)
 {
     if (!this.FillBody.NotDrawVisible)
     {
         double normalizedWidth = base.GetNormalizedWidth(xAxis, this.WidthBody, this.WidthStyleBody);
         int    num             = xAxis.ScaleDisplay.ValueToPixels(dataPoint.X - normalizedWidth / 2.0);
         int    num2            = xAxis.ScaleDisplay.ValueToPixels(dataPoint.X + normalizedWidth / 2.0);
         int    top             = yAxis.ScaleDisplay.ValueToPixels(dataPoint.High);
         int    bottom          = yAxis.ScaleDisplay.ValueToPixels(dataPoint.Low);
         if (num == num2)
         {
             num2++;
         }
         Rectangle r = iRectangle.FromLTRB(base.XYSwapped, num, top, num2, bottom);
         this.I_FillBody.Draw(p, r);
     }
 }
 protected void DrawOpenClose(PaintArgs p, PlotXAxis xAxis, PlotYAxis yAxis, PlotDataPointCandlestick2 dataPoint)
 {
     if (this.ShowOpen)
     {
         double normalizedWidth  = base.GetNormalizedWidth(xAxis, this.WidthOpen, this.WidthStyleOpen);
         double normalizedHeight = base.GetNormalizedHeight(yAxis, this.HeightOpen, this.HeightStyleOpen);
         int    num  = xAxis.ScaleDisplay.ValueToPixels(dataPoint.X - normalizedWidth);
         int    num2 = xAxis.ScaleDisplay.ValueToPixels(dataPoint.X);
         int    num3 = yAxis.ScaleDisplay.ValueToPixels(dataPoint.Open - normalizedHeight / 2.0);
         int    num4 = yAxis.ScaleDisplay.ValueToPixels(dataPoint.Open + normalizedHeight / 2.0);
         if (num == num2)
         {
             num2++;
         }
         if (num3 == num4)
         {
             num4++;
         }
         Rectangle r = iRectangle.FromLTRB(base.XYSwapped, num, num3, num2, num4);
         this.I_FillOpen.Draw(p, r);
     }
     if (this.ShowClose)
     {
         double normalizedWidth  = base.GetNormalizedWidth(xAxis, this.WidthClose, this.WidthStyleClose);
         double normalizedHeight = base.GetNormalizedHeight(yAxis, this.HeightClose, this.HeightStyleClose);
         int    num  = xAxis.ScaleDisplay.ValueToPixels(dataPoint.X);
         int    num2 = xAxis.ScaleDisplay.ValueToPixels(dataPoint.X + normalizedWidth);
         int    num3 = yAxis.ScaleDisplay.ValueToPixels(dataPoint.Close - normalizedHeight / 2.0);
         int    num4 = yAxis.ScaleDisplay.ValueToPixels(dataPoint.Close + normalizedHeight / 2.0);
         if (num == num2)
         {
             num2++;
         }
         if (num3 == num4)
         {
             num4++;
         }
         Rectangle r = iRectangle.FromLTRB(base.XYSwapped, num, num3, num2, num4);
         this.I_FillClose.Draw(p, r);
     }
 }