private InlineItemLine[] AddLineNumber(IHighlightRawInfo infor, InlineItemLine[] lines) { var startLine = infor.StartLineNumber; int i = 0; var offsets = infor.Offsets ?? lines.Select(n => i++).ToArray(); var offsetIndex = 0; int num = 0, preNum = 0; foreach (var line in lines) { if (offsets.Count() > offsetIndex) { num = startLine + offsets.ElementAt(offsetIndex++); preNum = num; } else { num = preNum + 1; preNum = num; } line.AddBeginning(CreateRun("\t", regularWeight)); line.AddBeginning(CreateLineNumberHyperLink(num)); } return(lines); }
private Span ClearSpan(IHighlightRawInfo inforValue, Span span, IEnumerable <int> emptyLineOffsets) { var runs = RemoveEmptyLines(inforValue, span.Inlines.Cast <Run>(), emptyLineOffsets).ToArray(); span.Inlines.Clear(); span.Inlines.AddRange(runs); return(span); }
private IEnumerable <InlineItemLine> AlignIndention(InlineItemLine[] lines, IHighlightRawInfo info) { if (lines.Any()) { var lastHead = lines.Last().GetHeadingWhiteSpace(); var firstHead = lines.First().GetHeadingWhiteSpace(); if (firstHead.Equals(string.Empty) && !lastHead.Equals(string.Empty)) { lines.First().AddBeginning(CreateRun(lastHead, regularWeight)); } } return(lines); }
private IEnumerable <Inline> RemoveEmptyLines(IHighlightRawInfo inforValue, IEnumerable <Run> terms, IEnumerable <int> emptyLineOffsets) { var items = new List <Inline>(); var lines = BreakToRunLines(terms).Select(l => l.RemoveEmptyRun()).ToArray(); lines = lines.Where(l => !l.IsEmpty()).ToArray(); lines = AddEmptyLines(lines.ToList(), emptyLineOffsets).ToArray(); if (inforValue.IndOption == IndentionOption.NoIndention) { lines = lines.Select(l => l.RemoveHeadingWhiteSpace()).ToArray(); } lines = AddLineNumber(inforValue, RemoveHeadingAndTrailingEmptyLines(AlignIndention(lines, inforValue))); foreach (var line in lines) { items.AddRange(line.GetItems()); items.Add(CreateRun(Environment.NewLine, regularWeight)); } return(items); }
private IEnumerable<Inline> RemoveEmptyLines(IHighlightRawInfo inforValue, IEnumerable<Run> terms, IEnumerable<int> emptyLineOffsets) { var items = new List<Inline>(); var lines = BreakToRunLines(terms).Select(l => l.RemoveEmptyRun()).ToArray(); lines = lines.Where(l => !l.IsEmpty()).ToArray(); lines = AddEmptyLines(lines.ToList(), emptyLineOffsets).ToArray(); if (inforValue.IndOption == IndentionOption.NoIndention) { lines = lines.Select(l => l.RemoveHeadingWhiteSpace()).ToArray(); } lines = AddLineNumber(inforValue, RemoveHeadingAndTrailingEmptyLines(AlignIndention(lines, inforValue))); foreach (var line in lines) { items.AddRange(line.GetItems()); items.Add(CreateRun(Environment.NewLine, regularWeight)); } return items; }
private Span ClearSpan(IHighlightRawInfo inforValue, Span span, IEnumerable<int> emptyLineOffsets) { var runs = RemoveEmptyLines(inforValue, span.Inlines.Cast<Run>(), emptyLineOffsets).ToArray(); span.Inlines.Clear(); span.Inlines.AddRange(runs); return span; }
private IEnumerable<InlineItemLine> AlignIndention(InlineItemLine[] lines, IHighlightRawInfo info) { if (lines.Any()) { var lastHead = lines.Last().GetHeadingWhiteSpace(); var firstHead = lines.First().GetHeadingWhiteSpace(); if (firstHead.Equals(string.Empty) && !lastHead.Equals(string.Empty)) { lines.First().AddBeginning(CreateRun(lastHead, regularWeight)); } } return lines; }
private void AddLineNumberHyperlinks(IHighlightRawInfo infor, int num, InlineItemLine line) { foreach (var item in line.GetItems()) { var run = item as Run; if (run != null) AddLineNumberHyperlink(run, num, infor); } }
private void AddLineNumberHyperlink(Run run, int number, IHighlightRawInfo infor) { run.MouseUp += delegate(object sender, MouseButtonEventArgs e) { if (e.ClickCount == 1 && e.LeftButton == MouseButtonState.Released) { FileOpener.OpenFile(infor.FullFilePath, number); } }; }
private InlineItemLine[] AddLineNumber(IHighlightRawInfo infor, InlineItemLine[] lines) { var startLine = infor.StartLineNumber; int i = 0; var offsets = infor.Offsets ?? lines.Select(n => i ++).ToArray(); var offsetIndex = 0; int num = 0, preNum = 0; foreach (var line in lines) { if (offsets.Count() > offsetIndex) { num = startLine + offsets.ElementAt(offsetIndex++); preNum = num; } else { num = preNum + 1; preNum = num; } line.AddBeginning(CreateRun("\t", regularWeight)); line.AddBeginning(CreateRun(num.ToString(), regularWeight)); AddLineNumberHyperlinks(infor, num, line); } return lines; }