public static IReadOnlyList <IAttributedText> CreateParagraphs(this IAttributedText attributedText) { if (attributedText?.Text == null) { return(null); } List <IAttributedText> paragraphs = new List <IAttributedText>(); int start = 0; int attributeIndex = 0; using (var sr = new StringReader(attributedText.Text)) { string line; while ((line = sr.ReadLine()) != null) { var length = line.Length; var runs = new List <IAttributedTextRun>(); attributeIndex = attributedText.CreateParagraphRun(start, length, runs, attributeIndex); var paragraph = new AttributedText(line, runs); paragraphs.Add(paragraph); start += length + 1; } } return(paragraphs); }
internal static List <IAttributedTextRun> OptimizeRuns(this IAttributedText attributedText) { if (attributedText?.Text == null) { return(null); } if (attributedText is AbstractAttributedText abstractAttributedText && abstractAttributedText.Optimal) { if (attributedText.Runs == null) { return(null); } if (attributedText.Runs is List <IAttributedTextRun> list) { return(list); } return(attributedText.Runs.ToList()); } var start = 0; var attributeIndex = 0; var text = attributedText.Text; var length = text.Length; var runs = new List <IAttributedTextRun>(); attributedText.CreateParagraphRun(start, length, runs, attributeIndex); return(runs); }
public static IAttributedText Optimize(this IAttributedText attributedText) { if (attributedText?.Text == null) { return(null); } if (attributedText is AbstractAttributedText abstractAttributedText && abstractAttributedText.Optimal) { return(attributedText); } var start = 0; var attributeIndex = 0; var text = attributedText.Text; var length = text.Length; var runs = new List <IAttributedTextRun>(); attributedText.CreateParagraphRun(start, length, runs, attributeIndex); return(new AttributedText(text, runs, true)); }