1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Drawing; 5 using System.Windows.Forms; 6 7 namespace FastColoredTextBoxNS 8 { 9 public class VisualMarker 10 { 11 public readonly Rectangle rectangle; 12 VisualMarker(Rectangle rectangle)13 public VisualMarker(Rectangle rectangle) 14 { 15 this.rectangle = rectangle; 16 } 17 Draw(Graphics gr, Pen pen)18 public virtual void Draw(Graphics gr, Pen pen) 19 { 20 } 21 22 public virtual Cursor Cursor 23 { 24 get { return Cursors.Hand; } 25 } 26 } 27 28 public class CollapseFoldingMarker: VisualMarker 29 { 30 public readonly int iLine; 31 CollapseFoldingMarker(int iLine, Rectangle rectangle)32 public CollapseFoldingMarker(int iLine, Rectangle rectangle) 33 : base(rectangle) 34 { 35 this.iLine = iLine; 36 } 37 Draw(Graphics gr, Pen pen, Brush backgroundBrush, Pen forePen)38 public void Draw(Graphics gr, Pen pen, Brush backgroundBrush, Pen forePen) 39 { 40 //draw minus 41 gr.FillRectangle(backgroundBrush, rectangle); 42 gr.DrawRectangle(pen, rectangle); 43 gr.DrawLine(forePen, rectangle.Left + 2, rectangle.Top + rectangle.Height / 2, rectangle.Right - 2, rectangle.Top + rectangle.Height / 2); 44 } 45 } 46 47 public class ExpandFoldingMarker : VisualMarker 48 { 49 public readonly int iLine; 50 ExpandFoldingMarker(int iLine, Rectangle rectangle)51 public ExpandFoldingMarker(int iLine, Rectangle rectangle) 52 : base(rectangle) 53 { 54 this.iLine = iLine; 55 } 56 Draw(Graphics gr, Pen pen, Brush backgroundBrush, Pen forePen)57 public void Draw(Graphics gr, Pen pen, Brush backgroundBrush, Pen forePen) 58 { 59 //draw plus 60 gr.FillRectangle(backgroundBrush, rectangle); 61 gr.DrawRectangle(pen, rectangle); 62 gr.DrawLine(forePen, rectangle.Left + 2, rectangle.Top + rectangle.Height / 2, rectangle.Right - 2, rectangle.Top + rectangle.Height / 2); 63 gr.DrawLine(forePen, rectangle.Left + rectangle.Width / 2, rectangle.Top + 2, rectangle.Left + rectangle.Width / 2, rectangle.Bottom - 2); 64 } 65 } 66 67 public class FoldedAreaMarker : VisualMarker 68 { 69 public readonly int iLine; 70 FoldedAreaMarker(int iLine, Rectangle rectangle)71 public FoldedAreaMarker(int iLine, Rectangle rectangle) 72 : base(rectangle) 73 { 74 this.iLine = iLine; 75 } 76 Draw(Graphics gr, Pen pen)77 public override void Draw(Graphics gr, Pen pen) 78 { 79 gr.DrawRectangle(pen, rectangle); 80 } 81 } 82 83 public class StyleVisualMarker : VisualMarker 84 { 85 public Style Style{get;private set;} 86 StyleVisualMarker(Rectangle rectangle, Style style)87 public StyleVisualMarker(Rectangle rectangle, Style style) 88 : base(rectangle) 89 { 90 this.Style = style; 91 } 92 } 93 94 public class VisualMarkerEventArgs : MouseEventArgs 95 { 96 public Style Style { get; private set; } 97 public StyleVisualMarker Marker { get; private set; } 98 VisualMarkerEventArgs(Style style, StyleVisualMarker marker, MouseEventArgs args)99 public VisualMarkerEventArgs(Style style, StyleVisualMarker marker, MouseEventArgs args) 100 : base(args.Button, args.Clicks, args.X, args.Y, args.Delta) 101 { 102 this.Style = style; 103 this.Marker = marker; 104 } 105 } 106 } 107