AccessibilitySnapshot CalculateSnapshot(Line[] lines, Line[] selectedLines) { // add a space at the end for the space between the prompt and the caret if (terminal.Buffers.IsAlternateBuffer) { if (lines.Length > 0) { var lastLine = lines [lines.Length - 1]; lastLine.Add(new LineFragment(" ", lastLine.StartLine, lastLine.Length)); } } var count = CountLines(lines); int caret = CalculateCaretPosition(count.Item1); AccessibilitySnapshot.Range selectedRange = new AccessibilitySnapshot.Range(); if (selectedLines != null) { selectedRange = CalculateSelectedTextRange(lines, selectedLines); } AccessibilitySnapshot.Range visble = new AccessibilitySnapshot.Range { Start = 0, Length = count.Item2 }; var result = new AccessibilitySnapshot(lines, visble, caret, selectedRange); return(result); }
public AccessibilitySnapshot GetSnapshot() { if (cache == null) { Line [] selectedLines = null; if (activeSelection.Active) { selectedLines = activeSelection.GetSelectedLines(); } var result = CalculateSnapshot(selectedLines); cache = result; } return(cache); }
public void Invalidate() { cache = null; }