ICSharpCode.AvalonEdit.Editing.LineNumberMargin.GetTextLineSegment C# (CSharp) Method

GetTextLineSegment() private method

private GetTextLineSegment ( System.Windows.Input.MouseEventArgs e ) : SimpleSegment
e System.Windows.Input.MouseEventArgs
return SimpleSegment
        SimpleSegment GetTextLineSegment(MouseEventArgs e)
        {
            Point pos = e.GetPosition(TextView);
            pos.X = 0;
            pos.Y += TextView.VerticalOffset;
            VisualLine vl = TextView.GetVisualLineFromVisualTop(pos.Y);
            if (vl == null)
                return SimpleSegment.Invalid;
            TextLine tl = vl.GetTextLineByVisualYPosition(pos.Y);
            int visualStartColumn = vl.GetTextLineVisualStartColumn(tl);
            int visualEndColumn = visualStartColumn + tl.Length;
            int relStart = vl.FirstDocumentLine.Offset;
            int startOffset = vl.GetRelativeOffset(visualStartColumn) + relStart;
            int endOffset = vl.GetRelativeOffset(visualEndColumn) + relStart;
            if (endOffset == vl.LastDocumentLine.Offset + vl.LastDocumentLine.Length)
                endOffset += vl.LastDocumentLine.DelimiterLength;
            return new SimpleSegment(startOffset, endOffset - startOffset);
        }