/// <summary>
        /// Returns a different colored pen for each entity type.
        /// </summary>
        private static Pen GetColoredPenFromType(LayoutEntityType type)
        {
            switch (type)
            {
            case LayoutEntityType.Cell:
                return(Pens.Purple);

            case LayoutEntityType.Column:
                return(Pens.Green);

            case LayoutEntityType.Comment:
                return(Pens.LightBlue);

            case LayoutEntityType.Endnote:
                return(Pens.DarkRed);

            case LayoutEntityType.Footnote:
                return(Pens.DarkBlue);

            case LayoutEntityType.HeaderFooter:
                return(Pens.DarkGreen);

            case LayoutEntityType.Line:
                return(Pens.Blue);

            case LayoutEntityType.NoteSeparator:
                return(Pens.LightGreen);

            case LayoutEntityType.Page:
                return(Pens.Red);

            case LayoutEntityType.Row:
                return(Pens.Orange);

            case LayoutEntityType.Span:
                return(Pens.Red);

            case LayoutEntityType.TextBox:
                return(Pens.Yellow);

            default:
                return(Pens.Red);
            }
        }
        /// <summary>
        /// Returns a collection of child entities which match the specified type.
        /// </summary>
        /// <param name="type">Specifies the type of entities to select.</param>
        /// <param name="isDeep">True to select from all child entities recursively. False to select only among immediate children</param>
        public LayoutCollection <LayoutEntity> GetChildEntities(LayoutEntityType type, bool isDeep)
        {
            List <LayoutEntity> childList = new List <LayoutEntity>();

            foreach (LayoutEntity entity in mChildEntities)
            {
                if ((entity.Type & type) == entity.Type)
                {
                    childList.Add(entity);
                }

                if (isDeep)
                {
                    childList.AddRange((IEnumerable <LayoutEntity>)entity.GetChildEntities(type, true));
                }
            }

            return(new LayoutCollection <LayoutEntity>(childList));
        }
        private void CollectLinesOfMarkersCore(LayoutEntityType type)
        {
            List <RenderedLine> collectedLines = new List <RenderedLine>();

            foreach (RenderedPage page in Pages)
            {
                foreach (LayoutEntity story in page.GetChildEntities(type, false))
                {
                    foreach (RenderedLine line in story.GetChildEntities(LayoutEntityType.Line, true))
                    {
                        collectedLines.Add(line);
                        foreach (RenderedSpan span in line.Spans)
                        {
                            if (mLayoutToNodeLookup.ContainsKey(span.LayoutObject))
                            {
                                if (span.Kind == "PARAGRAPH" || span.Kind == "ROW" || span.Kind == "CELL" ||
                                    span.Kind == "SECTION")
                                {
                                    Node node = mLayoutToNodeLookup[span.LayoutObject];

                                    if (node.NodeType == NodeType.Row)
                                    {
                                        node = ((Row)node).LastCell.LastParagraph;
                                    }

                                    foreach (RenderedLine collectedLine in collectedLines)
                                    {
                                        collectedLine.SetParentNode(node);
                                    }

                                    collectedLines = new List <RenderedLine>();
                                }
                                else
                                {
                                    span.SetParentNode(mLayoutToNodeLookup[span.LayoutObject]);
                                }
                            }
                        }
                    }
                }
            }
        }
        private void CollectLinesOfMarkersCore(LayoutEntityType type)
        {
            List<RenderedLine> collectedLines = new List<RenderedLine>();

            foreach (RenderedPage page in Pages)
            {
                foreach (LayoutEntity story in page.GetChildEntities(type, false))
                {
                    foreach (RenderedLine line in story.GetChildEntities(LayoutEntityType.Line, true))
                    {
                        collectedLines.Add(line);
                        foreach (RenderedSpan span in line.Spans)
                        {
                            if (span.Kind == "PARAGRAPH" || span.Kind == "ROW" || span.Kind == "CELL" || span.Kind == "SECTION")
                            {
                                Node node = mLayoutToNodeLookup[span.LayoutObject];

                                if (node.NodeType == NodeType.Row)
                                    node = ((Row)node).LastCell.LastParagraph;

                                foreach (RenderedLine collectedLine in collectedLines)
                                    collectedLine.SetParentNode(node);

                                collectedLines = new List<RenderedLine>();
                            }
                            else
                            {
                                if (mLayoutToNodeLookup.ContainsKey(span.LayoutObject))
                                {
                                    span.SetParentNode(mLayoutToNodeLookup[span.LayoutObject]);
                                }
                            }
                        }
                    }
                }
            }
        }
 /// <summary>
 /// Returns a different colored pen for each entity type.
 /// </summary>
 private static Pen GetColoredPenFromType(LayoutEntityType type)
 {
     switch (type)
     {
         case LayoutEntityType.Cell:
             return Pens.Purple;
         case LayoutEntityType.Column:
             return Pens.Green;
         case LayoutEntityType.Comment:
             return Pens.LightBlue;
         case LayoutEntityType.Endnote:
             return Pens.DarkRed;
         case LayoutEntityType.Footnote:
             return Pens.DarkBlue;
         case LayoutEntityType.HeaderFooter:
             return Pens.DarkGreen;
         case LayoutEntityType.Line:
             return Pens.Blue;
         case LayoutEntityType.NoteSeparator:
             return Pens.LightGreen;
         case LayoutEntityType.Page:
             return Pens.Red;
         case LayoutEntityType.Row:
             return Pens.Orange;
         case LayoutEntityType.Span:
             return Pens.Red;
         case LayoutEntityType.TextBox:
             return Pens.Yellow;
         default:
             return Pens.Red;
     }
 }