예제 #1
0
        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);
        }
예제 #2
0
        public AccessibilitySnapshot GetSnapshot()
        {
            if (cache == null)
            {
                Line [] selectedLines = null;
                if (activeSelection.Active)
                {
                    selectedLines = activeSelection.GetSelectedLines();
                }

                var result = CalculateSnapshot(selectedLines);
                cache = result;
            }

            return(cache);
        }
예제 #3
0
 public void Invalidate()
 {
     cache = null;
 }