using System; using CPF.Drawing; using CPF.ReoGrid.Graphics; using CPF.ReoGrid.Rendering; namespace CPF.ReoGrid.Chart { public class ColumnChartPlotView : ChartPlotView { public ColumnChartPlotView(AxisChart chart) : base(chart) { } protected override void OnPaint(RDrawingContext dc) { base.OnPaint(dc); Rect clientBounds = this.ClientBounds; double num = (double)clientBounds.Width * 0.7; bool flag = num < 20.0; if (!flag) { AxisChart axisChart = base.Chart as AxisChart; bool flag2 = axisChart == null; if (!flag2) { WorksheetChartDataSource dataSource = base.Chart.DataSource; int serialCount = dataSource.SerialCount; int categoryCount = dataSource.CategoryCount; double num2 = num / (double)categoryCount; double num3 = ((double)clientBounds.Width - num) / (double)(categoryCount + 1); double num4 = num2 / (double)serialCount; AxisDataInfo primaryAxisInfo = axisChart.PrimaryAxisInfo; double num5 = num3; IGraphics graphics = dc.Graphics; for (int i = 0; i < categoryCount; i++) { for (int j = 0; j < dataSource.SerialCount; j++) { PlotPointColumn plotPointColumn = axisChart.PlotDataPoints[j][i]; bool hasValue = plotPointColumn.hasValue; if (hasValue) { IDataSerialStyle dataSerialStyle = axisChart.DataSerialStyles[j]; bool flag3 = plotPointColumn.value > 0f; if (flag3) { IGraphics graphics2 = graphics; float num6 = (float)num5; float num7 = axisChart.ZeroHeight - plotPointColumn.value; float num8 = (float)(num4 - 1.0); graphics2.DrawAndFillRectangle(new Rect(ref num6, ref num7, ref num8, ref plotPointColumn.value), dataSerialStyle.LineColor, dataSerialStyle.FillColor); } else { IGraphics graphics3 = graphics; float num6 = (float)num5; float num7 = axisChart.ZeroHeight; float num8 = (float)(num4 - 1.0); float num9 = -plotPointColumn.value; graphics3.DrawAndFillRectangle(new Rect(ref num6, ref num7, ref num8, ref num9), dataSerialStyle.LineColor, dataSerialStyle.FillColor); } } num5 += num4; } num5 += num3; } } } } } }