protected virtual void ProcessChartType(bool selection, ChartGraphics graph, CommonElements common, ChartArea area, Series seriesToDraw)
        {
            foreach (Series item in common.DataManager.Series)
            {
                if (item.ChartArea != area.Name || !item.IsVisible())
                {
                    continue;
                }
                if (string.Compare(item.ChartTypeName, Name, ignoreCase: true, CultureInfo.CurrentCulture) != 0)
                {
                    throw new InvalidOperationException(SR.ExceptionChartTypeCanNotCombine(item.ChartTypeName, Name));
                }
                if (!selection)
                {
                    common.EventsManager.OnBackPaint(item, new ChartPaintEventArgs(graph, common, area.PlotAreaPosition));
                }
                Axis     axis           = area.GetAxis(AxisName.Y, AxisType.Primary, item.YSubAxisName);
                double   viewMinimum    = axis.GetViewMinimum();
                double   viewMaximum    = axis.GetViewMaximum();
                PointF[] pointsPosition = GetPointsPosition(graph, area, item);
                int      num            = 0;
                if (item.ShadowOffset != 0 && !selection)
                {
                    graph.shadowDrawingMode = true;
                    foreach (DataPoint point in item.Points)
                    {
                        int num2 = num + 1;
                        if (num2 >= item.Points.Count)
                        {
                            num2 = 0;
                        }
                        DataPointAttributes dataPointAttributes = point;
                        if (item.Points[num2].Empty)
                        {
                            dataPointAttributes = item.Points[num2];
                        }
                        Color left = dataPointAttributes.Color;
                        _ = dataPointAttributes.BorderColor;
                        int               borderWidth  = dataPointAttributes.BorderWidth;
                        ChartDashStyle    borderStyle  = dataPointAttributes.BorderStyle;
                        RadarDrawingStyle drawingStyle = GetDrawingStyle(item, point);
                        if (axis.GetLogValue(point.YValues[0]) > viewMaximum || axis.GetLogValue(point.YValues[0]) < viewMinimum || axis.GetLogValue(item.Points[num2].YValues[0]) > viewMaximum || axis.GetLogValue(item.Points[num2].YValues[0]) < viewMinimum)
                        {
                            num++;
                            continue;
                        }
                        switch (drawingStyle)
                        {
                        case RadarDrawingStyle.Line:
                            _           = dataPointAttributes.Color;
                            borderWidth = ((borderWidth < 1) ? 1 : borderWidth);
                            borderStyle = ((borderStyle == ChartDashStyle.NotSet) ? ChartDashStyle.Solid : borderStyle);
                            left        = Color.Transparent;
                            break;

                        case RadarDrawingStyle.Marker:
                            left = Color.Transparent;
                            break;
                        }
                        if (num2 == 0 && !RequireClosedFigure() && drawingStyle != 0)
                        {
                            break;
                        }
                        if (left != Color.Transparent && left != Color.Empty && item.ShadowOffset != 0)
                        {
                            GraphicsPath graphicsPath = new GraphicsPath();
                            graphicsPath.AddLine(graph.GetAbsolutePoint(area.circularCenter), pointsPosition[num]);
                            graphicsPath.AddLine(pointsPosition[num], pointsPosition[num2]);
                            graphicsPath.AddLine(pointsPosition[num2], graph.GetAbsolutePoint(area.circularCenter));
                            Matrix matrix = new Matrix();
                            matrix.Translate(item.ShadowOffset, item.ShadowOffset);
                            graphicsPath.Transform(matrix);
                            graph.FillPath(new SolidBrush(item.ShadowColor), graphicsPath);
                        }
                        num++;
                    }
                    graph.shadowDrawingMode = false;
                }
                num = 0;
                foreach (DataPoint point2 in item.Points)
                {
                    point2.positionRel = graph.GetRelativePoint(pointsPosition[num]);
                    int num3 = num + 1;
                    if (num3 >= item.Points.Count)
                    {
                        num3 = 0;
                    }
                    DataPointAttributes dataPointAttributes2 = point2;
                    if (item.Points[num3].Empty)
                    {
                        dataPointAttributes2 = item.Points[num3];
                    }
                    Color             color          = dataPointAttributes2.Color;
                    Color             color2         = dataPointAttributes2.BorderColor;
                    int               num4           = dataPointAttributes2.BorderWidth;
                    ChartDashStyle    chartDashStyle = dataPointAttributes2.BorderStyle;
                    RadarDrawingStyle drawingStyle2  = GetDrawingStyle(item, point2);
                    if (axis.GetLogValue(point2.YValues[0]) > viewMaximum || axis.GetLogValue(point2.YValues[0]) < viewMinimum || axis.GetLogValue(item.Points[num3].YValues[0]) > viewMaximum || axis.GetLogValue(item.Points[num3].YValues[0]) < viewMinimum)
                    {
                        num++;
                        continue;
                    }
                    switch (drawingStyle2)
                    {
                    case RadarDrawingStyle.Line:
                        color2         = dataPointAttributes2.Color;
                        num4           = ((num4 < 1) ? 1 : num4);
                        chartDashStyle = ((chartDashStyle == ChartDashStyle.NotSet) ? ChartDashStyle.Solid : chartDashStyle);
                        color          = Color.Transparent;
                        break;

                    case RadarDrawingStyle.Marker:
                        color = Color.Transparent;
                        break;
                    }
                    GraphicsPath graphicsPath2 = new GraphicsPath();
                    if (num3 == 0 && !RequireClosedFigure() && drawingStyle2 != 0)
                    {
                        if (common.ProcessModeRegions)
                        {
                            AddSelectionPath(area, graphicsPath2, pointsPosition, num, num3, graph.GetAbsolutePoint(area.circularCenter), 0);
                            int insertIndex = common.HotRegionsList.FindInsertIndex();
                            common.HotRegionsList.AddHotRegion(insertIndex, graphicsPath2, relativePath: false, graph, point2, item.Name, num);
                        }
                        break;
                    }
                    if (color != Color.Transparent && color != Color.Empty)
                    {
                        GraphicsPath graphicsPath3 = new GraphicsPath();
                        graphicsPath3.AddLine(graph.GetAbsolutePoint(area.circularCenter), pointsPosition[num]);
                        graphicsPath3.AddLine(pointsPosition[num], pointsPosition[num3]);
                        graphicsPath3.AddLine(pointsPosition[num3], graph.GetAbsolutePoint(area.circularCenter));
                        if (common.ProcessModePaint)
                        {
                            Brush brush = graph.CreateBrush(graphicsPath3.GetBounds(), color, dataPointAttributes2.BackHatchStyle, dataPointAttributes2.BackImage, dataPointAttributes2.BackImageMode, dataPointAttributes2.BackImageTransparentColor, dataPointAttributes2.BackImageAlign, dataPointAttributes2.BackGradientType, dataPointAttributes2.BackGradientEndColor);
                            graph.StartHotRegion(point2);
                            graph.StartAnimation();
                            graph.FillPath(brush, graphicsPath3);
                            graph.StopAnimation();
                            graph.EndHotRegion();
                        }
                        if (common.ProcessModeRegions)
                        {
                            AddSelectionPath(area, graphicsPath2, pointsPosition, num, num3, graph.GetAbsolutePoint(area.circularCenter), 0);
                        }
                    }
                    if (color2 != Color.Empty && num4 > 0 && chartDashStyle != 0 && num3 < item.Points.Count)
                    {
                        if (common.ProcessModePaint)
                        {
                            graph.StartHotRegion(point2);
                            graph.StartAnimation();
                            graph.DrawLineAbs(color2, num4, chartDashStyle, pointsPosition[num], pointsPosition[num3], item.ShadowColor, (color == Color.Transparent || color == Color.Empty) ? item.ShadowOffset : 0);
                            graph.StopAnimation();
                            graph.EndHotRegion();
                        }
                        if (common.ProcessModeRegions)
                        {
                            AddSelectionPath(area, graphicsPath2, pointsPosition, num, num3, PointF.Empty, num4);
                        }
                    }
                    if (common.ProcessModeRegions)
                    {
                        int insertIndex2 = common.HotRegionsList.FindInsertIndex();
                        common.HotRegionsList.AddHotRegion(insertIndex2, graphicsPath2, relativePath: false, graph, point2, item.Name, num);
                    }
                    num++;
                }
                int num5 = 0;
                num = 0;
                foreach (DataPoint point3 in item.Points)
                {
                    Color             markerColor   = point3.MarkerColor;
                    MarkerStyle       markerStyle   = point3.MarkerStyle;
                    RadarDrawingStyle drawingStyle3 = GetDrawingStyle(item, point3);
                    if (axis.GetLogValue(point3.YValues[0]) > viewMaximum || axis.GetLogValue(point3.YValues[0]) < viewMinimum)
                    {
                        num++;
                        continue;
                    }
                    if (drawingStyle3 == RadarDrawingStyle.Marker && markerColor.IsEmpty)
                    {
                        markerColor = point3.Color;
                    }
                    SizeF markerSize = GetMarkerSize(graph, common, area, point3, point3.MarkerSize, point3.MarkerImage);
                    if (common.ProcessModePaint)
                    {
                        if (markerStyle != 0 || point3.MarkerImage.Length > 0)
                        {
                            if (markerColor.IsEmpty)
                            {
                                markerColor = point3.Color;
                            }
                            if (num5 == 0)
                            {
                                graph.StartHotRegion(point3);
                                graph.StartAnimation();
                                graph.DrawMarkerAbs(pointsPosition[num], markerStyle, (int)markerSize.Height, markerColor, point3.MarkerBorderColor, point3.MarkerBorderWidth, point3.MarkerImage, point3.MarkerImageTransparentColor, (point3.series != null) ? point3.series.ShadowOffset : 0, (point3.series != null) ? point3.series.ShadowColor : Color.Empty, new RectangleF(pointsPosition[num].X, pointsPosition[num].Y, markerSize.Width, markerSize.Height), forceAntiAlias: false);
                                graph.StopAnimation();
                                graph.EndHotRegion();
                            }
                            num5++;
                            if (item.MarkerStep == num5)
                            {
                                num5 = 0;
                            }
                        }
                        graph.StartAnimation();
                        DrawLabels(area, graph, common, pointsPosition[num], (int)markerSize.Height, point3, item, num);
                        graph.StopAnimation();
                    }
                    if (common.ProcessModeRegions)
                    {
                        SizeF  relativeSize  = graph.GetRelativeSize(markerSize);
                        PointF relativePoint = graph.GetRelativePoint(pointsPosition[num]);
                        int    insertIndex3  = common.HotRegionsList.FindInsertIndex();
                        if (point3.MarkerStyle == MarkerStyle.Circle)
                        {
                            float[] array = new float[3]
                            {
                                relativePoint.X,
                                relativePoint.Y,
                                relativeSize.Width / 2f
                            };
                            common.HotRegionsList.AddHotRegion(insertIndex3, graph, array[0], array[1], array[2], point3, item.Name, num);
                        }
                        else
                        {
                            common.HotRegionsList.AddHotRegion(insertIndex3, graph, new RectangleF(relativePoint.X - relativeSize.Width / 2f, relativePoint.Y - relativeSize.Height / 2f, relativeSize.Width, relativeSize.Height), point3, item.Name, num);
                        }
                    }
                    num++;
                }
                if (!selection)
                {
                    common.EventsManager.OnPaint(item, new ChartPaintEventArgs(graph, common, area.PlotAreaPosition));
                }
            }
        }