//------------------------------------------------------------------- // // Private Methods // //------------------------------------------------------------------- #region Private Methods // This method calculates the height of the first line if the element is TextBlock or FlowDocumentScrollViewer // Otherwise returns the element height private double GetFirstLineHeight(UIElement element) { // We need to find TextBlock/FlowDocumentScrollViewer if it is nested inside ContentPresenter // Common scenario when used in styles is that BulletDecorator content is a ContentPresenter UIElement text = FindText(element); ReadOnlyCollection <LineResult> lr = null; if (text != null) { TextBlock textElement = ((TextBlock)text); if (textElement.IsLayoutDataValid) { lr = textElement.GetLineResults(); } } else { text = FindFlowDocumentScrollViewer(element); if (text != null) { TextDocumentView tdv = ((IServiceProvider)text).GetService(typeof(ITextView)) as TextDocumentView; if (tdv != null && tdv.IsValid) { ReadOnlyCollection <ColumnResult> cr = tdv.Columns; if (cr != null && cr.Count > 0) { ColumnResult columnResult = cr[0]; ReadOnlyCollection <ParagraphResult> pr = columnResult.Paragraphs; if (pr != null && pr.Count > 0) { ContainerParagraphResult cpr = pr[0] as ContainerParagraphResult; if (cpr != null) { TextParagraphResult textParagraphResult = cpr.Paragraphs[0] as TextParagraphResult; if (textParagraphResult != null) { lr = textParagraphResult.Lines; } } } } } } } if (lr != null && lr.Count > 0) { Point ancestorOffset = new Point(); text.TransformToAncestor(element).TryTransform(ancestorOffset, out ancestorOffset); return(lr[0].LayoutBox.Height + ancestorOffset.Y * 2d); } return(element.RenderSize.Height); }
// Token: 0x06006515 RID: 25877 RVA: 0x001C6054 File Offset: 0x001C4254 private static void DumpContainerParagraphResult(XmlTextWriter writer, ContainerParagraphResult paragraph, Visual visualParent) { writer.WriteStartElement("ContainerParagraph"); writer.WriteStartElement("Element"); writer.WriteAttributeString("Type", paragraph.Element.GetType().FullName); writer.WriteEndElement(); LayoutDump.DumpRect(writer, "LayoutBox", paragraph.LayoutBox); Visual visualParent2 = LayoutDump.DumpParagraphOffset(writer, paragraph, visualParent); LayoutDump.DumpParagraphResults(writer, "Paragraphs", paragraph.Paragraphs, visualParent2); writer.WriteEndElement(); }
// Token: 0x06005BFA RID: 23546 RVA: 0x0019DB54 File Offset: 0x0019BD54 private double GetFirstLineHeight(UIElement element) { UIElement uielement = this.FindText(element); ReadOnlyCollection <LineResult> readOnlyCollection = null; if (uielement != null) { TextBlock textBlock = (TextBlock)uielement; if (textBlock.IsLayoutDataValid) { readOnlyCollection = textBlock.GetLineResults(); } } else { uielement = this.FindFlowDocumentScrollViewer(element); if (uielement != null) { TextDocumentView textDocumentView = ((IServiceProvider)uielement).GetService(typeof(ITextView)) as TextDocumentView; if (textDocumentView != null && textDocumentView.IsValid) { ReadOnlyCollection <ColumnResult> columns = textDocumentView.Columns; if (columns != null && columns.Count > 0) { ColumnResult columnResult = columns[0]; ReadOnlyCollection <ParagraphResult> paragraphs = columnResult.Paragraphs; if (paragraphs != null && paragraphs.Count > 0) { ContainerParagraphResult containerParagraphResult = paragraphs[0] as ContainerParagraphResult; if (containerParagraphResult != null) { TextParagraphResult textParagraphResult = containerParagraphResult.Paragraphs[0] as TextParagraphResult; if (textParagraphResult != null) { readOnlyCollection = textParagraphResult.Lines; } } } } } } } if (readOnlyCollection != null && readOnlyCollection.Count > 0) { Point inPoint = default(Point); uielement.TransformToAncestor(element).TryTransform(inPoint, out inPoint); return(readOnlyCollection[0].LayoutBox.Height + inPoint.Y * 2.0); } return(element.RenderSize.Height); }