private static void AdjustInlineSourcePosition(Inline inline, PositionTracker tracker, ref Stack<Inline> stack) { if (stack == null) stack = new Stack<Inline>(); while (inline != null) { inline.SourcePosition = tracker.CalculateInlineOrigin(inline.SourcePosition, true); inline.SourceLastPosition = tracker.CalculateInlineOrigin(inline.SourceLastPosition, false); if (inline.FirstChild != null) { if (inline.NextSibling != null) stack.Push(inline.NextSibling); inline = inline.FirstChild; } else if (inline.NextSibling != null) { inline = inline.NextSibling; } else if (stack.Count > 0) { inline = stack.Pop(); } else { inline = null; } } }
public int CalculateOrigin(int position, bool isStartPosition) { return(PositionTracker.CalculateOrigin(this.Offsets, this.OffsetCount, this.LineOffset + position, true, isStartPosition)); }