| OLD | NEW | 
|---|
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
| 6 | 6 | 
| 7 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h" | 7 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h" | 
| 8 | 8 | 
| 9 #include "xfa/fxfa/app/xfa_ffnotify.h" | 9 #include "xfa/fxfa/app/xfa_ffnotify.h" | 
| 10 #include "xfa/fxfa/parser/xfa_doclayout.h" | 10 #include "xfa/fxfa/parser/xfa_doclayout.h" | 
| 11 #include "xfa/fxfa/parser/xfa_document.h" | 11 #include "xfa/fxfa/parser/xfa_document.h" | 
| 12 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" | 12 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" | 
| 13 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" | 13 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" | 
| 14 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" | 14 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" | 
| 15 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h" | 15 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h" | 
| 16 #include "xfa/fxfa/parser/xfa_localemgr.h" | 16 #include "xfa/fxfa/parser/xfa_localemgr.h" | 
| 17 #include "xfa/fxfa/parser/xfa_object.h" | 17 #include "xfa/fxfa/parser/xfa_object.h" | 
| 18 #include "xfa/fxfa/parser/xfa_parser.h" | 18 #include "xfa/fxfa/parser/xfa_parser.h" | 
| 19 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 19 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 
| 20 #include "xfa/fxfa/parser/xfa_script.h" | 20 #include "xfa/fxfa/parser/xfa_script.h" | 
| 21 #include "xfa/fxfa/parser/xfa_script_imp.h" | 21 #include "xfa/fxfa/parser/xfa_script_imp.h" | 
| 22 #include "xfa/fxfa/parser/xfa_utils.h" | 22 #include "xfa/fxfa/parser/xfa_utils.h" | 
| 23 | 23 | 
| 24 namespace { | 24 namespace { | 
| 25 | 25 | 
| 26 class PageSetContainerLayoutItem { | 26 class PageSetContainerLayoutItem { | 
| 27  public: | 27  public: | 
| 28   static inline CXFA_ContainerLayoutItem* GetFirstChild( | 28   static inline CXFA_ContainerLayoutItem* GetFirstChild( | 
| 29       CXFA_ContainerLayoutItem* pLayoutItem) { | 29       CXFA_ContainerLayoutItem* pLayoutItem) { | 
| 30     if (pLayoutItem->m_pFormNode->GetClassID() != XFA_Element::PageSet) | 30     if (pLayoutItem->m_pFormNode->GetElementType() != XFA_Element::PageSet) | 
| 31       return nullptr; | 31       return nullptr; | 
| 32 | 32 | 
| 33     CXFA_ContainerLayoutItem* pChildItem = | 33     CXFA_ContainerLayoutItem* pChildItem = | 
| 34         static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pFirstChild); | 34         static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pFirstChild); | 
| 35     while (pChildItem && | 35     while (pChildItem && | 
| 36            pChildItem->m_pFormNode->GetClassID() != XFA_Element::PageSet) { | 36            pChildItem->m_pFormNode->GetElementType() != XFA_Element::PageSet) { | 
| 37       pChildItem = | 37       pChildItem = | 
| 38           static_cast<CXFA_ContainerLayoutItem*>(pChildItem->m_pNextSibling); | 38           static_cast<CXFA_ContainerLayoutItem*>(pChildItem->m_pNextSibling); | 
| 39     } | 39     } | 
| 40     return pChildItem; | 40     return pChildItem; | 
| 41   } | 41   } | 
| 42 | 42 | 
| 43   static inline CXFA_ContainerLayoutItem* GetNextSibling( | 43   static inline CXFA_ContainerLayoutItem* GetNextSibling( | 
| 44       CXFA_ContainerLayoutItem* pLayoutItem) { | 44       CXFA_ContainerLayoutItem* pLayoutItem) { | 
| 45     CXFA_ContainerLayoutItem* pChildItem = | 45     CXFA_ContainerLayoutItem* pChildItem = | 
| 46         static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pNextSibling); | 46         static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pNextSibling); | 
| 47     while (pChildItem && | 47     while (pChildItem && | 
| 48            pChildItem->m_pFormNode->GetClassID() != XFA_Element::PageSet) { | 48            pChildItem->m_pFormNode->GetElementType() != XFA_Element::PageSet) { | 
| 49       pChildItem = | 49       pChildItem = | 
| 50           static_cast<CXFA_ContainerLayoutItem*>(pChildItem->m_pNextSibling); | 50           static_cast<CXFA_ContainerLayoutItem*>(pChildItem->m_pNextSibling); | 
| 51     } | 51     } | 
| 52     return pChildItem; | 52     return pChildItem; | 
| 53   } | 53   } | 
| 54 | 54 | 
| 55   static inline CXFA_ContainerLayoutItem* GetParent( | 55   static inline CXFA_ContainerLayoutItem* GetParent( | 
| 56       CXFA_ContainerLayoutItem* pLayoutItem) { | 56       CXFA_ContainerLayoutItem* pLayoutItem) { | 
| 57     return static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pParent); | 57     return static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pParent); | 
| 58   } | 58   } | 
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 264       m_pTemplatePageSetRoot->GetEnum(XFA_ATTRIBUTE_Relation); | 264       m_pTemplatePageSetRoot->GetEnum(XFA_ATTRIBUTE_Relation); | 
| 265   if (eRelation != XFA_ATTRIBUTEENUM_Unknown) { | 265   if (eRelation != XFA_ATTRIBUTEENUM_Unknown) { | 
| 266     m_ePageSetMode = eRelation; | 266     m_ePageSetMode = eRelation; | 
| 267   } | 267   } | 
| 268   InitPageSetMap(); | 268   InitPageSetMap(); | 
| 269   CXFA_Node* pPageArea = NULL; | 269   CXFA_Node* pPageArea = NULL; | 
| 270   int32_t iCount = 0; | 270   int32_t iCount = 0; | 
| 271   for (pPageArea = m_pTemplatePageSetRoot->GetNodeItem(XFA_NODEITEM_FirstChild); | 271   for (pPageArea = m_pTemplatePageSetRoot->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 272        pPageArea; | 272        pPageArea; | 
| 273        pPageArea = pPageArea->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 273        pPageArea = pPageArea->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 
| 274     if (pPageArea->GetClassID() == XFA_Element::PageArea) { | 274     if (pPageArea->GetElementType() == XFA_Element::PageArea) { | 
| 275       iCount++; | 275       iCount++; | 
| 276       if (pPageArea->GetFirstChildByClass(XFA_Element::ContentArea)) { | 276       if (pPageArea->GetFirstChildByClass(XFA_Element::ContentArea)) { | 
| 277         return TRUE; | 277         return TRUE; | 
| 278       } | 278       } | 
| 279     } | 279     } | 
| 280   } | 280   } | 
| 281   if (iCount > 0) { | 281   if (iCount > 0) { | 
| 282     return FALSE; | 282     return FALSE; | 
| 283   } | 283   } | 
| 284   CXFA_Document* pDocument = pTemplateNode->GetDocument(); | 284   CXFA_Document* pDocument = pTemplateNode->GetDocument(); | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 328   return TRUE; | 328   return TRUE; | 
| 329 } | 329 } | 
| 330 FX_BOOL CXFA_LayoutPageMgr::PrepareFirstPage(CXFA_Node* pRootSubform) { | 330 FX_BOOL CXFA_LayoutPageMgr::PrepareFirstPage(CXFA_Node* pRootSubform) { | 
| 331   FX_BOOL bProBreakBefore = FALSE; | 331   FX_BOOL bProBreakBefore = FALSE; | 
| 332   CXFA_Node* pBreakBeforeNode = NULL; | 332   CXFA_Node* pBreakBeforeNode = NULL; | 
| 333   while (pRootSubform) { | 333   while (pRootSubform) { | 
| 334     for (CXFA_Node* pBreakNode = | 334     for (CXFA_Node* pBreakNode = | 
| 335              pRootSubform->GetNodeItem(XFA_NODEITEM_FirstChild); | 335              pRootSubform->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 336          pBreakNode; | 336          pBreakNode; | 
| 337          pBreakNode = pBreakNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 337          pBreakNode = pBreakNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 
| 338       XFA_Element eType = pBreakNode->GetClassID(); | 338       XFA_Element eType = pBreakNode->GetElementType(); | 
| 339       if (eType == XFA_Element::BreakBefore || | 339       if (eType == XFA_Element::BreakBefore || | 
| 340           (eType == XFA_Element::Break && | 340           (eType == XFA_Element::Break && | 
| 341            pBreakNode->GetEnum(XFA_ATTRIBUTE_Before) != | 341            pBreakNode->GetEnum(XFA_ATTRIBUTE_Before) != | 
| 342                XFA_ATTRIBUTEENUM_Auto)) { | 342                XFA_ATTRIBUTEENUM_Auto)) { | 
| 343         bProBreakBefore = TRUE; | 343         bProBreakBefore = TRUE; | 
| 344         pBreakBeforeNode = pBreakNode; | 344         pBreakBeforeNode = pBreakNode; | 
| 345         break; | 345         break; | 
| 346       } | 346       } | 
| 347     } | 347     } | 
| 348     if (bProBreakBefore) { | 348     if (bProBreakBefore) { | 
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 579         case XFA_ATTRIBUTEENUM_OrderedOccurrence: | 579         case XFA_ATTRIBUTEENUM_OrderedOccurrence: | 
| 580         default: { ProcessLastPageSet(); } break; | 580         default: { ProcessLastPageSet(); } break; | 
| 581         case XFA_ATTRIBUTEENUM_SimplexPaginated: | 581         case XFA_ATTRIBUTEENUM_SimplexPaginated: | 
| 582         case XFA_ATTRIBUTEENUM_DuplexPaginated: { | 582         case XFA_ATTRIBUTEENUM_DuplexPaginated: { | 
| 583           CXFA_LayoutItem* pLastPageAreaLayoutItem = NULL; | 583           CXFA_LayoutItem* pLastPageAreaLayoutItem = NULL; | 
| 584           int32_t nPageAreaCount = 0; | 584           int32_t nPageAreaCount = 0; | 
| 585           for (CXFA_LayoutItem* pPageAreaLayoutItem = | 585           for (CXFA_LayoutItem* pPageAreaLayoutItem = | 
| 586                    pPageSetLayoutItem->m_pFirstChild; | 586                    pPageSetLayoutItem->m_pFirstChild; | 
| 587                pPageAreaLayoutItem; | 587                pPageAreaLayoutItem; | 
| 588                pPageAreaLayoutItem = pPageAreaLayoutItem->m_pNextSibling) { | 588                pPageAreaLayoutItem = pPageAreaLayoutItem->m_pNextSibling) { | 
| 589             if (pPageAreaLayoutItem->m_pFormNode->GetClassID() != | 589             if (pPageAreaLayoutItem->m_pFormNode->GetElementType() != | 
| 590                 XFA_Element::PageArea) { | 590                 XFA_Element::PageArea) { | 
| 591               continue; | 591               continue; | 
| 592             } | 592             } | 
| 593             nPageAreaCount++; | 593             nPageAreaCount++; | 
| 594             pLastPageAreaLayoutItem = pPageAreaLayoutItem; | 594             pLastPageAreaLayoutItem = pPageAreaLayoutItem; | 
| 595           } | 595           } | 
| 596           if (!pLastPageAreaLayoutItem) { | 596           if (!pLastPageAreaLayoutItem) { | 
| 597             break; | 597             break; | 
| 598           } | 598           } | 
| 599           if (!FindPageAreaFromPageSet_SimplexDuplex( | 599           if (!FindPageAreaFromPageSet_SimplexDuplex( | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 622               AddPageAreaLayoutItem(pRecord, pNode); | 622               AddPageAreaLayoutItem(pRecord, pNode); | 
| 623               break; | 623               break; | 
| 624             } | 624             } | 
| 625           } | 625           } | 
| 626           FX_BOOL bUsable = TRUE; | 626           FX_BOOL bUsable = TRUE; | 
| 627           CFX_ArrayTemplate<FX_FLOAT> rgUsedHeights; | 627           CFX_ArrayTemplate<FX_FLOAT> rgUsedHeights; | 
| 628           for (CXFA_LayoutItem* pChildLayoutItem = | 628           for (CXFA_LayoutItem* pChildLayoutItem = | 
| 629                    pLastPageAreaLayoutItem->m_pFirstChild; | 629                    pLastPageAreaLayoutItem->m_pFirstChild; | 
| 630                pChildLayoutItem; | 630                pChildLayoutItem; | 
| 631                pChildLayoutItem = pChildLayoutItem->m_pNextSibling) { | 631                pChildLayoutItem = pChildLayoutItem->m_pNextSibling) { | 
| 632             if (pChildLayoutItem->m_pFormNode->GetClassID() != | 632             if (pChildLayoutItem->m_pFormNode->GetElementType() != | 
| 633                 XFA_Element::ContentArea) { | 633                 XFA_Element::ContentArea) { | 
| 634               continue; | 634               continue; | 
| 635             } | 635             } | 
| 636             FX_FLOAT fUsedHeight = 0; | 636             FX_FLOAT fUsedHeight = 0; | 
| 637             for (CXFA_LayoutItem* pContentChildLayoutItem = | 637             for (CXFA_LayoutItem* pContentChildLayoutItem = | 
| 638                      pChildLayoutItem->m_pFirstChild; | 638                      pChildLayoutItem->m_pFirstChild; | 
| 639                  pContentChildLayoutItem; | 639                  pContentChildLayoutItem; | 
| 640                  pContentChildLayoutItem = | 640                  pContentChildLayoutItem = | 
| 641                      pContentChildLayoutItem->m_pNextSibling) { | 641                      pContentChildLayoutItem->m_pNextSibling) { | 
| 642               if (CXFA_ContentLayoutItem* pContent = | 642               if (CXFA_ContentLayoutItem* pContent = | 
| 643                       pContentChildLayoutItem->AsContentLayoutItem()) { | 643                       pContentChildLayoutItem->AsContentLayoutItem()) { | 
| 644                 fUsedHeight += pContent->m_sSize.y; | 644                 fUsedHeight += pContent->m_sSize.y; | 
| 645               } | 645               } | 
| 646             } | 646             } | 
| 647             rgUsedHeights.Add(fUsedHeight); | 647             rgUsedHeights.Add(fUsedHeight); | 
| 648           } | 648           } | 
| 649           int32_t iCurContentAreaIndex = -1; | 649           int32_t iCurContentAreaIndex = -1; | 
| 650           for (CXFA_Node* pContentAreaNode = | 650           for (CXFA_Node* pContentAreaNode = | 
| 651                    pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 651                    pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 652                pContentAreaNode; | 652                pContentAreaNode; | 
| 653                pContentAreaNode = | 653                pContentAreaNode = | 
| 654                    pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 654                    pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 
| 655             if (pContentAreaNode->GetClassID() != XFA_Element::ContentArea) { | 655             if (pContentAreaNode->GetElementType() != | 
|  | 656                 XFA_Element::ContentArea) { | 
| 656               continue; | 657               continue; | 
| 657             } | 658             } | 
| 658             iCurContentAreaIndex++; | 659             iCurContentAreaIndex++; | 
| 659             if (rgUsedHeights[iCurContentAreaIndex] > | 660             if (rgUsedHeights[iCurContentAreaIndex] > | 
| 660                 pContentAreaNode->GetMeasure(XFA_ATTRIBUTE_H) | 661                 pContentAreaNode->GetMeasure(XFA_ATTRIBUTE_H) | 
| 661                         .ToUnit(XFA_UNIT_Pt) + | 662                         .ToUnit(XFA_UNIT_Pt) + | 
| 662                     XFA_LAYOUT_FLOAT_PERCISION) { | 663                     XFA_LAYOUT_FLOAT_PERCISION) { | 
| 663               bUsable = FALSE; | 664               bUsable = FALSE; | 
| 664               break; | 665               break; | 
| 665             } | 666             } | 
| 666           } | 667           } | 
| 667           if (bUsable) { | 668           if (bUsable) { | 
| 668             CXFA_LayoutItem* pChildLayoutItem = | 669             CXFA_LayoutItem* pChildLayoutItem = | 
| 669                 pLastPageAreaLayoutItem->m_pFirstChild; | 670                 pLastPageAreaLayoutItem->m_pFirstChild; | 
| 670             CXFA_Node* pContentAreaNode = | 671             CXFA_Node* pContentAreaNode = | 
| 671                 pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 672                 pNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 672             pLastPageAreaLayoutItem->m_pFormNode = pNode; | 673             pLastPageAreaLayoutItem->m_pFormNode = pNode; | 
| 673             while (pChildLayoutItem && pContentAreaNode) { | 674             while (pChildLayoutItem && pContentAreaNode) { | 
| 674               if (pChildLayoutItem->m_pFormNode->GetClassID() != | 675               if (pChildLayoutItem->m_pFormNode->GetElementType() != | 
| 675                   XFA_Element::ContentArea) { | 676                   XFA_Element::ContentArea) { | 
| 676                 pChildLayoutItem = pChildLayoutItem->m_pNextSibling; | 677                 pChildLayoutItem = pChildLayoutItem->m_pNextSibling; | 
| 677                 continue; | 678                 continue; | 
| 678               } | 679               } | 
| 679               if (pContentAreaNode->GetClassID() != XFA_Element::ContentArea) { | 680               if (pContentAreaNode->GetElementType() != | 
|  | 681                   XFA_Element::ContentArea) { | 
| 680                 pContentAreaNode = | 682                 pContentAreaNode = | 
| 681                     pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 683                     pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 
| 682                 continue; | 684                 continue; | 
| 683               } | 685               } | 
| 684               pChildLayoutItem->m_pFormNode = pContentAreaNode; | 686               pChildLayoutItem->m_pFormNode = pContentAreaNode; | 
| 685               pChildLayoutItem = pChildLayoutItem->m_pNextSibling; | 687               pChildLayoutItem = pChildLayoutItem->m_pNextSibling; | 
| 686               pContentAreaNode = | 688               pContentAreaNode = | 
| 687                   pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 689                   pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 
| 688             } | 690             } | 
| 689           } else if (pNode->GetEnum(XFA_ATTRIBUTE_PagePosition) == | 691           } else if (pNode->GetEnum(XFA_ATTRIBUTE_PagePosition) == | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 709   // FIXME: Find() method should take const. | 711   // FIXME: Find() method should take const. | 
| 710   return m_PageArray.Find(const_cast<CXFA_ContainerLayoutItem*>(pPage)); | 712   return m_PageArray.Find(const_cast<CXFA_ContainerLayoutItem*>(pPage)); | 
| 711 } | 713 } | 
| 712 FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType, | 714 FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType, | 
| 713                                      XFA_ATTRIBUTEENUM eTargetType, | 715                                      XFA_ATTRIBUTEENUM eTargetType, | 
| 714                                      CXFA_Node* pTarget, | 716                                      CXFA_Node* pTarget, | 
| 715                                      FX_BOOL bStartNew) { | 717                                      FX_BOOL bStartNew) { | 
| 716   FX_BOOL bRet = FALSE; | 718   FX_BOOL bRet = FALSE; | 
| 717   switch (eTargetType) { | 719   switch (eTargetType) { | 
| 718     case XFA_ATTRIBUTEENUM_ContentArea: | 720     case XFA_ATTRIBUTEENUM_ContentArea: | 
| 719       if (pTarget && pTarget->GetClassID() != XFA_Element::ContentArea) { | 721       if (pTarget && pTarget->GetElementType() != XFA_Element::ContentArea) { | 
| 720         pTarget = NULL; | 722         pTarget = NULL; | 
| 721       } | 723       } | 
| 722       if (!pTarget || !m_pCurrentContainerRecord || | 724       if (!pTarget || !m_pCurrentContainerRecord || | 
| 723           pTarget != | 725           pTarget != | 
| 724               GetCurrentContainerRecord()->pCurContentArea->m_pFormNode || | 726               GetCurrentContainerRecord()->pCurContentArea->m_pFormNode || | 
| 725           bStartNew) { | 727           bStartNew) { | 
| 726         CXFA_Node* pPageArea = NULL; | 728         CXFA_Node* pPageArea = NULL; | 
| 727         if (pTarget) { | 729         if (pTarget) { | 
| 728           pPageArea = pTarget->GetNodeItem(XFA_NODEITEM_Parent); | 730           pPageArea = pTarget->GetNodeItem(XFA_NODEITEM_Parent); | 
| 729         } | 731         } | 
| 730         pPageArea = GetNextAvailPageArea(pPageArea, pTarget); | 732         pPageArea = GetNextAvailPageArea(pPageArea, pTarget); | 
| 731         bRet = pPageArea != NULL; | 733         bRet = pPageArea != NULL; | 
| 732       } | 734       } | 
| 733       break; | 735       break; | 
| 734     case XFA_ATTRIBUTEENUM_PageArea: | 736     case XFA_ATTRIBUTEENUM_PageArea: | 
| 735       if (pTarget && pTarget->GetClassID() != XFA_Element::PageArea) { | 737       if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea) { | 
| 736         pTarget = NULL; | 738         pTarget = NULL; | 
| 737       } | 739       } | 
| 738       if (!pTarget || !m_pCurrentContainerRecord || | 740       if (!pTarget || !m_pCurrentContainerRecord || | 
| 739           pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode || | 741           pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode || | 
| 740           bStartNew) { | 742           bStartNew) { | 
| 741         CXFA_Node* pPageArea = GetNextAvailPageArea(pTarget, NULL, TRUE); | 743         CXFA_Node* pPageArea = GetNextAvailPageArea(pTarget, NULL, TRUE); | 
| 742         bRet = pPageArea != NULL; | 744         bRet = pPageArea != NULL; | 
| 743       } | 745       } | 
| 744       break; | 746       break; | 
| 745     case XFA_ATTRIBUTEENUM_PageOdd: | 747     case XFA_ATTRIBUTEENUM_PageOdd: | 
| 746       if (pTarget && pTarget->GetClassID() != XFA_Element::PageArea) { | 748       if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea) { | 
| 747         pTarget = NULL; | 749         pTarget = NULL; | 
| 748       } | 750       } | 
| 749       break; | 751       break; | 
| 750     case XFA_ATTRIBUTEENUM_PageEven: | 752     case XFA_ATTRIBUTEENUM_PageEven: | 
| 751       if (pTarget && pTarget->GetClassID() != XFA_Element::PageArea) { | 753       if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea) { | 
| 752         pTarget = NULL; | 754         pTarget = NULL; | 
| 753       } | 755       } | 
| 754       break; | 756       break; | 
| 755     case XFA_ATTRIBUTEENUM_Auto: | 757     case XFA_ATTRIBUTEENUM_Auto: | 
| 756     default: | 758     default: | 
| 757       break; | 759       break; | 
| 758   } | 760   } | 
| 759   return bRet; | 761   return bRet; | 
| 760 } | 762 } | 
| 761 FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( | 763 FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( | 
| 762     CXFA_Node* pCurNode, | 764     CXFA_Node* pCurNode, | 
| 763     FX_BOOL bBefore, | 765     FX_BOOL bBefore, | 
| 764     CXFA_Node*& pBreakLeaderTemplate, | 766     CXFA_Node*& pBreakLeaderTemplate, | 
| 765     CXFA_Node*& pBreakTrailerTemplate) { | 767     CXFA_Node*& pBreakTrailerTemplate) { | 
| 766   XFA_Element eType = pCurNode->GetClassID(); | 768   XFA_Element eType = pCurNode->GetElementType(); | 
| 767   switch (eType) { | 769   switch (eType) { | 
| 768     case XFA_Element::BreakBefore: | 770     case XFA_Element::BreakBefore: | 
| 769     case XFA_Element::BreakAfter: { | 771     case XFA_Element::BreakAfter: { | 
| 770       CFX_WideStringC wsBreakLeader, wsBreakTrailer; | 772       CFX_WideStringC wsBreakLeader, wsBreakTrailer; | 
| 771       CXFA_Node* pFormNode = pCurNode->GetNodeItem( | 773       CXFA_Node* pFormNode = pCurNode->GetNodeItem( | 
| 772           XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode); | 774           XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode); | 
| 773       CXFA_Node* pContainer = pFormNode->GetTemplateNode(); | 775       CXFA_Node* pContainer = pFormNode->GetTemplateNode(); | 
| 774       FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0; | 776       FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0; | 
| 775       CXFA_Node* pScript = pCurNode->GetFirstChildByClass(XFA_Element::Script); | 777       CXFA_Node* pScript = pCurNode->GetFirstChildByClass(XFA_Element::Script); | 
| 776       if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript)) { | 778       if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript)) { | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 795             eType == XFA_Element::BreakBefore) { | 797             eType == XFA_Element::BreakBefore) { | 
| 796           CXFA_Node* pParentNode = pFormNode->GetNodeItem( | 798           CXFA_Node* pParentNode = pFormNode->GetNodeItem( | 
| 797               XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode); | 799               XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode); | 
| 798           if (!pParentNode || | 800           if (!pParentNode || | 
| 799               pFormNode != | 801               pFormNode != | 
| 800                   pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild, | 802                   pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild, | 
| 801                                            XFA_ObjectType::ContainerNode)) { | 803                                            XFA_ObjectType::ContainerNode)) { | 
| 802             break; | 804             break; | 
| 803           } | 805           } | 
| 804           pParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); | 806           pParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); | 
| 805           if (!pParentNode || pParentNode->GetClassID() != XFA_Element::Form) { | 807           if (!pParentNode || | 
|  | 808               pParentNode->GetElementType() != XFA_Element::Form) { | 
| 806             break; | 809             break; | 
| 807           } | 810           } | 
| 808           return TRUE; | 811           return TRUE; | 
| 809         } | 812         } | 
| 810       } | 813       } | 
| 811     } break; | 814     } break; | 
| 812     case XFA_Element::Break: { | 815     case XFA_Element::Break: { | 
| 813       FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0; | 816       FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0; | 
| 814       CFX_WideStringC wsTarget = pCurNode->GetCData( | 817       CFX_WideStringC wsTarget = pCurNode->GetCData( | 
| 815           bBefore ? XFA_ATTRIBUTE_BeforeTarget : XFA_ATTRIBUTE_AfterTarget); | 818           bBefore ? XFA_ATTRIBUTE_BeforeTarget : XFA_ATTRIBUTE_AfterTarget); | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 890   return FALSE; | 893   return FALSE; | 
| 891 } | 894 } | 
| 892 CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, | 895 CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, | 
| 893                                              CXFA_Node*& pLeaderTemplate, | 896                                              CXFA_Node*& pLeaderTemplate, | 
| 894                                              CXFA_Node*& pTrailerTemplate, | 897                                              CXFA_Node*& pTrailerTemplate, | 
| 895                                              FX_BOOL bCreatePage) { | 898                                              FX_BOOL bCreatePage) { | 
| 896   CXFA_Node* pContainer = | 899   CXFA_Node* pContainer = | 
| 897       pOverflowNode | 900       pOverflowNode | 
| 898           ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode) | 901           ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode) | 
| 899           ->GetTemplateNode(); | 902           ->GetTemplateNode(); | 
| 900   if (pOverflowNode->GetClassID() == XFA_Element::Break) { | 903   if (pOverflowNode->GetElementType() == XFA_Element::Break) { | 
| 901     CFX_WideStringC wsOverflowLeader; | 904     CFX_WideStringC wsOverflowLeader; | 
| 902     CFX_WideStringC wsOverflowTarget; | 905     CFX_WideStringC wsOverflowTarget; | 
| 903     CFX_WideStringC wsOverflowTrailer; | 906     CFX_WideStringC wsOverflowTrailer; | 
| 904     pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader); | 907     pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader); | 
| 905     pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer); | 908     pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer); | 
| 906     pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget); | 909     pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget); | 
| 907     if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() || | 910     if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() || | 
| 908         !wsOverflowTarget.IsEmpty()) { | 911         !wsOverflowTarget.IsEmpty()) { | 
| 909       if (!wsOverflowTarget.IsEmpty() && bCreatePage && | 912       if (!wsOverflowTarget.IsEmpty() && bCreatePage && | 
| 910           !m_bCreateOverFlowPage) { | 913           !m_bCreateOverFlowPage) { | 
| 911         CXFA_Node* pTarget = | 914         CXFA_Node* pTarget = | 
| 912             ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); | 915             ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); | 
| 913         if (pTarget) { | 916         if (pTarget) { | 
| 914           m_bCreateOverFlowPage = TRUE; | 917           m_bCreateOverFlowPage = TRUE; | 
| 915           switch (pTarget->GetClassID()) { | 918           switch (pTarget->GetElementType()) { | 
| 916             case XFA_Element::PageArea: | 919             case XFA_Element::PageArea: | 
| 917               RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_PageArea, | 920               RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_PageArea, | 
| 918                        pTarget, TRUE); | 921                        pTarget, TRUE); | 
| 919               break; | 922               break; | 
| 920             case XFA_Element::ContentArea: | 923             case XFA_Element::ContentArea: | 
| 921               RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_ContentArea, | 924               RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_ContentArea, | 
| 922                        pTarget, TRUE); | 925                        pTarget, TRUE); | 
| 923               break; | 926               break; | 
| 924             default: | 927             default: | 
| 925               break; | 928               break; | 
| 926           } | 929           } | 
| 927         } | 930         } | 
| 928       } | 931       } | 
| 929       if (!bCreatePage) { | 932       if (!bCreatePage) { | 
| 930         pLeaderTemplate = | 933         pLeaderTemplate = | 
| 931             ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); | 934             ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); | 
| 932         pTrailerTemplate = | 935         pTrailerTemplate = | 
| 933             ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); | 936             ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); | 
| 934       } | 937       } | 
| 935       return pOverflowNode; | 938       return pOverflowNode; | 
| 936     } | 939     } | 
| 937     return NULL; | 940     return NULL; | 
| 938   } else if (pOverflowNode->GetClassID() == XFA_Element::Overflow) { | 941   } else if (pOverflowNode->GetElementType() == XFA_Element::Overflow) { | 
| 939     CFX_WideStringC wsOverflowLeader; | 942     CFX_WideStringC wsOverflowLeader; | 
| 940     CFX_WideStringC wsOverflowTrailer; | 943     CFX_WideStringC wsOverflowTrailer; | 
| 941     CFX_WideStringC wsOverflowTarget; | 944     CFX_WideStringC wsOverflowTarget; | 
| 942     pOverflowNode->TryCData(XFA_ATTRIBUTE_Leader, wsOverflowLeader); | 945     pOverflowNode->TryCData(XFA_ATTRIBUTE_Leader, wsOverflowLeader); | 
| 943     pOverflowNode->TryCData(XFA_ATTRIBUTE_Trailer, wsOverflowTrailer); | 946     pOverflowNode->TryCData(XFA_ATTRIBUTE_Trailer, wsOverflowTrailer); | 
| 944     pOverflowNode->TryCData(XFA_ATTRIBUTE_Target, wsOverflowTarget); | 947     pOverflowNode->TryCData(XFA_ATTRIBUTE_Target, wsOverflowTarget); | 
| 945     if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) { | 948     if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) { | 
| 946       CXFA_Node* pTarget = | 949       CXFA_Node* pTarget = | 
| 947           ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); | 950           ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); | 
| 948       if (pTarget) { | 951       if (pTarget) { | 
| 949         m_bCreateOverFlowPage = TRUE; | 952         m_bCreateOverFlowPage = TRUE; | 
| 950         switch (pTarget->GetClassID()) { | 953         switch (pTarget->GetElementType()) { | 
| 951           case XFA_Element::PageArea: | 954           case XFA_Element::PageArea: | 
| 952             RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_PageArea, pTarget, | 955             RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_PageArea, pTarget, | 
| 953                      TRUE); | 956                      TRUE); | 
| 954             break; | 957             break; | 
| 955           case XFA_Element::ContentArea: | 958           case XFA_Element::ContentArea: | 
| 956             RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_ContentArea, | 959             RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_ContentArea, | 
| 957                      pTarget, TRUE); | 960                      pTarget, TRUE); | 
| 958             break; | 961             break; | 
| 959           default: | 962           default: | 
| 960             break; | 963             break; | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 974 FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode, | 977 FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode, | 
| 975                                             CXFA_Node*& pLeaderNode, | 978                                             CXFA_Node*& pLeaderNode, | 
| 976                                             CXFA_Node*& pTrailerNode, | 979                                             CXFA_Node*& pTrailerNode, | 
| 977                                             FX_BOOL bDataMerge, | 980                                             FX_BOOL bDataMerge, | 
| 978                                             FX_BOOL bCreatePage) { | 981                                             FX_BOOL bCreatePage) { | 
| 979   if (pFormNode == NULL) { | 982   if (pFormNode == NULL) { | 
| 980     return FALSE; | 983     return FALSE; | 
| 981   } | 984   } | 
| 982   CXFA_Node *pLeaderTemplate = NULL, *pTrailerTemplate = NULL; | 985   CXFA_Node *pLeaderTemplate = NULL, *pTrailerTemplate = NULL; | 
| 983   FX_BOOL bIsOverflowNode = FALSE; | 986   FX_BOOL bIsOverflowNode = FALSE; | 
| 984   if (pFormNode->GetClassID() == XFA_Element::Overflow || | 987   if (pFormNode->GetElementType() == XFA_Element::Overflow || | 
| 985       pFormNode->GetClassID() == XFA_Element::Break) { | 988       pFormNode->GetElementType() == XFA_Element::Break) { | 
| 986     bIsOverflowNode = TRUE; | 989     bIsOverflowNode = TRUE; | 
| 987   } | 990   } | 
| 988   for (CXFA_Node* pCurNode = | 991   for (CXFA_Node* pCurNode = | 
| 989            bIsOverflowNode ? pFormNode | 992            bIsOverflowNode ? pFormNode | 
| 990                            : pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 993                            : pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 991        pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) { | 994        pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) { | 
| 992     if (BreakOverflow(pCurNode, pLeaderTemplate, pTrailerTemplate, | 995     if (BreakOverflow(pCurNode, pLeaderTemplate, pTrailerTemplate, | 
| 993                       bCreatePage)) { | 996                       bCreatePage)) { | 
| 994       if (bIsOverflowNode) { | 997       if (bIsOverflowNode) { | 
| 995         pFormNode = pCurNode->GetNodeItem(XFA_NODEITEM_Parent); | 998         pFormNode = pCurNode->GetNodeItem(XFA_NODEITEM_Parent); | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 1024 } | 1027 } | 
| 1025 FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer( | 1028 FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer( | 
| 1026     CXFA_Node* pBookendNode, | 1029     CXFA_Node* pBookendNode, | 
| 1027     FX_BOOL bLeader, | 1030     FX_BOOL bLeader, | 
| 1028     CXFA_Node*& pBookendAppendTemplate) { | 1031     CXFA_Node*& pBookendAppendTemplate) { | 
| 1029   CFX_WideStringC wsBookendLeader; | 1032   CFX_WideStringC wsBookendLeader; | 
| 1030   CXFA_Node* pContainer = | 1033   CXFA_Node* pContainer = | 
| 1031       pBookendNode | 1034       pBookendNode | 
| 1032           ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode) | 1035           ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode) | 
| 1033           ->GetTemplateNode(); | 1036           ->GetTemplateNode(); | 
| 1034   if (pBookendNode->GetClassID() == XFA_Element::Break) { | 1037   if (pBookendNode->GetElementType() == XFA_Element::Break) { | 
| 1035     pBookendNode->TryCData( | 1038     pBookendNode->TryCData( | 
| 1036         bLeader ? XFA_ATTRIBUTE_BookendLeader : XFA_ATTRIBUTE_BookendTrailer, | 1039         bLeader ? XFA_ATTRIBUTE_BookendLeader : XFA_ATTRIBUTE_BookendTrailer, | 
| 1037         wsBookendLeader); | 1040         wsBookendLeader); | 
| 1038     if (!wsBookendLeader.IsEmpty()) { | 1041     if (!wsBookendLeader.IsEmpty()) { | 
| 1039       pBookendAppendTemplate = | 1042       pBookendAppendTemplate = | 
| 1040           ResolveBreakTarget(pContainer, FALSE, wsBookendLeader); | 1043           ResolveBreakTarget(pContainer, FALSE, wsBookendLeader); | 
| 1041       return TRUE; | 1044       return TRUE; | 
| 1042     } | 1045     } | 
| 1043     return FALSE; | 1046     return FALSE; | 
| 1044   } else if (pBookendNode->GetClassID() == XFA_Element::Bookend) { | 1047   } else if (pBookendNode->GetElementType() == XFA_Element::Bookend) { | 
| 1045     pBookendNode->TryCData( | 1048     pBookendNode->TryCData( | 
| 1046         bLeader ? XFA_ATTRIBUTE_Leader : XFA_ATTRIBUTE_Trailer, | 1049         bLeader ? XFA_ATTRIBUTE_Leader : XFA_ATTRIBUTE_Trailer, | 
| 1047         wsBookendLeader); | 1050         wsBookendLeader); | 
| 1048     pBookendAppendTemplate = | 1051     pBookendAppendTemplate = | 
| 1049         ResolveBreakTarget(pContainer, TRUE, wsBookendLeader); | 1052         ResolveBreakTarget(pContainer, TRUE, wsBookendLeader); | 
| 1050     return TRUE; | 1053     return TRUE; | 
| 1051   } | 1054   } | 
| 1052   return FALSE; | 1055   return FALSE; | 
| 1053 } | 1056 } | 
| 1054 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet( | 1057 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet( | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1091     if (iMax >= 0 && iMax <= iPageSetCount) { | 1094     if (iMax >= 0 && iMax <= iPageSetCount) { | 
| 1092       return FALSE; | 1095       return FALSE; | 
| 1093     } | 1096     } | 
| 1094   } | 1097   } | 
| 1095   FX_BOOL bRes = FALSE; | 1098   FX_BOOL bRes = FALSE; | 
| 1096   CXFA_Node* pCurrentNode = | 1099   CXFA_Node* pCurrentNode = | 
| 1097       pStartChild ? pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling) | 1100       pStartChild ? pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling) | 
| 1098                   : pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); | 1101                   : pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 1099   for (; pCurrentNode; | 1102   for (; pCurrentNode; | 
| 1100        pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 1103        pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 
| 1101     if (pCurrentNode->GetClassID() == XFA_Element::PageArea) { | 1104     if (pCurrentNode->GetElementType() == XFA_Element::PageArea) { | 
| 1102       if ((pTargetPageArea == pCurrentNode || pTargetPageArea == NULL)) { | 1105       if ((pTargetPageArea == pCurrentNode || pTargetPageArea == NULL)) { | 
| 1103         if (pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea) == | 1106         if (pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea) == | 
| 1104             NULL) { | 1107             NULL) { | 
| 1105           if (pTargetPageArea == pCurrentNode) { | 1108           if (pTargetPageArea == pCurrentNode) { | 
| 1106             CreateMinPageRecord(pCurrentNode, TRUE); | 1109             CreateMinPageRecord(pCurrentNode, TRUE); | 
| 1107             pTargetPageArea = NULL; | 1110             pTargetPageArea = NULL; | 
| 1108           } | 1111           } | 
| 1109           continue; | 1112           continue; | 
| 1110         } | 1113         } | 
| 1111         if (!bQuery) { | 1114         if (!bQuery) { | 
| 1112           CXFA_ContainerRecord* pNewRecord = | 1115           CXFA_ContainerRecord* pNewRecord = | 
| 1113               CreateContainerRecord(pCurrentNode, pStartChild == NULL); | 1116               CreateContainerRecord(pCurrentNode, pStartChild == NULL); | 
| 1114           AddPageAreaLayoutItem(pNewRecord, pCurrentNode); | 1117           AddPageAreaLayoutItem(pNewRecord, pCurrentNode); | 
| 1115           if (pTargetContentArea == NULL) { | 1118           if (pTargetContentArea == NULL) { | 
| 1116             pTargetContentArea = | 1119             pTargetContentArea = | 
| 1117                 pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea); | 1120                 pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea); | 
| 1118           } | 1121           } | 
| 1119           AddContentAreaLayoutItem(pNewRecord, pTargetContentArea); | 1122           AddContentAreaLayoutItem(pNewRecord, pTargetContentArea); | 
| 1120         } | 1123         } | 
| 1121         m_pCurPageArea = pCurrentNode; | 1124         m_pCurPageArea = pCurrentNode; | 
| 1122         m_nCurPageCount = 1; | 1125         m_nCurPageCount = 1; | 
| 1123         bRes = TRUE; | 1126         bRes = TRUE; | 
| 1124         break; | 1127         break; | 
| 1125       } | 1128       } | 
| 1126       if (!bQuery) { | 1129       if (!bQuery) { | 
| 1127         CreateMinPageRecord(pCurrentNode, FALSE); | 1130         CreateMinPageRecord(pCurrentNode, FALSE); | 
| 1128       } | 1131       } | 
| 1129     } else if (pCurrentNode->GetClassID() == XFA_Element::PageSet) { | 1132     } else if (pCurrentNode->GetElementType() == XFA_Element::PageSet) { | 
| 1130       if (FindPageAreaFromPageSet_Ordered(pCurrentNode, NULL, pTargetPageArea, | 1133       if (FindPageAreaFromPageSet_Ordered(pCurrentNode, NULL, pTargetPageArea, | 
| 1131                                           pTargetContentArea, bNewPage, | 1134                                           pTargetContentArea, bNewPage, | 
| 1132                                           bQuery)) { | 1135                                           bQuery)) { | 
| 1133         bRes = TRUE; | 1136         bRes = TRUE; | 
| 1134         break; | 1137         break; | 
| 1135       } | 1138       } | 
| 1136       if (!bQuery) { | 1139       if (!bQuery) { | 
| 1137         CreateMinPageSetRecord(pCurrentNode, TRUE); | 1140         CreateMinPageSetRecord(pCurrentNode, TRUE); | 
| 1138       } | 1141       } | 
| 1139     } | 1142     } | 
| 1140   } | 1143   } | 
| 1141   if (!pStartChild && bRes && !bQuery) { | 1144   if (!pStartChild && bRes && !bQuery) { | 
| 1142     m_pPageSetMap.SetAt(pPageSet, ++iPageSetCount); | 1145     m_pPageSetMap.SetAt(pPageSet, ++iPageSetCount); | 
| 1143   } | 1146   } | 
| 1144   return bRes; | 1147   return bRes; | 
| 1145 } | 1148 } | 
| 1146 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex( | 1149 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex( | 
| 1147     CXFA_Node* pPageSet, | 1150     CXFA_Node* pPageSet, | 
| 1148     CXFA_Node* pStartChild, | 1151     CXFA_Node* pStartChild, | 
| 1149     CXFA_Node* pTargetPageArea, | 1152     CXFA_Node* pTargetPageArea, | 
| 1150     CXFA_Node* pTargetContentArea, | 1153     CXFA_Node* pTargetContentArea, | 
| 1151     FX_BOOL bNewPage, | 1154     FX_BOOL bNewPage, | 
| 1152     FX_BOOL bQuery, | 1155     FX_BOOL bQuery, | 
| 1153     XFA_ATTRIBUTEENUM ePreferredPosition) { | 1156     XFA_ATTRIBUTEENUM ePreferredPosition) { | 
| 1154   const XFA_ATTRIBUTEENUM eFallbackPosition = XFA_ATTRIBUTEENUM_Any; | 1157   const XFA_ATTRIBUTEENUM eFallbackPosition = XFA_ATTRIBUTEENUM_Any; | 
| 1155   CXFA_Node *pPreferredPageArea = NULL, *pFallbackPageArea = NULL; | 1158   CXFA_Node *pPreferredPageArea = NULL, *pFallbackPageArea = NULL; | 
| 1156   CXFA_Node* pCurrentNode = NULL; | 1159   CXFA_Node* pCurrentNode = NULL; | 
| 1157   if (!pStartChild || pStartChild->GetClassID() == XFA_Element::PageArea) { | 1160   if (!pStartChild || pStartChild->GetElementType() == XFA_Element::PageArea) { | 
| 1158     pCurrentNode = pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); | 1161     pCurrentNode = pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 1159   } else { | 1162   } else { | 
| 1160     pCurrentNode = pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling); | 1163     pCurrentNode = pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling); | 
| 1161   } | 1164   } | 
| 1162   for (; pCurrentNode; | 1165   for (; pCurrentNode; | 
| 1163        pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 1166        pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 
| 1164     if (pCurrentNode->GetClassID() == XFA_Element::PageArea) { | 1167     if (pCurrentNode->GetElementType() == XFA_Element::PageArea) { | 
| 1165       if (!MatchPageAreaOddOrEven(pCurrentNode, FALSE)) { | 1168       if (!MatchPageAreaOddOrEven(pCurrentNode, FALSE)) { | 
| 1166         continue; | 1169         continue; | 
| 1167       } | 1170       } | 
| 1168       XFA_ATTRIBUTEENUM eCurPagePosition = | 1171       XFA_ATTRIBUTEENUM eCurPagePosition = | 
| 1169           pCurrentNode->GetEnum(XFA_ATTRIBUTE_PagePosition); | 1172           pCurrentNode->GetEnum(XFA_ATTRIBUTE_PagePosition); | 
| 1170       if (ePreferredPosition == XFA_ATTRIBUTEENUM_Last) { | 1173       if (ePreferredPosition == XFA_ATTRIBUTEENUM_Last) { | 
| 1171         if (eCurPagePosition != ePreferredPosition) { | 1174         if (eCurPagePosition != ePreferredPosition) { | 
| 1172           continue; | 1175           continue; | 
| 1173         } | 1176         } | 
| 1174         if (m_ePageSetMode == XFA_ATTRIBUTEENUM_SimplexPaginated || | 1177         if (m_ePageSetMode == XFA_ATTRIBUTEENUM_SimplexPaginated || | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1214                    !pFallbackPageArea) { | 1217                    !pFallbackPageArea) { | 
| 1215           pFallbackPageArea = pCurrentNode; | 1218           pFallbackPageArea = pCurrentNode; | 
| 1216         } | 1219         } | 
| 1217       } else if (pTargetPageArea && | 1220       } else if (pTargetPageArea && | 
| 1218                  !MatchPageAreaOddOrEven(pTargetPageArea, FALSE)) { | 1221                  !MatchPageAreaOddOrEven(pTargetPageArea, FALSE)) { | 
| 1219         CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); | 1222         CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); | 
| 1220         AddPageAreaLayoutItem(pNewRecord, pCurrentNode); | 1223         AddPageAreaLayoutItem(pNewRecord, pCurrentNode); | 
| 1221         AddContentAreaLayoutItem(pNewRecord, pCurrentNode->GetFirstChildByClass( | 1224         AddContentAreaLayoutItem(pNewRecord, pCurrentNode->GetFirstChildByClass( | 
| 1222                                                  XFA_Element::ContentArea)); | 1225                                                  XFA_Element::ContentArea)); | 
| 1223       } | 1226       } | 
| 1224     } else if (pCurrentNode->GetClassID() == XFA_Element::PageSet) { | 1227     } else if (pCurrentNode->GetElementType() == XFA_Element::PageSet) { | 
| 1225       if (FindPageAreaFromPageSet_SimplexDuplex( | 1228       if (FindPageAreaFromPageSet_SimplexDuplex( | 
| 1226               pCurrentNode, NULL, pTargetPageArea, pTargetContentArea, bNewPage, | 1229               pCurrentNode, NULL, pTargetPageArea, pTargetContentArea, bNewPage, | 
| 1227               bQuery, ePreferredPosition)) { | 1230               bQuery, ePreferredPosition)) { | 
| 1228         break; | 1231         break; | 
| 1229       } | 1232       } | 
| 1230     } | 1233     } | 
| 1231   } | 1234   } | 
| 1232   CXFA_Node* pCurPageArea = NULL; | 1235   CXFA_Node* pCurPageArea = NULL; | 
| 1233   if (pPreferredPageArea) { | 1236   if (pPreferredPageArea) { | 
| 1234     pCurPageArea = pPreferredPageArea; | 1237     pCurPageArea = pPreferredPageArea; | 
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1367   AddContentAreaLayoutItem(pNewRecord, pContentArea); | 1370   AddContentAreaLayoutItem(pNewRecord, pContentArea); | 
| 1368   return TRUE; | 1371   return TRUE; | 
| 1369 } | 1372 } | 
| 1370 void CXFA_LayoutPageMgr::InitPageSetMap() { | 1373 void CXFA_LayoutPageMgr::InitPageSetMap() { | 
| 1371   if (!IsPageSetRootOrderedOccurrence()) { | 1374   if (!IsPageSetRootOrderedOccurrence()) { | 
| 1372     return; | 1375     return; | 
| 1373   } | 1376   } | 
| 1374   CXFA_NodeIterator sIterator(m_pTemplatePageSetRoot); | 1377   CXFA_NodeIterator sIterator(m_pTemplatePageSetRoot); | 
| 1375   for (CXFA_Node* pPageSetNode = sIterator.GetCurrent(); pPageSetNode; | 1378   for (CXFA_Node* pPageSetNode = sIterator.GetCurrent(); pPageSetNode; | 
| 1376        pPageSetNode = sIterator.MoveToNext()) { | 1379        pPageSetNode = sIterator.MoveToNext()) { | 
| 1377     if (pPageSetNode->GetClassID() == XFA_Element::PageSet) { | 1380     if (pPageSetNode->GetElementType() == XFA_Element::PageSet) { | 
| 1378       XFA_ATTRIBUTEENUM eRelation = | 1381       XFA_ATTRIBUTEENUM eRelation = | 
| 1379           pPageSetNode->GetEnum(XFA_ATTRIBUTE_Relation); | 1382           pPageSetNode->GetEnum(XFA_ATTRIBUTE_Relation); | 
| 1380       if (eRelation == XFA_ATTRIBUTEENUM_OrderedOccurrence) { | 1383       if (eRelation == XFA_ATTRIBUTEENUM_OrderedOccurrence) { | 
| 1381         m_pPageSetMap.SetAt(pPageSetNode, 0); | 1384         m_pPageSetMap.SetAt(pPageSetNode, 0); | 
| 1382       } | 1385       } | 
| 1383     } | 1386     } | 
| 1384   } | 1387   } | 
| 1385 } | 1388 } | 
| 1386 int32_t CXFA_LayoutPageMgr::CreateMinPageRecord(CXFA_Node* pPageArea, | 1389 int32_t CXFA_LayoutPageMgr::CreateMinPageRecord(CXFA_Node* pPageArea, | 
| 1387                                                 FX_BOOL bTargetPageArea, | 1390                                                 FX_BOOL bTargetPageArea, | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1424   } | 1427   } | 
| 1425   CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_Element::Occur); | 1428   CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_Element::Occur); | 
| 1426   int32_t iMin = 0; | 1429   int32_t iMin = 0; | 
| 1427   if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) { | 1430   if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) { | 
| 1428     if (iCurSetCount < iMin) { | 1431     if (iCurSetCount < iMin) { | 
| 1429       for (int32_t i = 0; i < iMin - iCurSetCount; i++) { | 1432       for (int32_t i = 0; i < iMin - iCurSetCount; i++) { | 
| 1430         for (CXFA_Node* pCurrentPageNode = | 1433         for (CXFA_Node* pCurrentPageNode = | 
| 1431                  pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); | 1434                  pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 1432              pCurrentPageNode; pCurrentPageNode = pCurrentPageNode->GetNodeItem( | 1435              pCurrentPageNode; pCurrentPageNode = pCurrentPageNode->GetNodeItem( | 
| 1433                                    XFA_NODEITEM_NextSibling)) { | 1436                                    XFA_NODEITEM_NextSibling)) { | 
| 1434           if (pCurrentPageNode->GetClassID() == XFA_Element::PageArea) { | 1437           if (pCurrentPageNode->GetElementType() == XFA_Element::PageArea) { | 
| 1435             CreateMinPageRecord(pCurrentPageNode, FALSE); | 1438             CreateMinPageRecord(pCurrentPageNode, FALSE); | 
| 1436           } else if (pCurrentPageNode->GetClassID() == XFA_Element::PageSet) { | 1439           } else if (pCurrentPageNode->GetElementType() == | 
|  | 1440                      XFA_Element::PageSet) { | 
| 1437             CreateMinPageSetRecord(pCurrentPageNode, TRUE); | 1441             CreateMinPageSetRecord(pCurrentPageNode, TRUE); | 
| 1438           } | 1442           } | 
| 1439         } | 1443         } | 
| 1440       } | 1444       } | 
| 1441       m_pPageSetMap.SetAt(pPageSet, iMin); | 1445       m_pPageSetMap.SetAt(pPageSet, iMin); | 
| 1442     } | 1446     } | 
| 1443   } | 1447   } | 
| 1444 } | 1448 } | 
| 1445 void CXFA_LayoutPageMgr::CreateNextMinRecord(CXFA_Node* pRecordNode) { | 1449 void CXFA_LayoutPageMgr::CreateNextMinRecord(CXFA_Node* pRecordNode) { | 
| 1446   if (pRecordNode == NULL) { | 1450   if (pRecordNode == NULL) { | 
| 1447     return; | 1451     return; | 
| 1448   } | 1452   } | 
| 1449   for (CXFA_Node* pCurrentNode = | 1453   for (CXFA_Node* pCurrentNode = | 
| 1450            pRecordNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 1454            pRecordNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 
| 1451        pCurrentNode; | 1455        pCurrentNode; | 
| 1452        pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 1456        pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 
| 1453     if (pCurrentNode->GetClassID() == XFA_Element::PageArea) { | 1457     if (pCurrentNode->GetElementType() == XFA_Element::PageArea) { | 
| 1454       CreateMinPageRecord(pCurrentNode, FALSE); | 1458       CreateMinPageRecord(pCurrentNode, FALSE); | 
| 1455     } else if (pCurrentNode->GetClassID() == XFA_Element::PageSet) { | 1459     } else if (pCurrentNode->GetElementType() == XFA_Element::PageSet) { | 
| 1456       CreateMinPageSetRecord(pCurrentNode, TRUE); | 1460       CreateMinPageSetRecord(pCurrentNode, TRUE); | 
| 1457     } | 1461     } | 
| 1458   } | 1462   } | 
| 1459 } | 1463 } | 
| 1460 void CXFA_LayoutPageMgr::ProcessLastPageSet() { | 1464 void CXFA_LayoutPageMgr::ProcessLastPageSet() { | 
| 1461   CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE); | 1465   CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE); | 
| 1462   CreateNextMinRecord(m_pCurPageArea); | 1466   CreateNextMinRecord(m_pCurPageArea); | 
| 1463   CXFA_Node* pPageSet = m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent); | 1467   CXFA_Node* pPageSet = m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent); | 
| 1464   while (TRUE) { | 1468   while (TRUE) { | 
| 1465     CreateMinPageSetRecord(pPageSet); | 1469     CreateMinPageSetRecord(pPageSet); | 
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1589         } | 1593         } | 
| 1590       } | 1594       } | 
| 1591     } | 1595     } | 
| 1592     if (pCurLayoutItem->m_pFirstChild) { | 1596     if (pCurLayoutItem->m_pFirstChild) { | 
| 1593       SaveLayoutItem(pCurLayoutItem); | 1597       SaveLayoutItem(pCurLayoutItem); | 
| 1594     } | 1598     } | 
| 1595     pCurLayoutItem->m_pParent = NULL; | 1599     pCurLayoutItem->m_pParent = NULL; | 
| 1596     pCurLayoutItem->m_pNextSibling = NULL; | 1600     pCurLayoutItem->m_pNextSibling = NULL; | 
| 1597     pCurLayoutItem->m_pFirstChild = NULL; | 1601     pCurLayoutItem->m_pFirstChild = NULL; | 
| 1598     if (!pCurLayoutItem->IsContentLayoutItem() && | 1602     if (!pCurLayoutItem->IsContentLayoutItem() && | 
| 1599         pCurLayoutItem->m_pFormNode->GetClassID() != XFA_Element::PageArea) { | 1603         pCurLayoutItem->m_pFormNode->GetElementType() != | 
|  | 1604             XFA_Element::PageArea) { | 
| 1600       delete pCurLayoutItem; | 1605       delete pCurLayoutItem; | 
| 1601     } | 1606     } | 
| 1602     pCurLayoutItem = pNextLayoutItem; | 1607     pCurLayoutItem = pNextLayoutItem; | 
| 1603   } | 1608   } | 
| 1604 } | 1609 } | 
| 1605 CXFA_Node* CXFA_LayoutPageMgr::QueryOverflow( | 1610 CXFA_Node* CXFA_LayoutPageMgr::QueryOverflow( | 
| 1606     CXFA_Node* pFormNode, | 1611     CXFA_Node* pFormNode, | 
| 1607     CXFA_LayoutContext* pLayoutContext) { | 1612     CXFA_LayoutContext* pLayoutContext) { | 
| 1608   for (CXFA_Node* pCurNode = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 1613   for (CXFA_Node* pCurNode = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 
| 1609        pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) { | 1614        pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) { | 
| 1610     if (pCurNode->GetClassID() == XFA_Element::Break) { | 1615     if (pCurNode->GetElementType() == XFA_Element::Break) { | 
| 1611       CFX_WideStringC wsOverflowLeader; | 1616       CFX_WideStringC wsOverflowLeader; | 
| 1612       CFX_WideStringC wsOverflowTarget; | 1617       CFX_WideStringC wsOverflowTarget; | 
| 1613       CFX_WideStringC wsOverflowTrailer; | 1618       CFX_WideStringC wsOverflowTrailer; | 
| 1614       pCurNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader); | 1619       pCurNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader); | 
| 1615       pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer); | 1620       pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer); | 
| 1616       pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget); | 1621       pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget); | 
| 1617       if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() || | 1622       if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() || | 
| 1618           !wsOverflowTarget.IsEmpty()) { | 1623           !wsOverflowTarget.IsEmpty()) { | 
| 1619         return pCurNode; | 1624         return pCurNode; | 
| 1620       } | 1625       } | 
| 1621       return NULL; | 1626       return NULL; | 
| 1622     } else if (pCurNode->GetClassID() == XFA_Element::Overflow) { | 1627     } else if (pCurNode->GetElementType() == XFA_Element::Overflow) { | 
| 1623       return pCurNode; | 1628       return pCurNode; | 
| 1624     } | 1629     } | 
| 1625   } | 1630   } | 
| 1626   return NULL; | 1631   return NULL; | 
| 1627 } | 1632 } | 
| 1628 | 1633 | 
| 1629 void CXFA_LayoutPageMgr::MergePageSetContents() { | 1634 void CXFA_LayoutPageMgr::MergePageSetContents() { | 
| 1630   CXFA_Document* pDocument = m_pTemplatePageSetRoot->GetDocument(); | 1635   CXFA_Document* pDocument = m_pTemplatePageSetRoot->GetDocument(); | 
| 1631   CXFA_FFNotify* pNotify = pDocument->GetParser()->GetNotify(); | 1636   CXFA_FFNotify* pNotify = pDocument->GetParser()->GetNotify(); | 
| 1632   CXFA_LayoutProcessor* pDocLayout = pDocument->GetDocLayout(); | 1637   CXFA_LayoutProcessor* pDocLayout = pDocument->GetDocLayout(); | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 1651   } | 1656   } | 
| 1652   int32_t iIndex = 0; | 1657   int32_t iIndex = 0; | 
| 1653   for (; pRootLayout; | 1658   for (; pRootLayout; | 
| 1654        pRootLayout = (CXFA_ContainerLayoutItem*)pRootLayout->m_pNextSibling) { | 1659        pRootLayout = (CXFA_ContainerLayoutItem*)pRootLayout->m_pNextSibling) { | 
| 1655     CXFA_Node* pPendingPageSet = nullptr; | 1660     CXFA_Node* pPendingPageSet = nullptr; | 
| 1656     CXFA_NodeIteratorTemplate< | 1661     CXFA_NodeIteratorTemplate< | 
| 1657         CXFA_ContainerLayoutItem, | 1662         CXFA_ContainerLayoutItem, | 
| 1658         CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 1663         CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 
| 1659         iterator(pRootLayout); | 1664         iterator(pRootLayout); | 
| 1660     CXFA_ContainerLayoutItem* pRootPageSetContainerItem = iterator.GetCurrent(); | 1665     CXFA_ContainerLayoutItem* pRootPageSetContainerItem = iterator.GetCurrent(); | 
| 1661     ASSERT(pRootPageSetContainerItem->m_pFormNode->GetClassID() == | 1666     ASSERT(pRootPageSetContainerItem->m_pFormNode->GetElementType() == | 
| 1662            XFA_Element::PageSet); | 1667            XFA_Element::PageSet); | 
| 1663     if (iIndex < pDocument->m_pPendingPageSet.GetSize()) { | 1668     if (iIndex < pDocument->m_pPendingPageSet.GetSize()) { | 
| 1664       pPendingPageSet = pDocument->m_pPendingPageSet.GetAt(iIndex); | 1669       pPendingPageSet = pDocument->m_pPendingPageSet.GetAt(iIndex); | 
| 1665       iIndex++; | 1670       iIndex++; | 
| 1666     } | 1671     } | 
| 1667     if (!pPendingPageSet) { | 1672     if (!pPendingPageSet) { | 
| 1668       if (pRootPageSetContainerItem->m_pFormNode->GetPacketID() == | 1673       if (pRootPageSetContainerItem->m_pFormNode->GetPacketID() == | 
| 1669           XFA_XDPPACKET_Template) { | 1674           XFA_XDPPACKET_Template) { | 
| 1670         pPendingPageSet = | 1675         pPendingPageSet = | 
| 1671             pRootPageSetContainerItem->m_pFormNode->CloneTemplateToForm(FALSE); | 1676             pRootPageSetContainerItem->m_pFormNode->CloneTemplateToForm(FALSE); | 
| 1672       } else { | 1677       } else { | 
| 1673         pPendingPageSet = pRootPageSetContainerItem->m_pFormNode; | 1678         pPendingPageSet = pRootPageSetContainerItem->m_pFormNode; | 
| 1674       } | 1679       } | 
| 1675     } | 1680     } | 
| 1676     if (pRootPageSetContainerItem->m_pFormNode->GetUserData( | 1681     if (pRootPageSetContainerItem->m_pFormNode->GetUserData( | 
| 1677             XFA_LAYOUTITEMKEY) == pRootPageSetContainerItem) { | 1682             XFA_LAYOUTITEMKEY) == pRootPageSetContainerItem) { | 
| 1678       pRootPageSetContainerItem->m_pFormNode->SetUserData(XFA_LAYOUTITEMKEY, | 1683       pRootPageSetContainerItem->m_pFormNode->SetUserData(XFA_LAYOUTITEMKEY, | 
| 1679                                                           NULL); | 1684                                                           NULL); | 
| 1680     } | 1685     } | 
| 1681     pRootPageSetContainerItem->m_pFormNode = pPendingPageSet; | 1686     pRootPageSetContainerItem->m_pFormNode = pPendingPageSet; | 
| 1682     pPendingPageSet->ClearFlag(XFA_NodeFlag_UnusedNode); | 1687     pPendingPageSet->ClearFlag(XFA_NodeFlag_UnusedNode); | 
| 1683     for (CXFA_ContainerLayoutItem* pContainerItem = iterator.MoveToNext(); | 1688     for (CXFA_ContainerLayoutItem* pContainerItem = iterator.MoveToNext(); | 
| 1684          pContainerItem; pContainerItem = iterator.MoveToNext()) { | 1689          pContainerItem; pContainerItem = iterator.MoveToNext()) { | 
| 1685       CXFA_Node* pNode = pContainerItem->m_pFormNode; | 1690       CXFA_Node* pNode = pContainerItem->m_pFormNode; | 
| 1686       if (pNode->GetPacketID() != XFA_XDPPACKET_Template) { | 1691       if (pNode->GetPacketID() != XFA_XDPPACKET_Template) { | 
| 1687         continue; | 1692         continue; | 
| 1688       } | 1693       } | 
| 1689       switch (pNode->GetClassID()) { | 1694       switch (pNode->GetElementType()) { | 
| 1690         case XFA_Element::PageSet: { | 1695         case XFA_Element::PageSet: { | 
| 1691           CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; | 1696           CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; | 
| 1692           pContainerItem->m_pFormNode = XFA_NodeMerge_CloneOrMergeContainer( | 1697           pContainerItem->m_pFormNode = XFA_NodeMerge_CloneOrMergeContainer( | 
| 1693               pDocument, pParentNode, pContainerItem->m_pFormNode, TRUE); | 1698               pDocument, pParentNode, pContainerItem->m_pFormNode, TRUE); | 
| 1694         } break; | 1699         } break; | 
| 1695         case XFA_Element::PageArea: { | 1700         case XFA_Element::PageArea: { | 
| 1696           CXFA_ContainerLayoutItem* pFormLayout = pContainerItem; | 1701           CXFA_ContainerLayoutItem* pFormLayout = pContainerItem; | 
| 1697           CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; | 1702           CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; | 
| 1698           FX_BOOL bIsExistForm = TRUE; | 1703           FX_BOOL bIsExistForm = TRUE; | 
| 1699           for (int32_t iLevel = 0; iLevel < 3; iLevel++) { | 1704           for (int32_t iLevel = 0; iLevel < 3; iLevel++) { | 
| 1700             pFormLayout = (CXFA_ContainerLayoutItem*)pFormLayout->m_pFirstChild; | 1705             pFormLayout = (CXFA_ContainerLayoutItem*)pFormLayout->m_pFirstChild; | 
| 1701             if (iLevel == 2) { | 1706             if (iLevel == 2) { | 
| 1702               while (pFormLayout && | 1707               while (pFormLayout && | 
| 1703                      !XFA_ItemLayoutProcessor_IsTakingSpace( | 1708                      !XFA_ItemLayoutProcessor_IsTakingSpace( | 
| 1704                          pFormLayout->m_pFormNode)) { | 1709                          pFormLayout->m_pFormNode)) { | 
| 1705                 pFormLayout = | 1710                 pFormLayout = | 
| 1706                     (CXFA_ContainerLayoutItem*)pFormLayout->m_pNextSibling; | 1711                     (CXFA_ContainerLayoutItem*)pFormLayout->m_pNextSibling; | 
| 1707               } | 1712               } | 
| 1708             } | 1713             } | 
| 1709             if (pFormLayout == NULL) { | 1714             if (pFormLayout == NULL) { | 
| 1710               bIsExistForm = FALSE; | 1715               bIsExistForm = FALSE; | 
| 1711               break; | 1716               break; | 
| 1712             } | 1717             } | 
| 1713           } | 1718           } | 
| 1714           if (bIsExistForm) { | 1719           if (bIsExistForm) { | 
| 1715             CXFA_Node* pNewSubform = pFormLayout->m_pFormNode; | 1720             CXFA_Node* pNewSubform = pFormLayout->m_pFormNode; | 
| 1716             if (pContainerItem->m_pOldSubform && | 1721             if (pContainerItem->m_pOldSubform && | 
| 1717                 pContainerItem->m_pOldSubform != pNewSubform) { | 1722                 pContainerItem->m_pOldSubform != pNewSubform) { | 
| 1718               CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance( | 1723               CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance( | 
| 1719                   pDocument, pContainerItem->m_pFormNode->GetClassID(), | 1724                   pDocument, pContainerItem->m_pFormNode->GetElementType(), | 
| 1720                   pContainerItem->m_pFormNode->GetNameHash(), pParentNode); | 1725                   pContainerItem->m_pFormNode->GetNameHash(), pParentNode); | 
| 1721               CXFA_ContainerIterator sIterator(pExistingNode); | 1726               CXFA_ContainerIterator sIterator(pExistingNode); | 
| 1722               for (CXFA_Node* pIter = sIterator.GetCurrent(); pIter; | 1727               for (CXFA_Node* pIter = sIterator.GetCurrent(); pIter; | 
| 1723                    pIter = sIterator.MoveToNext()) { | 1728                    pIter = sIterator.MoveToNext()) { | 
| 1724                 if (pIter->GetClassID() != XFA_Element::ContentArea) { | 1729                 if (pIter->GetElementType() != XFA_Element::ContentArea) { | 
| 1725                   CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( | 1730                   CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( | 
| 1726                       pIter->GetUserData(XFA_LAYOUTITEMKEY)); | 1731                       pIter->GetUserData(XFA_LAYOUTITEMKEY)); | 
| 1727                   if (pLayoutItem) { | 1732                   if (pLayoutItem) { | 
| 1728                     pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); | 1733                     pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); | 
| 1729                     delete pLayoutItem; | 1734                     delete pLayoutItem; | 
| 1730                   } | 1735                   } | 
| 1731                 } | 1736                 } | 
| 1732               } | 1737               } | 
| 1733               if (pExistingNode) { | 1738               if (pExistingNode) { | 
| 1734                 pParentNode->RemoveChild(pExistingNode); | 1739                 pParentNode->RemoveChild(pExistingNode); | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1770   CXFA_Node* pPageSet = GetRootLayoutItem()->m_pFormNode; | 1775   CXFA_Node* pPageSet = GetRootLayoutItem()->m_pFormNode; | 
| 1771   while (pPageSet) { | 1776   while (pPageSet) { | 
| 1772     CXFA_Node* pNextPageSet = | 1777     CXFA_Node* pNextPageSet = | 
| 1773         pPageSet->GetNextSameClassSibling(XFA_Element::PageSet); | 1778         pPageSet->GetNextSameClassSibling(XFA_Element::PageSet); | 
| 1774     CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> | 1779     CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> | 
| 1775         sIterator(pPageSet); | 1780         sIterator(pPageSet); | 
| 1776     CXFA_Node* pNode = sIterator.GetCurrent(); | 1781     CXFA_Node* pNode = sIterator.GetCurrent(); | 
| 1777     while (pNode) { | 1782     while (pNode) { | 
| 1778       if (pNode->IsUnusedNode()) { | 1783       if (pNode->IsUnusedNode()) { | 
| 1779         if (pNode->IsContainerNode()) { | 1784         if (pNode->IsContainerNode()) { | 
| 1780           XFA_Element eCurId = pNode->GetClassID(); | 1785           XFA_Element eCurId = pNode->GetElementType(); | 
| 1781           if (eCurId == XFA_Element::PageArea || | 1786           if (eCurId == XFA_Element::PageArea || | 
| 1782               eCurId == XFA_Element::PageSet) { | 1787               eCurId == XFA_Element::PageSet) { | 
| 1783             CXFA_ContainerIterator iteChild(pNode); | 1788             CXFA_ContainerIterator iteChild(pNode); | 
| 1784             CXFA_Node* pChildNode = iteChild.MoveToNext(); | 1789             CXFA_Node* pChildNode = iteChild.MoveToNext(); | 
| 1785             for (; pChildNode; pChildNode = iteChild.MoveToNext()) { | 1790             for (; pChildNode; pChildNode = iteChild.MoveToNext()) { | 
| 1786               CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( | 1791               CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( | 
| 1787                   pChildNode->GetUserData(XFA_LAYOUTITEMKEY)); | 1792                   pChildNode->GetUserData(XFA_LAYOUTITEMKEY)); | 
| 1788               if (pLayoutItem) { | 1793               if (pLayoutItem) { | 
| 1789                 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); | 1794                 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); | 
| 1790                 delete pLayoutItem; | 1795                 delete pLayoutItem; | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
| 1820   for (; pRootLayoutItem; | 1825   for (; pRootLayoutItem; | 
| 1821        pRootLayoutItem = | 1826        pRootLayoutItem = | 
| 1822            (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { | 1827            (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { | 
| 1823     CXFA_NodeIteratorTemplate< | 1828     CXFA_NodeIteratorTemplate< | 
| 1824         CXFA_ContainerLayoutItem, | 1829         CXFA_ContainerLayoutItem, | 
| 1825         CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 1830         CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 
| 1826         iterator(pRootLayoutItem); | 1831         iterator(pRootLayoutItem); | 
| 1827     for (CXFA_ContainerLayoutItem* pContainerItem = iterator.GetCurrent(); | 1832     for (CXFA_ContainerLayoutItem* pContainerItem = iterator.GetCurrent(); | 
| 1828          pContainerItem; pContainerItem = iterator.MoveToNext()) { | 1833          pContainerItem; pContainerItem = iterator.MoveToNext()) { | 
| 1829       CXFA_Node* pNode = pContainerItem->m_pFormNode; | 1834       CXFA_Node* pNode = pContainerItem->m_pFormNode; | 
| 1830       switch (pNode->GetClassID()) { | 1835       switch (pNode->GetElementType()) { | 
| 1831         case XFA_Element::PageArea: | 1836         case XFA_Element::PageArea: | 
| 1832           m_pLayoutProcessor->GetRootRootItemLayoutProcessor() | 1837           m_pLayoutProcessor->GetRootRootItemLayoutProcessor() | 
| 1833               ->DoLayoutPageArea(pContainerItem); | 1838               ->DoLayoutPageArea(pContainerItem); | 
| 1834           break; | 1839           break; | 
| 1835         default: | 1840         default: | 
| 1836           break; | 1841           break; | 
| 1837       } | 1842       } | 
| 1838     } | 1843     } | 
| 1839   } | 1844   } | 
| 1840 } | 1845 } | 
| 1841 | 1846 | 
| 1842 void CXFA_LayoutPageMgr::SyncLayoutData() { | 1847 void CXFA_LayoutPageMgr::SyncLayoutData() { | 
| 1843   MergePageSetContents(); | 1848   MergePageSetContents(); | 
| 1844   LayoutPageSetContents(); | 1849   LayoutPageSetContents(); | 
| 1845   CXFA_FFNotify* pNotify = | 1850   CXFA_FFNotify* pNotify = | 
| 1846       m_pTemplatePageSetRoot->GetDocument()->GetParser()->GetNotify(); | 1851       m_pTemplatePageSetRoot->GetDocument()->GetParser()->GetNotify(); | 
| 1847   int32_t nPageIdx = -1; | 1852   int32_t nPageIdx = -1; | 
| 1848   CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem(); | 1853   CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem(); | 
| 1849   for (; pRootLayoutItem; | 1854   for (; pRootLayoutItem; | 
| 1850        pRootLayoutItem = | 1855        pRootLayoutItem = | 
| 1851            (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { | 1856            (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { | 
| 1852     CXFA_NodeIteratorTemplate< | 1857     CXFA_NodeIteratorTemplate< | 
| 1853         CXFA_ContainerLayoutItem, | 1858         CXFA_ContainerLayoutItem, | 
| 1854         CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 1859         CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 
| 1855         iteratorParent(pRootLayoutItem); | 1860         iteratorParent(pRootLayoutItem); | 
| 1856     for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent(); | 1861     for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent(); | 
| 1857          pContainerItem; pContainerItem = iteratorParent.MoveToNext()) { | 1862          pContainerItem; pContainerItem = iteratorParent.MoveToNext()) { | 
| 1858       switch (pContainerItem->m_pFormNode->GetClassID()) { | 1863       switch (pContainerItem->m_pFormNode->GetElementType()) { | 
| 1859         case XFA_Element::PageArea: { | 1864         case XFA_Element::PageArea: { | 
| 1860           nPageIdx++; | 1865           nPageIdx++; | 
| 1861           uint32_t dwRelevant = | 1866           uint32_t dwRelevant = | 
| 1862               XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable; | 1867               XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable; | 
| 1863           CXFA_NodeIteratorTemplate<CXFA_LayoutItem, | 1868           CXFA_NodeIteratorTemplate<CXFA_LayoutItem, | 
| 1864                                     CXFA_TraverseStrategy_LayoutItem> | 1869                                     CXFA_TraverseStrategy_LayoutItem> | 
| 1865               iterator(pContainerItem); | 1870               iterator(pContainerItem); | 
| 1866           CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent(); | 1871           CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent(); | 
| 1867           while (pChildLayoutItem) { | 1872           while (pChildLayoutItem) { | 
| 1868             CXFA_ContentLayoutItem* pContentItem = | 1873             CXFA_ContentLayoutItem* pContentItem = | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 1896   ClearRecordList(); | 1901   ClearRecordList(); | 
| 1897 } | 1902 } | 
| 1898 void XFA_ReleaseLayoutItem_NoPageArea(CXFA_LayoutItem* pLayoutItem) { | 1903 void XFA_ReleaseLayoutItem_NoPageArea(CXFA_LayoutItem* pLayoutItem) { | 
| 1899   CXFA_LayoutItem *pNext, *pNode = pLayoutItem->m_pFirstChild; | 1904   CXFA_LayoutItem *pNext, *pNode = pLayoutItem->m_pFirstChild; | 
| 1900   while (pNode) { | 1905   while (pNode) { | 
| 1901     pNext = pNode->m_pNextSibling; | 1906     pNext = pNode->m_pNextSibling; | 
| 1902     pNode->m_pParent = NULL; | 1907     pNode->m_pParent = NULL; | 
| 1903     XFA_ReleaseLayoutItem_NoPageArea(pNode); | 1908     XFA_ReleaseLayoutItem_NoPageArea(pNode); | 
| 1904     pNode = pNext; | 1909     pNode = pNext; | 
| 1905   } | 1910   } | 
| 1906   if (pLayoutItem->m_pFormNode->GetClassID() != XFA_Element::PageArea) { | 1911   if (pLayoutItem->m_pFormNode->GetElementType() != XFA_Element::PageArea) { | 
| 1907     delete pLayoutItem; | 1912     delete pLayoutItem; | 
| 1908   } | 1913   } | 
| 1909 } | 1914 } | 
| 1910 void CXFA_LayoutPageMgr::PrepareLayout() { | 1915 void CXFA_LayoutPageMgr::PrepareLayout() { | 
| 1911   m_pPageSetCurRoot = NULL; | 1916   m_pPageSetCurRoot = NULL; | 
| 1912   m_ePageSetMode = XFA_ATTRIBUTEENUM_OrderedOccurrence; | 1917   m_ePageSetMode = XFA_ATTRIBUTEENUM_OrderedOccurrence; | 
| 1913   m_nAvailPages = 0; | 1918   m_nAvailPages = 0; | 
| 1914   ClearRecordList(); | 1919   ClearRecordList(); | 
| 1915   if (!m_pPageSetLayoutItemRoot) { | 1920   if (!m_pPageSetLayoutItemRoot) { | 
| 1916     return; | 1921     return; | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 1939   } | 1944   } | 
| 1940   pRootLayoutItem = m_pPageSetLayoutItemRoot; | 1945   pRootLayoutItem = m_pPageSetLayoutItemRoot; | 
| 1941   CXFA_ContainerLayoutItem* pNextLayout = NULL; | 1946   CXFA_ContainerLayoutItem* pNextLayout = NULL; | 
| 1942   for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) { | 1947   for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) { | 
| 1943     pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling; | 1948     pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling; | 
| 1944     SaveLayoutItem(pRootLayoutItem); | 1949     SaveLayoutItem(pRootLayoutItem); | 
| 1945     delete pRootLayoutItem; | 1950     delete pRootLayoutItem; | 
| 1946   } | 1951   } | 
| 1947   m_pPageSetLayoutItemRoot = NULL; | 1952   m_pPageSetLayoutItemRoot = NULL; | 
| 1948 } | 1953 } | 
| OLD | NEW | 
|---|