Exemple #1
0
        //-------------------------------------------------------------------
        //
        //  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);
        }
Exemple #2
0
        // 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);
        }
Exemple #3
0
        // Token: 0x06006514 RID: 25876 RVA: 0x001C5FAC File Offset: 0x001C41AC
        private static void DumpTextParagraphResult(XmlTextWriter writer, TextParagraphResult paragraph, Visual visualParent)
        {
            writer.WriteStartElement("TextParagraph");
            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.DumpTextRange(writer, paragraph.StartPosition, paragraph.EndPosition);
            LayoutDump.DumpLineResults(writer, paragraph.Lines, visualParent2);
            LayoutDump.DumpParagraphResults(writer, "Floaters", paragraph.Floaters, visualParent2);
            LayoutDump.DumpParagraphResults(writer, "Figures", paragraph.Figures, visualParent2);
            writer.WriteEndElement();
        }