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

GetDrawingIter() private method

private GetDrawingIter ( EditableRun start, EditableRun stop ) : IEnumerable
start EditableRun
stop EditableRun
return IEnumerable
        internal IEnumerable<EditableRun> GetDrawingIter(EditableRun start, EditableRun stop)
        {
            if ((layerFlags & FLOWLAYER_HAS_MULTILINE) != 0)
            {
                List<EditableTextLine> lines = (List<EditableTextLine>)lineCollection;
                int j = lines.Count;
                for (int i = 0; i < j; ++i)
                {
                    LinkedListNode<EditableRun> curNode = lines[i].Last;
                    while (curNode != null)
                    {
                        yield return curNode.Value;
                        curNode = curNode.Previous;
                    }
                }
            }
            else
            {
                EditableTextLine onlyLine = (EditableTextLine)lineCollection;
                LinkedListNode<EditableRun> curNode = onlyLine.Last;
                while (curNode != null)
                {
                    yield return curNode.Value;
                    curNode = curNode.Previous;
                }
            }
        }

Usage Example

        public IEnumerable <EditableRun> GetPrintableTextRunIter()
        {
            EditableRun startRun = null;

            if (startPoint.TextRun == null)
            {
                EditableTextLine line = startPoint.EditableLine;
                startRun = line.FirstRun;
            }
            else
            {
                startRun = startPoint.TextRun.NextTextRun;
            }

            EditableTextFlowLayer layer = startRun.OwnerEditableLine.editableFlowLayer;

            foreach (EditableRun t in layer.GetDrawingIter(startRun, endPoint.TextRun))
            {
                if (!t.IsLineBreak)
                {
                    yield return(t);
                }
            }
        }