public static TextRange[] GetTextPointers(IHexAsnNode treeNode, BindableRichTextBox rtb, ScrollViewer scroller) { TextPointer[] pointers = new TextPointer[6]; // tag pointers[0] = rtb.Document.ContentStart.GetPositionAtOffset( getOffset(treeNode.Offset) ); pointers[1] = rtb.Document.ContentStart.GetPositionAtOffset( getOffset(treeNode.Offset + 1) ); // length bytes pointers[2] = rtb.Document.ContentStart.GetPositionAtOffset( getOffset(treeNode.Offset + 1) ); pointers[3] = rtb.Document.ContentStart.GetPositionAtOffset( getOffset(treeNode.PayloadStartOffset) ); //// payload pointers[4] = rtb.Document.ContentStart.GetPositionAtOffset( getOffset(treeNode.PayloadStartOffset) ); pointers[5] = rtb.Document.ContentStart.GetPositionAtOffset( getOffset(treeNode.PayloadStartOffset + treeNode.PayloadLength) ); ScrollToPosition(pointers[0], rtb, scroller); return(GetRanges(pointers)); }
static void ScrollToPosition(TextPointer startPointer, BindableRichTextBox rtb, ScrollViewer scroller) { rtb.CaretPosition = startPointer; scroller.ScrollToVerticalOffset(rtb.FontSize * (rtb.CurrentLine - 1)); }