using System; using CPF.Drawing; using CPF.ReoGrid.Drawing; namespace CPF.ReoGrid.Rendering { internal sealed class BorderPainter : IDisposable { public static BorderPainter Instance { get { bool flag = BorderPainter.instance == null; if (flag) { BorderPainter.instance = new BorderPainter(); } return BorderPainter.instance; } } private BorderPainter() { CPFPen cpfpen = new CPFPen(Color.Black, 1f); this.pens[1] = cpfpen; cpfpen = new CPFPen(Color.Black, 1f); cpfpen.DashStyle = DashStyles.Dash; this.pens[3] = cpfpen; cpfpen = new CPFPen(Color.Black, 1f); cpfpen.DashStyle = DashStyles.Dot; this.pens[2] = cpfpen; cpfpen = new CPFPen(Color.Black, 3f); this.pens[4] = cpfpen; cpfpen = new CPFPen(Color.Black, 1f); this.pens[5] = cpfpen; cpfpen = new CPFPen(Color.Black, 1f); cpfpen.DashStyle = DashStyles.DashDot; this.pens[6] = cpfpen; cpfpen = new CPFPen(Color.Black, 1f); cpfpen.DashStyle = DashStyles.DashDotDot; this.pens[7] = cpfpen; cpfpen = new CPFPen(Color.Black, 2f); cpfpen.DashStyle = DashStyles.DashDot; this.pens[8] = cpfpen; cpfpen = new CPFPen(Color.Black, 2f); cpfpen.DashStyle = DashStyles.DashDotDot; this.pens[9] = cpfpen; cpfpen = new CPFPen(Color.Black, 2f); cpfpen.DashStyle = DashStyles.Dot; this.pens[11] = cpfpen; cpfpen = new CPFPen(Color.Black, 2f); cpfpen.DashStyle = DashStyles.Dash; this.pens[10] = cpfpen; cpfpen = new CPFPen(Color.Black, 2f); this.pens[12] = cpfpen; cpfpen = new CPFPen(Color.Black, 3f); this.pens[13] = cpfpen; } public void DrawLine(DrawingContext g, float x, float y, float x2, float y2, RangeBorderStyle style) { this.DrawLine(g, x, y, x2, y2, style.Style, style.Color, null); } public void DrawLine(DrawingContext g, float x, float y, float x2, float y2, BorderLineStyle style, Color color, CPFPen bgPen = null) { bool flag = style == BorderLineStyle.None; if (!flag) { CPFPen cpfpen = this.pens[(int)style]; Stroke stroke = cpfpen.Stroke; Brush brush = cpfpen.Brush; Point point = new Point(ref x, ref y); Point point2 = new Point(ref x2, ref y2); g.DrawLine(stroke, brush, point, point2); bool flag2 = style == BorderLineStyle.DoubleLine && bgPen != null; if (flag2) { lock (bgPen) { stroke = bgPen.Stroke; Brush brush2 = bgPen.Brush; point = new Point(ref x, ref y); point2 = new Point(ref x2, ref y2); g.DrawLine(stroke, brush2, point, point2); } } } } public void Dispose() { } private static BorderPainter instance; private readonly CPFPen[] pens = new CPFPen[14]; } }