LayoutFarm.Text.EditableTextFlowLayer.GetTextLineAtPos C# (CSharp) Method

GetTextLineAtPos() private method

private GetTextLineAtPos ( int y ) : EditableTextLine
y int
return EditableTextLine
        internal EditableTextLine GetTextLineAtPos(int y)
        {
            if (lineCollection != null)
            {
                if (lineCollection is List<EditableTextLine>)
                {
                    List<EditableTextLine> lines = lineCollection as List<EditableTextLine>;
                    if (lines != null)
                    {
                        int j = lines.Count;
                        for (int i = 0; i < j; ++i)
                        {
                            EditableTextLine line = lines[i];
                            if (line.IntersectsWith(y))
                            {
                                return line;
                            }
                        }
                    }
                }
                else
                {
                    EditableTextLine line = (EditableTextLine)lineCollection;
                    if (line.IntersectsWith(y))
                    {
                        return line;
                    }
                }
            }
            return null;
        }
        void AppendLine(EditableTextLine line)

Usage Example

        public Rectangle GetRectAreaOf(int beginlineNum, int beginColumnNum, int endLineNum, int endColumnNum)
        {
            EditableTextFlowLayer flowLayer = this.textLayer;
            EditableTextLine      beginLine = flowLayer.GetTextLineAtPos(beginlineNum);

            if (beginLine == null)
            {
                return(Rectangle.Empty);
            }
            if (beginlineNum == endLineNum)
            {
                VisualPointInfo beginPoint = beginLine.GetTextPointInfoFromCharIndex(beginColumnNum);
                VisualPointInfo endPoint   = beginLine.GetTextPointInfoFromCharIndex(endColumnNum);
                return(new Rectangle(beginPoint.X, beginLine.Top, endPoint.X, beginLine.ActualLineHeight));
            }
            else
            {
                VisualPointInfo  beginPoint = beginLine.GetTextPointInfoFromCharIndex(beginColumnNum);
                EditableTextLine endLine    = flowLayer.GetTextLineAtPos(endLineNum);
                VisualPointInfo  endPoint   = endLine.GetTextPointInfoFromCharIndex(endColumnNum);
                return(new Rectangle(beginPoint.X, beginLine.Top, endPoint.X, beginLine.ActualLineHeight));
            }
        }