Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp

Issue 2089443002: Convert XFA_ELEMENT to an enum class (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: More unknown checks Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/parser/xfa_layout_pagemgr_new.h ('k') | xfa/fxfa/parser/xfa_locale.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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->GetClassID() != 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->GetClassID() != 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->GetClassID() != 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 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 pNextLayout = pLayoutItem->m_pNextSibling; 239 pNextLayout = pLayoutItem->m_pNextSibling;
240 XFA_ReleaseLayoutItem(pLayoutItem); 240 XFA_ReleaseLayoutItem(pLayoutItem);
241 } 241 }
242 } 242 }
243 FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) { 243 FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
244 PrepareLayout(); 244 PrepareLayout();
245 CXFA_Node* pTemplateNode = pFormNode->GetTemplateNode(); 245 CXFA_Node* pTemplateNode = pFormNode->GetTemplateNode();
246 if (!pTemplateNode) { 246 if (!pTemplateNode) {
247 return FALSE; 247 return FALSE;
248 } 248 }
249 m_pTemplatePageSetRoot = pTemplateNode->GetProperty(0, XFA_ELEMENT_PageSet); 249 m_pTemplatePageSetRoot = pTemplateNode->GetProperty(0, XFA_Element::PageSet);
250 ASSERT(m_pTemplatePageSetRoot); 250 ASSERT(m_pTemplatePageSetRoot);
251 if (m_pPageSetLayoutItemRoot) { 251 if (m_pPageSetLayoutItemRoot) {
252 m_pPageSetLayoutItemRoot->m_pParent = NULL; 252 m_pPageSetLayoutItemRoot->m_pParent = NULL;
253 m_pPageSetLayoutItemRoot->m_pFirstChild = NULL; 253 m_pPageSetLayoutItemRoot->m_pFirstChild = NULL;
254 m_pPageSetLayoutItemRoot->m_pNextSibling = NULL; 254 m_pPageSetLayoutItemRoot->m_pNextSibling = NULL;
255 m_pPageSetLayoutItemRoot->m_pFormNode = m_pTemplatePageSetRoot; 255 m_pPageSetLayoutItemRoot->m_pFormNode = m_pTemplatePageSetRoot;
256 } else { 256 } else {
257 m_pPageSetLayoutItemRoot = 257 m_pPageSetLayoutItemRoot =
258 new CXFA_ContainerLayoutItem(m_pTemplatePageSetRoot); 258 new CXFA_ContainerLayoutItem(m_pTemplatePageSetRoot);
259 } 259 }
260 m_pPageSetCurRoot = m_pPageSetLayoutItemRoot; 260 m_pPageSetCurRoot = m_pPageSetLayoutItemRoot;
261 m_pTemplatePageSetRoot->SetUserData(XFA_LAYOUTITEMKEY, 261 m_pTemplatePageSetRoot->SetUserData(XFA_LAYOUTITEMKEY,
262 (void*)m_pPageSetLayoutItemRoot); 262 (void*)m_pPageSetLayoutItemRoot);
263 XFA_ATTRIBUTEENUM eRelation = 263 XFA_ATTRIBUTEENUM eRelation =
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->GetClassID() == 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();
285 CXFA_Document* pObjFactory = pDocument->GetParser()->GetFactory(); 285 CXFA_Document* pObjFactory = pDocument->GetParser()->GetFactory();
286 pPageArea = m_pTemplatePageSetRoot->GetChild(0, XFA_ELEMENT_PageArea); 286 pPageArea = m_pTemplatePageSetRoot->GetChild(0, XFA_Element::PageArea);
287 if (!pPageArea) { 287 if (!pPageArea) {
288 pPageArea = pObjFactory->CreateNode(m_pTemplatePageSetRoot->GetPacketID(), 288 pPageArea = pObjFactory->CreateNode(m_pTemplatePageSetRoot->GetPacketID(),
289 XFA_ELEMENT_PageArea); 289 XFA_Element::PageArea);
290 if (!pPageArea) { 290 if (!pPageArea) {
291 return FALSE; 291 return FALSE;
292 } 292 }
293 m_pTemplatePageSetRoot->InsertChild(pPageArea, NULL); 293 m_pTemplatePageSetRoot->InsertChild(pPageArea, NULL);
294 pPageArea->SetFlag(XFA_NodeFlag_Initialized, true); 294 pPageArea->SetFlag(XFA_NodeFlag_Initialized, true);
295 } 295 }
296 CXFA_Node* pContentArea = pPageArea->GetChild(0, XFA_ELEMENT_ContentArea); 296 CXFA_Node* pContentArea = pPageArea->GetChild(0, XFA_Element::ContentArea);
297 if (!pContentArea) { 297 if (!pContentArea) {
298 pContentArea = pObjFactory->CreateNode(pPageArea->GetPacketID(), 298 pContentArea = pObjFactory->CreateNode(pPageArea->GetPacketID(),
299 XFA_ELEMENT_ContentArea); 299 XFA_Element::ContentArea);
300 if (!pContentArea) { 300 if (!pContentArea) {
301 return FALSE; 301 return FALSE;
302 } 302 }
303 pPageArea->InsertChild(pContentArea, NULL); 303 pPageArea->InsertChild(pContentArea, NULL);
304 pContentArea->SetFlag(XFA_NodeFlag_Initialized, true); 304 pContentArea->SetFlag(XFA_NodeFlag_Initialized, true);
305 pContentArea->SetMeasure(XFA_ATTRIBUTE_X, 305 pContentArea->SetMeasure(XFA_ATTRIBUTE_X,
306 CXFA_Measurement(0.25f, XFA_UNIT_In)); 306 CXFA_Measurement(0.25f, XFA_UNIT_In));
307 pContentArea->SetMeasure(XFA_ATTRIBUTE_Y, 307 pContentArea->SetMeasure(XFA_ATTRIBUTE_Y,
308 CXFA_Measurement(0.25f, XFA_UNIT_In)); 308 CXFA_Measurement(0.25f, XFA_UNIT_In));
309 pContentArea->SetMeasure(XFA_ATTRIBUTE_W, 309 pContentArea->SetMeasure(XFA_ATTRIBUTE_W,
310 CXFA_Measurement(8.0f, XFA_UNIT_In)); 310 CXFA_Measurement(8.0f, XFA_UNIT_In));
311 pContentArea->SetMeasure(XFA_ATTRIBUTE_H, 311 pContentArea->SetMeasure(XFA_ATTRIBUTE_H,
312 CXFA_Measurement(10.5f, XFA_UNIT_In)); 312 CXFA_Measurement(10.5f, XFA_UNIT_In));
313 } 313 }
314 CXFA_Node* pMedium = pPageArea->GetChild(0, XFA_ELEMENT_Medium); 314 CXFA_Node* pMedium = pPageArea->GetChild(0, XFA_Element::Medium);
315 if (!pMedium) { 315 if (!pMedium) {
316 pMedium = 316 pMedium =
317 pObjFactory->CreateNode(pPageArea->GetPacketID(), XFA_ELEMENT_Medium); 317 pObjFactory->CreateNode(pPageArea->GetPacketID(), XFA_Element::Medium);
318 if (!pContentArea) { 318 if (!pContentArea) {
319 return FALSE; 319 return FALSE;
320 } 320 }
321 pPageArea->InsertChild(pMedium, NULL); 321 pPageArea->InsertChild(pMedium, NULL);
322 pMedium->SetFlag(XFA_NodeFlag_Initialized, true); 322 pMedium->SetFlag(XFA_NodeFlag_Initialized, true);
323 pMedium->SetMeasure(XFA_ATTRIBUTE_Short, 323 pMedium->SetMeasure(XFA_ATTRIBUTE_Short,
324 CXFA_Measurement(8.5f, XFA_UNIT_In)); 324 CXFA_Measurement(8.5f, XFA_UNIT_In));
325 pMedium->SetMeasure(XFA_ATTRIBUTE_Long, 325 pMedium->SetMeasure(XFA_ATTRIBUTE_Long,
326 CXFA_Measurement(11.0f, XFA_UNIT_In)); 326 CXFA_Measurement(11.0f, XFA_UNIT_In));
327 } 327 }
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->GetClassID();
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) {
349 break; 349 break;
350 } 350 }
351 bProBreakBefore = TRUE; 351 bProBreakBefore = TRUE;
352 pRootSubform = pRootSubform->GetFirstChildByClass(XFA_ELEMENT_Subform); 352 pRootSubform = pRootSubform->GetFirstChildByClass(XFA_Element::Subform);
353 while (pRootSubform && 353 while (pRootSubform &&
354 !XFA_ItemLayoutProcessor_IsTakingSpace(pRootSubform)) { 354 !XFA_ItemLayoutProcessor_IsTakingSpace(pRootSubform)) {
355 pRootSubform = pRootSubform->GetNextSameClassSibling(XFA_ELEMENT_Subform); 355 pRootSubform =
356 pRootSubform->GetNextSameClassSibling(XFA_Element::Subform);
356 } 357 }
357 } 358 }
358 CXFA_Node *pLeader, *pTrailer; 359 CXFA_Node *pLeader, *pTrailer;
359 if (pBreakBeforeNode && 360 if (pBreakBeforeNode &&
360 ExecuteBreakBeforeOrAfter(pBreakBeforeNode, TRUE, pLeader, pTrailer)) { 361 ExecuteBreakBeforeOrAfter(pBreakBeforeNode, TRUE, pLeader, pTrailer)) {
361 m_pCurrentContainerRecord = m_rgProposedContainerRecord.GetHeadPosition(); 362 m_pCurrentContainerRecord = m_rgProposedContainerRecord.GetHeadPosition();
362 return TRUE; 363 return TRUE;
363 } 364 }
364 return AppendNewPage(TRUE); 365 return AppendNewPage(TRUE);
365 } 366 }
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 default: { ProcessLastPageSet(); } break; 580 default: { ProcessLastPageSet(); } break;
580 case XFA_ATTRIBUTEENUM_SimplexPaginated: 581 case XFA_ATTRIBUTEENUM_SimplexPaginated:
581 case XFA_ATTRIBUTEENUM_DuplexPaginated: { 582 case XFA_ATTRIBUTEENUM_DuplexPaginated: {
582 CXFA_LayoutItem* pLastPageAreaLayoutItem = NULL; 583 CXFA_LayoutItem* pLastPageAreaLayoutItem = NULL;
583 int32_t nPageAreaCount = 0; 584 int32_t nPageAreaCount = 0;
584 for (CXFA_LayoutItem* pPageAreaLayoutItem = 585 for (CXFA_LayoutItem* pPageAreaLayoutItem =
585 pPageSetLayoutItem->m_pFirstChild; 586 pPageSetLayoutItem->m_pFirstChild;
586 pPageAreaLayoutItem; 587 pPageAreaLayoutItem;
587 pPageAreaLayoutItem = pPageAreaLayoutItem->m_pNextSibling) { 588 pPageAreaLayoutItem = pPageAreaLayoutItem->m_pNextSibling) {
588 if (pPageAreaLayoutItem->m_pFormNode->GetClassID() != 589 if (pPageAreaLayoutItem->m_pFormNode->GetClassID() !=
589 XFA_ELEMENT_PageArea) { 590 XFA_Element::PageArea) {
590 continue; 591 continue;
591 } 592 }
592 nPageAreaCount++; 593 nPageAreaCount++;
593 pLastPageAreaLayoutItem = pPageAreaLayoutItem; 594 pLastPageAreaLayoutItem = pPageAreaLayoutItem;
594 } 595 }
595 if (!pLastPageAreaLayoutItem) { 596 if (!pLastPageAreaLayoutItem) {
596 break; 597 break;
597 } 598 }
598 if (!FindPageAreaFromPageSet_SimplexDuplex( 599 if (!FindPageAreaFromPageSet_SimplexDuplex(
599 pPageSetLayoutItem->m_pFormNode, NULL, NULL, NULL, TRUE, TRUE, 600 pPageSetLayoutItem->m_pFormNode, NULL, NULL, NULL, TRUE, TRUE,
(...skipping 22 matching lines...) Expand all
622 break; 623 break;
623 } 624 }
624 } 625 }
625 FX_BOOL bUsable = TRUE; 626 FX_BOOL bUsable = TRUE;
626 CFX_ArrayTemplate<FX_FLOAT> rgUsedHeights; 627 CFX_ArrayTemplate<FX_FLOAT> rgUsedHeights;
627 for (CXFA_LayoutItem* pChildLayoutItem = 628 for (CXFA_LayoutItem* pChildLayoutItem =
628 pLastPageAreaLayoutItem->m_pFirstChild; 629 pLastPageAreaLayoutItem->m_pFirstChild;
629 pChildLayoutItem; 630 pChildLayoutItem;
630 pChildLayoutItem = pChildLayoutItem->m_pNextSibling) { 631 pChildLayoutItem = pChildLayoutItem->m_pNextSibling) {
631 if (pChildLayoutItem->m_pFormNode->GetClassID() != 632 if (pChildLayoutItem->m_pFormNode->GetClassID() !=
632 XFA_ELEMENT_ContentArea) { 633 XFA_Element::ContentArea) {
633 continue; 634 continue;
634 } 635 }
635 FX_FLOAT fUsedHeight = 0; 636 FX_FLOAT fUsedHeight = 0;
636 for (CXFA_LayoutItem* pContentChildLayoutItem = 637 for (CXFA_LayoutItem* pContentChildLayoutItem =
637 pChildLayoutItem->m_pFirstChild; 638 pChildLayoutItem->m_pFirstChild;
638 pContentChildLayoutItem; 639 pContentChildLayoutItem;
639 pContentChildLayoutItem = 640 pContentChildLayoutItem =
640 pContentChildLayoutItem->m_pNextSibling) { 641 pContentChildLayoutItem->m_pNextSibling) {
641 if (CXFA_ContentLayoutItem* pContent = 642 if (CXFA_ContentLayoutItem* pContent =
642 pContentChildLayoutItem->AsContentLayoutItem()) { 643 pContentChildLayoutItem->AsContentLayoutItem()) {
643 fUsedHeight += pContent->m_sSize.y; 644 fUsedHeight += pContent->m_sSize.y;
644 } 645 }
645 } 646 }
646 rgUsedHeights.Add(fUsedHeight); 647 rgUsedHeights.Add(fUsedHeight);
647 } 648 }
648 int32_t iCurContentAreaIndex = -1; 649 int32_t iCurContentAreaIndex = -1;
649 for (CXFA_Node* pContentAreaNode = 650 for (CXFA_Node* pContentAreaNode =
650 pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 651 pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
651 pContentAreaNode; 652 pContentAreaNode;
652 pContentAreaNode = 653 pContentAreaNode =
653 pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 654 pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
654 if (pContentAreaNode->GetClassID() != XFA_ELEMENT_ContentArea) { 655 if (pContentAreaNode->GetClassID() != XFA_Element::ContentArea) {
655 continue; 656 continue;
656 } 657 }
657 iCurContentAreaIndex++; 658 iCurContentAreaIndex++;
658 if (rgUsedHeights[iCurContentAreaIndex] > 659 if (rgUsedHeights[iCurContentAreaIndex] >
659 pContentAreaNode->GetMeasure(XFA_ATTRIBUTE_H) 660 pContentAreaNode->GetMeasure(XFA_ATTRIBUTE_H)
660 .ToUnit(XFA_UNIT_Pt) + 661 .ToUnit(XFA_UNIT_Pt) +
661 XFA_LAYOUT_FLOAT_PERCISION) { 662 XFA_LAYOUT_FLOAT_PERCISION) {
662 bUsable = FALSE; 663 bUsable = FALSE;
663 break; 664 break;
664 } 665 }
665 } 666 }
666 if (bUsable) { 667 if (bUsable) {
667 CXFA_LayoutItem* pChildLayoutItem = 668 CXFA_LayoutItem* pChildLayoutItem =
668 pLastPageAreaLayoutItem->m_pFirstChild; 669 pLastPageAreaLayoutItem->m_pFirstChild;
669 CXFA_Node* pContentAreaNode = 670 CXFA_Node* pContentAreaNode =
670 pNode->GetNodeItem(XFA_NODEITEM_FirstChild); 671 pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
671 pLastPageAreaLayoutItem->m_pFormNode = pNode; 672 pLastPageAreaLayoutItem->m_pFormNode = pNode;
672 while (pChildLayoutItem && pContentAreaNode) { 673 while (pChildLayoutItem && pContentAreaNode) {
673 if (pChildLayoutItem->m_pFormNode->GetClassID() != 674 if (pChildLayoutItem->m_pFormNode->GetClassID() !=
674 XFA_ELEMENT_ContentArea) { 675 XFA_Element::ContentArea) {
675 pChildLayoutItem = pChildLayoutItem->m_pNextSibling; 676 pChildLayoutItem = pChildLayoutItem->m_pNextSibling;
676 continue; 677 continue;
677 } 678 }
678 if (pContentAreaNode->GetClassID() != XFA_ELEMENT_ContentArea) { 679 if (pContentAreaNode->GetClassID() != XFA_Element::ContentArea) {
679 pContentAreaNode = 680 pContentAreaNode =
680 pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling); 681 pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling);
681 continue; 682 continue;
682 } 683 }
683 pChildLayoutItem->m_pFormNode = pContentAreaNode; 684 pChildLayoutItem->m_pFormNode = pContentAreaNode;
684 pChildLayoutItem = pChildLayoutItem->m_pNextSibling; 685 pChildLayoutItem = pChildLayoutItem->m_pNextSibling;
685 pContentAreaNode = 686 pContentAreaNode =
686 pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling); 687 pContentAreaNode->GetNodeItem(XFA_NODEITEM_NextSibling);
687 } 688 }
688 } else if (pNode->GetEnum(XFA_ATTRIBUTE_PagePosition) == 689 } else if (pNode->GetEnum(XFA_ATTRIBUTE_PagePosition) ==
(...skipping 12 matching lines...) Expand all
701 CXFA_ContainerLayoutItem* CXFA_LayoutPageMgr::GetPage(int32_t index) const { 702 CXFA_ContainerLayoutItem* CXFA_LayoutPageMgr::GetPage(int32_t index) const {
702 if (index < 0 || index >= m_PageArray.GetSize()) 703 if (index < 0 || index >= m_PageArray.GetSize())
703 return nullptr; 704 return nullptr;
704 return m_PageArray[index]; 705 return m_PageArray[index];
705 } 706 }
706 int32_t CXFA_LayoutPageMgr::GetPageIndex( 707 int32_t CXFA_LayoutPageMgr::GetPageIndex(
707 const CXFA_ContainerLayoutItem* pPage) const { 708 const CXFA_ContainerLayoutItem* pPage) const {
708 // FIXME: Find() method should take const. 709 // FIXME: Find() method should take const.
709 return m_PageArray.Find(const_cast<CXFA_ContainerLayoutItem*>(pPage)); 710 return m_PageArray.Find(const_cast<CXFA_ContainerLayoutItem*>(pPage));
710 } 711 }
711 FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_ELEMENT eBreakType, 712 FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType,
712 XFA_ATTRIBUTEENUM eTargetType, 713 XFA_ATTRIBUTEENUM eTargetType,
713 CXFA_Node* pTarget, 714 CXFA_Node* pTarget,
714 FX_BOOL bStartNew) { 715 FX_BOOL bStartNew) {
715 FX_BOOL bRet = FALSE; 716 FX_BOOL bRet = FALSE;
716 switch (eTargetType) { 717 switch (eTargetType) {
717 case XFA_ATTRIBUTEENUM_ContentArea: 718 case XFA_ATTRIBUTEENUM_ContentArea:
718 if (pTarget && pTarget->GetClassID() != XFA_ELEMENT_ContentArea) { 719 if (pTarget && pTarget->GetClassID() != XFA_Element::ContentArea) {
719 pTarget = NULL; 720 pTarget = NULL;
720 } 721 }
721 if (!pTarget || !m_pCurrentContainerRecord || 722 if (!pTarget || !m_pCurrentContainerRecord ||
722 pTarget != 723 pTarget !=
723 GetCurrentContainerRecord()->pCurContentArea->m_pFormNode || 724 GetCurrentContainerRecord()->pCurContentArea->m_pFormNode ||
724 bStartNew) { 725 bStartNew) {
725 CXFA_Node* pPageArea = NULL; 726 CXFA_Node* pPageArea = NULL;
726 if (pTarget) { 727 if (pTarget) {
727 pPageArea = pTarget->GetNodeItem(XFA_NODEITEM_Parent); 728 pPageArea = pTarget->GetNodeItem(XFA_NODEITEM_Parent);
728 } 729 }
729 pPageArea = GetNextAvailPageArea(pPageArea, pTarget); 730 pPageArea = GetNextAvailPageArea(pPageArea, pTarget);
730 bRet = pPageArea != NULL; 731 bRet = pPageArea != NULL;
731 } 732 }
732 break; 733 break;
733 case XFA_ATTRIBUTEENUM_PageArea: 734 case XFA_ATTRIBUTEENUM_PageArea:
734 if (pTarget && pTarget->GetClassID() != XFA_ELEMENT_PageArea) { 735 if (pTarget && pTarget->GetClassID() != XFA_Element::PageArea) {
735 pTarget = NULL; 736 pTarget = NULL;
736 } 737 }
737 if (!pTarget || !m_pCurrentContainerRecord || 738 if (!pTarget || !m_pCurrentContainerRecord ||
738 pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode || 739 pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode ||
739 bStartNew) { 740 bStartNew) {
740 CXFA_Node* pPageArea = GetNextAvailPageArea(pTarget, NULL, TRUE); 741 CXFA_Node* pPageArea = GetNextAvailPageArea(pTarget, NULL, TRUE);
741 bRet = pPageArea != NULL; 742 bRet = pPageArea != NULL;
742 } 743 }
743 break; 744 break;
744 case XFA_ATTRIBUTEENUM_PageOdd: 745 case XFA_ATTRIBUTEENUM_PageOdd:
745 if (pTarget && pTarget->GetClassID() != XFA_ELEMENT_PageArea) { 746 if (pTarget && pTarget->GetClassID() != XFA_Element::PageArea) {
746 pTarget = NULL; 747 pTarget = NULL;
747 } 748 }
748 break; 749 break;
749 case XFA_ATTRIBUTEENUM_PageEven: 750 case XFA_ATTRIBUTEENUM_PageEven:
750 if (pTarget && pTarget->GetClassID() != XFA_ELEMENT_PageArea) { 751 if (pTarget && pTarget->GetClassID() != XFA_Element::PageArea) {
751 pTarget = NULL; 752 pTarget = NULL;
752 } 753 }
753 break; 754 break;
754 case XFA_ATTRIBUTEENUM_Auto: 755 case XFA_ATTRIBUTEENUM_Auto:
755 default: 756 default:
756 break; 757 break;
757 } 758 }
758 return bRet; 759 return bRet;
759 } 760 }
760 FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( 761 FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter(
761 CXFA_Node* pCurNode, 762 CXFA_Node* pCurNode,
762 FX_BOOL bBefore, 763 FX_BOOL bBefore,
763 CXFA_Node*& pBreakLeaderTemplate, 764 CXFA_Node*& pBreakLeaderTemplate,
764 CXFA_Node*& pBreakTrailerTemplate) { 765 CXFA_Node*& pBreakTrailerTemplate) {
765 XFA_ELEMENT eType = pCurNode->GetClassID(); 766 XFA_Element eType = pCurNode->GetClassID();
766 switch (eType) { 767 switch (eType) {
767 case XFA_ELEMENT_BreakBefore: 768 case XFA_Element::BreakBefore:
768 case XFA_ELEMENT_BreakAfter: { 769 case XFA_Element::BreakAfter: {
769 CFX_WideStringC wsBreakLeader, wsBreakTrailer; 770 CFX_WideStringC wsBreakLeader, wsBreakTrailer;
770 CXFA_Node* pFormNode = pCurNode->GetNodeItem( 771 CXFA_Node* pFormNode = pCurNode->GetNodeItem(
771 XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode); 772 XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode);
772 CXFA_Node* pContainer = pFormNode->GetTemplateNode(); 773 CXFA_Node* pContainer = pFormNode->GetTemplateNode();
773 FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0; 774 FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0;
774 CXFA_Node* pScript = pCurNode->GetFirstChildByClass(XFA_ELEMENT_Script); 775 CXFA_Node* pScript = pCurNode->GetFirstChildByClass(XFA_Element::Script);
775 if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript)) { 776 if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript)) {
776 return FALSE; 777 return FALSE;
777 } 778 }
778 CFX_WideStringC wsTarget = pCurNode->GetCData(XFA_ATTRIBUTE_Target); 779 CFX_WideStringC wsTarget = pCurNode->GetCData(XFA_ATTRIBUTE_Target);
779 CXFA_Node* pTarget = 780 CXFA_Node* pTarget =
780 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget); 781 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget);
781 wsBreakTrailer = pCurNode->GetCData(XFA_ATTRIBUTE_Trailer); 782 wsBreakTrailer = pCurNode->GetCData(XFA_ATTRIBUTE_Trailer);
782 wsBreakLeader = pCurNode->GetCData(XFA_ATTRIBUTE_Leader); 783 wsBreakLeader = pCurNode->GetCData(XFA_ATTRIBUTE_Leader);
783 pBreakLeaderTemplate = 784 pBreakLeaderTemplate =
784 ResolveBreakTarget(pContainer, TRUE, wsBreakLeader); 785 ResolveBreakTarget(pContainer, TRUE, wsBreakLeader);
785 pBreakTrailerTemplate = 786 pBreakTrailerTemplate =
786 ResolveBreakTarget(pContainer, TRUE, wsBreakTrailer); 787 ResolveBreakTarget(pContainer, TRUE, wsBreakTrailer);
787 if (RunBreak(eType, pCurNode->GetEnum(XFA_ATTRIBUTE_TargetType), pTarget, 788 if (RunBreak(eType, pCurNode->GetEnum(XFA_ATTRIBUTE_TargetType), pTarget,
788 bStartNew)) { 789 bStartNew)) {
789 return TRUE; 790 return TRUE;
790 } else { 791 } else {
791 if (m_rgProposedContainerRecord.GetCount() > 0 && 792 if (m_rgProposedContainerRecord.GetCount() > 0 &&
792 m_pCurrentContainerRecord == 793 m_pCurrentContainerRecord ==
793 m_rgProposedContainerRecord.GetHeadPosition() && 794 m_rgProposedContainerRecord.GetHeadPosition() &&
794 eType == XFA_ELEMENT_BreakBefore) { 795 eType == XFA_Element::BreakBefore) {
795 CXFA_Node* pParentNode = pFormNode->GetNodeItem( 796 CXFA_Node* pParentNode = pFormNode->GetNodeItem(
796 XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode); 797 XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode);
797 if (!pParentNode || 798 if (!pParentNode ||
798 pFormNode != 799 pFormNode !=
799 pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild, 800 pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild,
800 XFA_ObjectType::ContainerNode)) { 801 XFA_ObjectType::ContainerNode)) {
801 break; 802 break;
802 } 803 }
803 pParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); 804 pParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent);
804 if (!pParentNode || pParentNode->GetClassID() != XFA_ELEMENT_Form) { 805 if (!pParentNode || pParentNode->GetClassID() != XFA_Element::Form) {
805 break; 806 break;
806 } 807 }
807 return TRUE; 808 return TRUE;
808 } 809 }
809 } 810 }
810 } break; 811 } break;
811 case XFA_ELEMENT_Break: { 812 case XFA_Element::Break: {
812 FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0; 813 FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0;
813 CFX_WideStringC wsTarget = pCurNode->GetCData( 814 CFX_WideStringC wsTarget = pCurNode->GetCData(
814 bBefore ? XFA_ATTRIBUTE_BeforeTarget : XFA_ATTRIBUTE_AfterTarget); 815 bBefore ? XFA_ATTRIBUTE_BeforeTarget : XFA_ATTRIBUTE_AfterTarget);
815 CXFA_Node* pTarget = 816 CXFA_Node* pTarget =
816 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget); 817 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget);
817 if (RunBreak(bBefore ? XFA_ELEMENT_BreakBefore : XFA_ELEMENT_BreakAfter, 818 if (RunBreak(bBefore ? XFA_Element::BreakBefore : XFA_Element::BreakAfter,
818 pCurNode->GetEnum(bBefore ? XFA_ATTRIBUTE_Before 819 pCurNode->GetEnum(bBefore ? XFA_ATTRIBUTE_Before
819 : XFA_ATTRIBUTE_After), 820 : XFA_ATTRIBUTE_After),
820 pTarget, bStartNew)) { 821 pTarget, bStartNew)) {
821 return TRUE; 822 return TRUE;
822 } 823 }
823 } break; 824 } break;
824 default: 825 default:
825 break; 826 break;
826 } 827 }
827 return FALSE; 828 return FALSE;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 return FALSE; 890 return FALSE;
890 } 891 }
891 CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, 892 CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode,
892 CXFA_Node*& pLeaderTemplate, 893 CXFA_Node*& pLeaderTemplate,
893 CXFA_Node*& pTrailerTemplate, 894 CXFA_Node*& pTrailerTemplate,
894 FX_BOOL bCreatePage) { 895 FX_BOOL bCreatePage) {
895 CXFA_Node* pContainer = 896 CXFA_Node* pContainer =
896 pOverflowNode 897 pOverflowNode
897 ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode) 898 ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode)
898 ->GetTemplateNode(); 899 ->GetTemplateNode();
899 if (pOverflowNode->GetClassID() == XFA_ELEMENT_Break) { 900 if (pOverflowNode->GetClassID() == XFA_Element::Break) {
900 CFX_WideStringC wsOverflowLeader; 901 CFX_WideStringC wsOverflowLeader;
901 CFX_WideStringC wsOverflowTarget; 902 CFX_WideStringC wsOverflowTarget;
902 CFX_WideStringC wsOverflowTrailer; 903 CFX_WideStringC wsOverflowTrailer;
903 pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader); 904 pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader);
904 pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer); 905 pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer);
905 pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget); 906 pOverflowNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget);
906 if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() || 907 if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() ||
907 !wsOverflowTarget.IsEmpty()) { 908 !wsOverflowTarget.IsEmpty()) {
908 if (!wsOverflowTarget.IsEmpty() && bCreatePage && 909 if (!wsOverflowTarget.IsEmpty() && bCreatePage &&
909 !m_bCreateOverFlowPage) { 910 !m_bCreateOverFlowPage) {
910 CXFA_Node* pTarget = 911 CXFA_Node* pTarget =
911 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); 912 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget);
912 if (pTarget) { 913 if (pTarget) {
913 m_bCreateOverFlowPage = TRUE; 914 m_bCreateOverFlowPage = TRUE;
914 switch (pTarget->GetClassID()) { 915 switch (pTarget->GetClassID()) {
915 case XFA_ELEMENT_PageArea: 916 case XFA_Element::PageArea:
916 RunBreak(XFA_ELEMENT_Overflow, XFA_ATTRIBUTEENUM_PageArea, 917 RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_PageArea,
917 pTarget, TRUE); 918 pTarget, TRUE);
918 break; 919 break;
919 case XFA_ELEMENT_ContentArea: 920 case XFA_Element::ContentArea:
920 RunBreak(XFA_ELEMENT_Overflow, XFA_ATTRIBUTEENUM_ContentArea, 921 RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_ContentArea,
921 pTarget, TRUE); 922 pTarget, TRUE);
922 break; 923 break;
923 default: 924 default:
924 break; 925 break;
925 } 926 }
926 } 927 }
927 } 928 }
928 if (!bCreatePage) { 929 if (!bCreatePage) {
929 pLeaderTemplate = 930 pLeaderTemplate =
930 ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); 931 ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader);
931 pTrailerTemplate = 932 pTrailerTemplate =
932 ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); 933 ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer);
933 } 934 }
934 return pOverflowNode; 935 return pOverflowNode;
935 } 936 }
936 return NULL; 937 return NULL;
937 } else if (pOverflowNode->GetClassID() == XFA_ELEMENT_Overflow) { 938 } else if (pOverflowNode->GetClassID() == XFA_Element::Overflow) {
938 CFX_WideStringC wsOverflowLeader; 939 CFX_WideStringC wsOverflowLeader;
939 CFX_WideStringC wsOverflowTrailer; 940 CFX_WideStringC wsOverflowTrailer;
940 CFX_WideStringC wsOverflowTarget; 941 CFX_WideStringC wsOverflowTarget;
941 pOverflowNode->TryCData(XFA_ATTRIBUTE_Leader, wsOverflowLeader); 942 pOverflowNode->TryCData(XFA_ATTRIBUTE_Leader, wsOverflowLeader);
942 pOverflowNode->TryCData(XFA_ATTRIBUTE_Trailer, wsOverflowTrailer); 943 pOverflowNode->TryCData(XFA_ATTRIBUTE_Trailer, wsOverflowTrailer);
943 pOverflowNode->TryCData(XFA_ATTRIBUTE_Target, wsOverflowTarget); 944 pOverflowNode->TryCData(XFA_ATTRIBUTE_Target, wsOverflowTarget);
944 if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) { 945 if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) {
945 CXFA_Node* pTarget = 946 CXFA_Node* pTarget =
946 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); 947 ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget);
947 if (pTarget) { 948 if (pTarget) {
948 m_bCreateOverFlowPage = TRUE; 949 m_bCreateOverFlowPage = TRUE;
949 switch (pTarget->GetClassID()) { 950 switch (pTarget->GetClassID()) {
950 case XFA_ELEMENT_PageArea: 951 case XFA_Element::PageArea:
951 RunBreak(XFA_ELEMENT_Overflow, XFA_ATTRIBUTEENUM_PageArea, pTarget, 952 RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_PageArea, pTarget,
952 TRUE); 953 TRUE);
953 break; 954 break;
954 case XFA_ELEMENT_ContentArea: 955 case XFA_Element::ContentArea:
955 RunBreak(XFA_ELEMENT_Overflow, XFA_ATTRIBUTEENUM_ContentArea, 956 RunBreak(XFA_Element::Overflow, XFA_ATTRIBUTEENUM_ContentArea,
956 pTarget, TRUE); 957 pTarget, TRUE);
957 break; 958 break;
958 default: 959 default:
959 break; 960 break;
960 } 961 }
961 } 962 }
962 } 963 }
963 if (!bCreatePage) { 964 if (!bCreatePage) {
964 pLeaderTemplate = ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); 965 pLeaderTemplate = ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader);
965 pTrailerTemplate = 966 pTrailerTemplate =
966 ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); 967 ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer);
967 } 968 }
968 return pOverflowNode; 969 return pOverflowNode;
969 } 970 }
970 return nullptr; 971 return nullptr;
971 } 972 }
972 973
973 FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode, 974 FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode,
974 CXFA_Node*& pLeaderNode, 975 CXFA_Node*& pLeaderNode,
975 CXFA_Node*& pTrailerNode, 976 CXFA_Node*& pTrailerNode,
976 FX_BOOL bDataMerge, 977 FX_BOOL bDataMerge,
977 FX_BOOL bCreatePage) { 978 FX_BOOL bCreatePage) {
978 if (pFormNode == NULL) { 979 if (pFormNode == NULL) {
979 return FALSE; 980 return FALSE;
980 } 981 }
981 CXFA_Node *pLeaderTemplate = NULL, *pTrailerTemplate = NULL; 982 CXFA_Node *pLeaderTemplate = NULL, *pTrailerTemplate = NULL;
982 FX_BOOL bIsOverflowNode = FALSE; 983 FX_BOOL bIsOverflowNode = FALSE;
983 if (pFormNode->GetClassID() == XFA_ELEMENT_Overflow || 984 if (pFormNode->GetClassID() == XFA_Element::Overflow ||
984 pFormNode->GetClassID() == XFA_ELEMENT_Break) { 985 pFormNode->GetClassID() == XFA_Element::Break) {
985 bIsOverflowNode = TRUE; 986 bIsOverflowNode = TRUE;
986 } 987 }
987 for (CXFA_Node* pCurNode = 988 for (CXFA_Node* pCurNode =
988 bIsOverflowNode ? pFormNode 989 bIsOverflowNode ? pFormNode
989 : pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); 990 : pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild);
990 pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) { 991 pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) {
991 if (BreakOverflow(pCurNode, pLeaderTemplate, pTrailerTemplate, 992 if (BreakOverflow(pCurNode, pLeaderTemplate, pTrailerTemplate,
992 bCreatePage)) { 993 bCreatePage)) {
993 if (bIsOverflowNode) { 994 if (bIsOverflowNode) {
994 pFormNode = pCurNode->GetNodeItem(XFA_NODEITEM_Parent); 995 pFormNode = pCurNode->GetNodeItem(XFA_NODEITEM_Parent);
(...skipping 28 matching lines...) Expand all
1023 } 1024 }
1024 FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer( 1025 FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer(
1025 CXFA_Node* pBookendNode, 1026 CXFA_Node* pBookendNode,
1026 FX_BOOL bLeader, 1027 FX_BOOL bLeader,
1027 CXFA_Node*& pBookendAppendTemplate) { 1028 CXFA_Node*& pBookendAppendTemplate) {
1028 CFX_WideStringC wsBookendLeader; 1029 CFX_WideStringC wsBookendLeader;
1029 CXFA_Node* pContainer = 1030 CXFA_Node* pContainer =
1030 pBookendNode 1031 pBookendNode
1031 ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode) 1032 ->GetNodeItem(XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode)
1032 ->GetTemplateNode(); 1033 ->GetTemplateNode();
1033 if (pBookendNode->GetClassID() == XFA_ELEMENT_Break) { 1034 if (pBookendNode->GetClassID() == XFA_Element::Break) {
1034 pBookendNode->TryCData( 1035 pBookendNode->TryCData(
1035 bLeader ? XFA_ATTRIBUTE_BookendLeader : XFA_ATTRIBUTE_BookendTrailer, 1036 bLeader ? XFA_ATTRIBUTE_BookendLeader : XFA_ATTRIBUTE_BookendTrailer,
1036 wsBookendLeader); 1037 wsBookendLeader);
1037 if (!wsBookendLeader.IsEmpty()) { 1038 if (!wsBookendLeader.IsEmpty()) {
1038 pBookendAppendTemplate = 1039 pBookendAppendTemplate =
1039 ResolveBreakTarget(pContainer, FALSE, wsBookendLeader); 1040 ResolveBreakTarget(pContainer, FALSE, wsBookendLeader);
1040 return TRUE; 1041 return TRUE;
1041 } 1042 }
1042 return FALSE; 1043 return FALSE;
1043 } else if (pBookendNode->GetClassID() == XFA_ELEMENT_Bookend) { 1044 } else if (pBookendNode->GetClassID() == XFA_Element::Bookend) {
1044 pBookendNode->TryCData( 1045 pBookendNode->TryCData(
1045 bLeader ? XFA_ATTRIBUTE_Leader : XFA_ATTRIBUTE_Trailer, 1046 bLeader ? XFA_ATTRIBUTE_Leader : XFA_ATTRIBUTE_Trailer,
1046 wsBookendLeader); 1047 wsBookendLeader);
1047 pBookendAppendTemplate = 1048 pBookendAppendTemplate =
1048 ResolveBreakTarget(pContainer, TRUE, wsBookendLeader); 1049 ResolveBreakTarget(pContainer, TRUE, wsBookendLeader);
1049 return TRUE; 1050 return TRUE;
1050 } 1051 }
1051 return FALSE; 1052 return FALSE;
1052 } 1053 }
1053 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet( 1054 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet(
(...skipping 22 matching lines...) Expand all
1076 CXFA_Node* pPageSet, 1077 CXFA_Node* pPageSet,
1077 CXFA_Node* pStartChild, 1078 CXFA_Node* pStartChild,
1078 CXFA_Node* pTargetPageArea, 1079 CXFA_Node* pTargetPageArea,
1079 CXFA_Node* pTargetContentArea, 1080 CXFA_Node* pTargetContentArea,
1080 FX_BOOL bNewPage, 1081 FX_BOOL bNewPage,
1081 FX_BOOL bQuery) { 1082 FX_BOOL bQuery) {
1082 int32_t iPageSetCount = 0; 1083 int32_t iPageSetCount = 0;
1083 if (!pStartChild && !bQuery) { 1084 if (!pStartChild && !bQuery) {
1084 m_pPageSetMap.Lookup(pPageSet, iPageSetCount); 1085 m_pPageSetMap.Lookup(pPageSet, iPageSetCount);
1085 int32_t iMax = -1; 1086 int32_t iMax = -1;
1086 CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_ELEMENT_Occur); 1087 CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_Element::Occur);
1087 if (pOccurNode) { 1088 if (pOccurNode) {
1088 pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE); 1089 pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
1089 } 1090 }
1090 if (iMax >= 0 && iMax <= iPageSetCount) { 1091 if (iMax >= 0 && iMax <= iPageSetCount) {
1091 return FALSE; 1092 return FALSE;
1092 } 1093 }
1093 } 1094 }
1094 FX_BOOL bRes = FALSE; 1095 FX_BOOL bRes = FALSE;
1095 CXFA_Node* pCurrentNode = 1096 CXFA_Node* pCurrentNode =
1096 pStartChild ? pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling) 1097 pStartChild ? pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling)
1097 : pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); 1098 : pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild);
1098 for (; pCurrentNode; 1099 for (; pCurrentNode;
1099 pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 1100 pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
1100 if (pCurrentNode->GetClassID() == XFA_ELEMENT_PageArea) { 1101 if (pCurrentNode->GetClassID() == XFA_Element::PageArea) {
1101 if ((pTargetPageArea == pCurrentNode || pTargetPageArea == NULL)) { 1102 if ((pTargetPageArea == pCurrentNode || pTargetPageArea == NULL)) {
1102 if (pCurrentNode->GetFirstChildByClass(XFA_ELEMENT_ContentArea) == 1103 if (pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea) ==
1103 NULL) { 1104 NULL) {
1104 if (pTargetPageArea == pCurrentNode) { 1105 if (pTargetPageArea == pCurrentNode) {
1105 CreateMinPageRecord(pCurrentNode, TRUE); 1106 CreateMinPageRecord(pCurrentNode, TRUE);
1106 pTargetPageArea = NULL; 1107 pTargetPageArea = NULL;
1107 } 1108 }
1108 continue; 1109 continue;
1109 } 1110 }
1110 if (!bQuery) { 1111 if (!bQuery) {
1111 CXFA_ContainerRecord* pNewRecord = 1112 CXFA_ContainerRecord* pNewRecord =
1112 CreateContainerRecord(pCurrentNode, pStartChild == NULL); 1113 CreateContainerRecord(pCurrentNode, pStartChild == NULL);
1113 AddPageAreaLayoutItem(pNewRecord, pCurrentNode); 1114 AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
1114 if (pTargetContentArea == NULL) { 1115 if (pTargetContentArea == NULL) {
1115 pTargetContentArea = 1116 pTargetContentArea =
1116 pCurrentNode->GetFirstChildByClass(XFA_ELEMENT_ContentArea); 1117 pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea);
1117 } 1118 }
1118 AddContentAreaLayoutItem(pNewRecord, pTargetContentArea); 1119 AddContentAreaLayoutItem(pNewRecord, pTargetContentArea);
1119 } 1120 }
1120 m_pCurPageArea = pCurrentNode; 1121 m_pCurPageArea = pCurrentNode;
1121 m_nCurPageCount = 1; 1122 m_nCurPageCount = 1;
1122 bRes = TRUE; 1123 bRes = TRUE;
1123 break; 1124 break;
1124 } 1125 }
1125 if (!bQuery) { 1126 if (!bQuery) {
1126 CreateMinPageRecord(pCurrentNode, FALSE); 1127 CreateMinPageRecord(pCurrentNode, FALSE);
1127 } 1128 }
1128 } else if (pCurrentNode->GetClassID() == XFA_ELEMENT_PageSet) { 1129 } else if (pCurrentNode->GetClassID() == XFA_Element::PageSet) {
1129 if (FindPageAreaFromPageSet_Ordered(pCurrentNode, NULL, pTargetPageArea, 1130 if (FindPageAreaFromPageSet_Ordered(pCurrentNode, NULL, pTargetPageArea,
1130 pTargetContentArea, bNewPage, 1131 pTargetContentArea, bNewPage,
1131 bQuery)) { 1132 bQuery)) {
1132 bRes = TRUE; 1133 bRes = TRUE;
1133 break; 1134 break;
1134 } 1135 }
1135 if (!bQuery) { 1136 if (!bQuery) {
1136 CreateMinPageSetRecord(pCurrentNode, TRUE); 1137 CreateMinPageSetRecord(pCurrentNode, TRUE);
1137 } 1138 }
1138 } 1139 }
1139 } 1140 }
1140 if (!pStartChild && bRes && !bQuery) { 1141 if (!pStartChild && bRes && !bQuery) {
1141 m_pPageSetMap.SetAt(pPageSet, ++iPageSetCount); 1142 m_pPageSetMap.SetAt(pPageSet, ++iPageSetCount);
1142 } 1143 }
1143 return bRes; 1144 return bRes;
1144 } 1145 }
1145 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex( 1146 FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex(
1146 CXFA_Node* pPageSet, 1147 CXFA_Node* pPageSet,
1147 CXFA_Node* pStartChild, 1148 CXFA_Node* pStartChild,
1148 CXFA_Node* pTargetPageArea, 1149 CXFA_Node* pTargetPageArea,
1149 CXFA_Node* pTargetContentArea, 1150 CXFA_Node* pTargetContentArea,
1150 FX_BOOL bNewPage, 1151 FX_BOOL bNewPage,
1151 FX_BOOL bQuery, 1152 FX_BOOL bQuery,
1152 XFA_ATTRIBUTEENUM ePreferredPosition) { 1153 XFA_ATTRIBUTEENUM ePreferredPosition) {
1153 const XFA_ATTRIBUTEENUM eFallbackPosition = XFA_ATTRIBUTEENUM_Any; 1154 const XFA_ATTRIBUTEENUM eFallbackPosition = XFA_ATTRIBUTEENUM_Any;
1154 CXFA_Node *pPreferredPageArea = NULL, *pFallbackPageArea = NULL; 1155 CXFA_Node *pPreferredPageArea = NULL, *pFallbackPageArea = NULL;
1155 CXFA_Node* pCurrentNode = NULL; 1156 CXFA_Node* pCurrentNode = NULL;
1156 if (!pStartChild || pStartChild->GetClassID() == XFA_ELEMENT_PageArea) { 1157 if (!pStartChild || pStartChild->GetClassID() == XFA_Element::PageArea) {
1157 pCurrentNode = pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); 1158 pCurrentNode = pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild);
1158 } else { 1159 } else {
1159 pCurrentNode = pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling); 1160 pCurrentNode = pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling);
1160 } 1161 }
1161 for (; pCurrentNode; 1162 for (; pCurrentNode;
1162 pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 1163 pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
1163 if (pCurrentNode->GetClassID() == XFA_ELEMENT_PageArea) { 1164 if (pCurrentNode->GetClassID() == XFA_Element::PageArea) {
1164 if (!MatchPageAreaOddOrEven(pCurrentNode, FALSE)) { 1165 if (!MatchPageAreaOddOrEven(pCurrentNode, FALSE)) {
1165 continue; 1166 continue;
1166 } 1167 }
1167 XFA_ATTRIBUTEENUM eCurPagePosition = 1168 XFA_ATTRIBUTEENUM eCurPagePosition =
1168 pCurrentNode->GetEnum(XFA_ATTRIBUTE_PagePosition); 1169 pCurrentNode->GetEnum(XFA_ATTRIBUTE_PagePosition);
1169 if (ePreferredPosition == XFA_ATTRIBUTEENUM_Last) { 1170 if (ePreferredPosition == XFA_ATTRIBUTEENUM_Last) {
1170 if (eCurPagePosition != ePreferredPosition) { 1171 if (eCurPagePosition != ePreferredPosition) {
1171 continue; 1172 continue;
1172 } 1173 }
1173 if (m_ePageSetMode == XFA_ATTRIBUTEENUM_SimplexPaginated || 1174 if (m_ePageSetMode == XFA_ATTRIBUTEENUM_SimplexPaginated ||
1174 pCurrentNode->GetEnum(XFA_ATTRIBUTE_OddOrEven) == 1175 pCurrentNode->GetEnum(XFA_ATTRIBUTE_OddOrEven) ==
1175 XFA_ATTRIBUTEENUM_Any) { 1176 XFA_ATTRIBUTEENUM_Any) {
1176 pPreferredPageArea = pCurrentNode; 1177 pPreferredPageArea = pCurrentNode;
1177 break; 1178 break;
1178 } 1179 }
1179 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); 1180 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
1180 AddPageAreaLayoutItem(pNewRecord, pCurrentNode); 1181 AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
1181 AddContentAreaLayoutItem(pNewRecord, pCurrentNode->GetFirstChildByClass( 1182 AddContentAreaLayoutItem(pNewRecord, pCurrentNode->GetFirstChildByClass(
1182 XFA_ELEMENT_ContentArea)); 1183 XFA_Element::ContentArea));
1183 pPreferredPageArea = pCurrentNode; 1184 pPreferredPageArea = pCurrentNode;
1184 return FALSE; 1185 return FALSE;
1185 } else if (ePreferredPosition == XFA_ATTRIBUTEENUM_Only) { 1186 } else if (ePreferredPosition == XFA_ATTRIBUTEENUM_Only) {
1186 if (eCurPagePosition != ePreferredPosition) { 1187 if (eCurPagePosition != ePreferredPosition) {
1187 continue; 1188 continue;
1188 } 1189 }
1189 if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated || 1190 if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated ||
1190 pCurrentNode->GetEnum(XFA_ATTRIBUTE_OddOrEven) == 1191 pCurrentNode->GetEnum(XFA_ATTRIBUTE_OddOrEven) ==
1191 XFA_ATTRIBUTEENUM_Any) { 1192 XFA_ATTRIBUTEENUM_Any) {
1192 pPreferredPageArea = pCurrentNode; 1193 pPreferredPageArea = pCurrentNode;
1193 break; 1194 break;
1194 } 1195 }
1195 return FALSE; 1196 return FALSE;
1196 } 1197 }
1197 if ((pTargetPageArea == pCurrentNode || pTargetPageArea == NULL)) { 1198 if ((pTargetPageArea == pCurrentNode || pTargetPageArea == NULL)) {
1198 if (pCurrentNode->GetFirstChildByClass(XFA_ELEMENT_ContentArea) == 1199 if (pCurrentNode->GetFirstChildByClass(XFA_Element::ContentArea) ==
1199 NULL) { 1200 NULL) {
1200 if (pTargetPageArea == pCurrentNode) { 1201 if (pTargetPageArea == pCurrentNode) {
1201 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); 1202 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
1202 AddPageAreaLayoutItem(pNewRecord, pCurrentNode); 1203 AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
1203 pTargetPageArea = NULL; 1204 pTargetPageArea = NULL;
1204 } 1205 }
1205 continue; 1206 continue;
1206 } 1207 }
1207 if ((ePreferredPosition == XFA_ATTRIBUTEENUM_Rest && 1208 if ((ePreferredPosition == XFA_ATTRIBUTEENUM_Rest &&
1208 eCurPagePosition == XFA_ATTRIBUTEENUM_Any) || 1209 eCurPagePosition == XFA_ATTRIBUTEENUM_Any) ||
1209 eCurPagePosition == ePreferredPosition) { 1210 eCurPagePosition == ePreferredPosition) {
1210 pPreferredPageArea = pCurrentNode; 1211 pPreferredPageArea = pCurrentNode;
1211 break; 1212 break;
1212 } else if (eCurPagePosition == eFallbackPosition && 1213 } else if (eCurPagePosition == eFallbackPosition &&
1213 !pFallbackPageArea) { 1214 !pFallbackPageArea) {
1214 pFallbackPageArea = pCurrentNode; 1215 pFallbackPageArea = pCurrentNode;
1215 } 1216 }
1216 } else if (pTargetPageArea && 1217 } else if (pTargetPageArea &&
1217 !MatchPageAreaOddOrEven(pTargetPageArea, FALSE)) { 1218 !MatchPageAreaOddOrEven(pTargetPageArea, FALSE)) {
1218 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); 1219 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
1219 AddPageAreaLayoutItem(pNewRecord, pCurrentNode); 1220 AddPageAreaLayoutItem(pNewRecord, pCurrentNode);
1220 AddContentAreaLayoutItem(pNewRecord, pCurrentNode->GetFirstChildByClass( 1221 AddContentAreaLayoutItem(pNewRecord, pCurrentNode->GetFirstChildByClass(
1221 XFA_ELEMENT_ContentArea)); 1222 XFA_Element::ContentArea));
1222 } 1223 }
1223 } else if (pCurrentNode->GetClassID() == XFA_ELEMENT_PageSet) { 1224 } else if (pCurrentNode->GetClassID() == XFA_Element::PageSet) {
1224 if (FindPageAreaFromPageSet_SimplexDuplex( 1225 if (FindPageAreaFromPageSet_SimplexDuplex(
1225 pCurrentNode, NULL, pTargetPageArea, pTargetContentArea, bNewPage, 1226 pCurrentNode, NULL, pTargetPageArea, pTargetContentArea, bNewPage,
1226 bQuery, ePreferredPosition)) { 1227 bQuery, ePreferredPosition)) {
1227 break; 1228 break;
1228 } 1229 }
1229 } 1230 }
1230 } 1231 }
1231 CXFA_Node* pCurPageArea = NULL; 1232 CXFA_Node* pCurPageArea = NULL;
1232 if (pPreferredPageArea) { 1233 if (pPreferredPageArea) {
1233 pCurPageArea = pPreferredPageArea; 1234 pCurPageArea = pPreferredPageArea;
1234 } else if (pFallbackPageArea) { 1235 } else if (pFallbackPageArea) {
1235 pCurPageArea = pFallbackPageArea; 1236 pCurPageArea = pFallbackPageArea;
1236 } 1237 }
1237 if (!pCurPageArea) { 1238 if (!pCurPageArea) {
1238 return FALSE; 1239 return FALSE;
1239 } 1240 }
1240 if (!bQuery) { 1241 if (!bQuery) {
1241 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); 1242 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
1242 AddPageAreaLayoutItem(pNewRecord, pCurPageArea); 1243 AddPageAreaLayoutItem(pNewRecord, pCurPageArea);
1243 if (pTargetContentArea == NULL) { 1244 if (pTargetContentArea == NULL) {
1244 pTargetContentArea = 1245 pTargetContentArea =
1245 pCurPageArea->GetFirstChildByClass(XFA_ELEMENT_ContentArea); 1246 pCurPageArea->GetFirstChildByClass(XFA_Element::ContentArea);
1246 } 1247 }
1247 AddContentAreaLayoutItem(pNewRecord, pTargetContentArea); 1248 AddContentAreaLayoutItem(pNewRecord, pTargetContentArea);
1248 } 1249 }
1249 m_pCurPageArea = pCurPageArea; 1250 m_pCurPageArea = pCurPageArea;
1250 return TRUE; 1251 return TRUE;
1251 } 1252 }
1252 FX_BOOL CXFA_LayoutPageMgr::MatchPageAreaOddOrEven(CXFA_Node* pPageArea, 1253 FX_BOOL CXFA_LayoutPageMgr::MatchPageAreaOddOrEven(CXFA_Node* pPageArea,
1253 FX_BOOL bLastMatch) { 1254 FX_BOOL bLastMatch) {
1254 if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated) { 1255 if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated) {
1255 return TRUE; 1256 return TRUE;
(...skipping 22 matching lines...) Expand all
1278 ASSERT(m_pCurPageArea); 1279 ASSERT(m_pCurPageArea);
1279 return m_pCurPageArea; 1280 return m_pCurPageArea;
1280 } 1281 }
1281 if (pTargetPageArea == NULL || pTargetPageArea == m_pCurPageArea) { 1282 if (pTargetPageArea == NULL || pTargetPageArea == m_pCurPageArea) {
1282 if (!bNewPage && GetNextContentArea(pTargetContentArea)) { 1283 if (!bNewPage && GetNextContentArea(pTargetContentArea)) {
1283 return m_pCurPageArea; 1284 return m_pCurPageArea;
1284 } 1285 }
1285 if (IsPageSetRootOrderedOccurrence()) { 1286 if (IsPageSetRootOrderedOccurrence()) {
1286 int32_t iMax = -1; 1287 int32_t iMax = -1;
1287 CXFA_Node* pOccurNode = 1288 CXFA_Node* pOccurNode =
1288 m_pCurPageArea->GetFirstChildByClass(XFA_ELEMENT_Occur); 1289 m_pCurPageArea->GetFirstChildByClass(XFA_Element::Occur);
1289 if (pOccurNode) { 1290 if (pOccurNode) {
1290 pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE); 1291 pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
1291 } 1292 }
1292 if ((iMax < 0 || m_nCurPageCount < iMax)) { 1293 if ((iMax < 0 || m_nCurPageCount < iMax)) {
1293 if (!bQuery) { 1294 if (!bQuery) {
1294 CXFA_ContainerRecord* pNewRecord = 1295 CXFA_ContainerRecord* pNewRecord =
1295 CreateContainerRecord(m_pCurPageArea); 1296 CreateContainerRecord(m_pCurPageArea);
1296 AddPageAreaLayoutItem(pNewRecord, m_pCurPageArea); 1297 AddPageAreaLayoutItem(pNewRecord, m_pCurPageArea);
1297 if (pTargetContentArea == NULL) { 1298 if (pTargetContentArea == NULL) {
1298 pTargetContentArea = 1299 pTargetContentArea =
1299 m_pCurPageArea->GetFirstChildByClass(XFA_ELEMENT_ContentArea); 1300 m_pCurPageArea->GetFirstChildByClass(XFA_Element::ContentArea);
1300 } 1301 }
1301 AddContentAreaLayoutItem(pNewRecord, pTargetContentArea); 1302 AddContentAreaLayoutItem(pNewRecord, pTargetContentArea);
1302 } 1303 }
1303 m_nCurPageCount++; 1304 m_nCurPageCount++;
1304 return m_pCurPageArea; 1305 return m_pCurPageArea;
1305 } 1306 }
1306 } 1307 }
1307 } 1308 }
1308 if (!bQuery && IsPageSetRootOrderedOccurrence()) { 1309 if (!bQuery && IsPageSetRootOrderedOccurrence()) {
1309 CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE); 1310 CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE);
(...skipping 22 matching lines...) Expand all
1332 pPageSet = pPageSet->GetNodeItem(XFA_NODEITEM_Parent); 1333 pPageSet = pPageSet->GetNodeItem(XFA_NODEITEM_Parent);
1333 } 1334 }
1334 return NULL; 1335 return NULL;
1335 } 1336 }
1336 1337
1337 FX_BOOL CXFA_LayoutPageMgr::GetNextContentArea(CXFA_Node* pContentArea) { 1338 FX_BOOL CXFA_LayoutPageMgr::GetNextContentArea(CXFA_Node* pContentArea) {
1338 CXFA_Node* pCurContentNode = 1339 CXFA_Node* pCurContentNode =
1339 GetCurrentContainerRecord()->pCurContentArea->m_pFormNode; 1340 GetCurrentContainerRecord()->pCurContentArea->m_pFormNode;
1340 if (pContentArea == NULL) { 1341 if (pContentArea == NULL) {
1341 pContentArea = 1342 pContentArea =
1342 pCurContentNode->GetNextSameClassSibling(XFA_ELEMENT_ContentArea); 1343 pCurContentNode->GetNextSameClassSibling(XFA_Element::ContentArea);
1343 if (pContentArea == NULL) { 1344 if (pContentArea == NULL) {
1344 return FALSE; 1345 return FALSE;
1345 } 1346 }
1346 } else { 1347 } else {
1347 if (pContentArea->GetNodeItem(XFA_NODEITEM_Parent) != m_pCurPageArea) { 1348 if (pContentArea->GetNodeItem(XFA_NODEITEM_Parent) != m_pCurPageArea) {
1348 return FALSE; 1349 return FALSE;
1349 } 1350 }
1350 CXFA_ContainerLayoutItem* pContentAreaLayout = NULL; 1351 CXFA_ContainerLayoutItem* pContentAreaLayout = NULL;
1351 if (!CheckContentAreaNotUsed(GetCurrentContainerRecord()->pCurPageArea, 1352 if (!CheckContentAreaNotUsed(GetCurrentContainerRecord()->pCurPageArea,
1352 pContentArea, pContentAreaLayout)) { 1353 pContentArea, pContentAreaLayout)) {
(...skipping 13 matching lines...) Expand all
1366 AddContentAreaLayoutItem(pNewRecord, pContentArea); 1367 AddContentAreaLayoutItem(pNewRecord, pContentArea);
1367 return TRUE; 1368 return TRUE;
1368 } 1369 }
1369 void CXFA_LayoutPageMgr::InitPageSetMap() { 1370 void CXFA_LayoutPageMgr::InitPageSetMap() {
1370 if (!IsPageSetRootOrderedOccurrence()) { 1371 if (!IsPageSetRootOrderedOccurrence()) {
1371 return; 1372 return;
1372 } 1373 }
1373 CXFA_NodeIterator sIterator(m_pTemplatePageSetRoot); 1374 CXFA_NodeIterator sIterator(m_pTemplatePageSetRoot);
1374 for (CXFA_Node* pPageSetNode = sIterator.GetCurrent(); pPageSetNode; 1375 for (CXFA_Node* pPageSetNode = sIterator.GetCurrent(); pPageSetNode;
1375 pPageSetNode = sIterator.MoveToNext()) { 1376 pPageSetNode = sIterator.MoveToNext()) {
1376 if (pPageSetNode->GetClassID() == XFA_ELEMENT_PageSet) { 1377 if (pPageSetNode->GetClassID() == XFA_Element::PageSet) {
1377 XFA_ATTRIBUTEENUM eRelation = 1378 XFA_ATTRIBUTEENUM eRelation =
1378 pPageSetNode->GetEnum(XFA_ATTRIBUTE_Relation); 1379 pPageSetNode->GetEnum(XFA_ATTRIBUTE_Relation);
1379 if (eRelation == XFA_ATTRIBUTEENUM_OrderedOccurrence) { 1380 if (eRelation == XFA_ATTRIBUTEENUM_OrderedOccurrence) {
1380 m_pPageSetMap.SetAt(pPageSetNode, 0); 1381 m_pPageSetMap.SetAt(pPageSetNode, 0);
1381 } 1382 }
1382 } 1383 }
1383 } 1384 }
1384 } 1385 }
1385 int32_t CXFA_LayoutPageMgr::CreateMinPageRecord(CXFA_Node* pPageArea, 1386 int32_t CXFA_LayoutPageMgr::CreateMinPageRecord(CXFA_Node* pPageArea,
1386 FX_BOOL bTargetPageArea, 1387 FX_BOOL bTargetPageArea,
1387 FX_BOOL bCreateLast) { 1388 FX_BOOL bCreateLast) {
1388 if (pPageArea == NULL) { 1389 if (pPageArea == NULL) {
1389 return 0; 1390 return 0;
1390 } 1391 }
1391 CXFA_Node* pOccurNode = pPageArea->GetFirstChildByClass(XFA_ELEMENT_Occur); 1392 CXFA_Node* pOccurNode = pPageArea->GetFirstChildByClass(XFA_Element::Occur);
1392 int32_t iMin = 0; 1393 int32_t iMin = 0;
1393 if ((pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) || 1394 if ((pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) ||
1394 bTargetPageArea) { 1395 bTargetPageArea) {
1395 CXFA_Node* pContentArea = 1396 CXFA_Node* pContentArea =
1396 pPageArea->GetFirstChildByClass(XFA_ELEMENT_ContentArea); 1397 pPageArea->GetFirstChildByClass(XFA_Element::ContentArea);
1397 if (iMin < 1 && bTargetPageArea && !pContentArea) { 1398 if (iMin < 1 && bTargetPageArea && !pContentArea) {
1398 iMin = 1; 1399 iMin = 1;
1399 } 1400 }
1400 int32_t i = 0; 1401 int32_t i = 0;
1401 if (bCreateLast) { 1402 if (bCreateLast) {
1402 i = m_nCurPageCount; 1403 i = m_nCurPageCount;
1403 } 1404 }
1404 for (; i < iMin; i++) { 1405 for (; i < iMin; i++) {
1405 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(); 1406 CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
1406 AddPageAreaLayoutItem(pNewRecord, pPageArea); 1407 AddPageAreaLayoutItem(pNewRecord, pPageArea);
1407 AddContentAreaLayoutItem(pNewRecord, pContentArea); 1408 AddContentAreaLayoutItem(pNewRecord, pContentArea);
1408 } 1409 }
1409 } 1410 }
1410 return iMin; 1411 return iMin;
1411 } 1412 }
1412 void CXFA_LayoutPageMgr::CreateMinPageSetRecord(CXFA_Node* pPageSet, 1413 void CXFA_LayoutPageMgr::CreateMinPageSetRecord(CXFA_Node* pPageSet,
1413 FX_BOOL bCreateAll) { 1414 FX_BOOL bCreateAll) {
1414 if (pPageSet == NULL) { 1415 if (pPageSet == NULL) {
1415 return; 1416 return;
1416 } 1417 }
1417 int32_t iCurSetCount = 0; 1418 int32_t iCurSetCount = 0;
1418 if (!m_pPageSetMap.Lookup(pPageSet, iCurSetCount)) { 1419 if (!m_pPageSetMap.Lookup(pPageSet, iCurSetCount)) {
1419 return; 1420 return;
1420 } 1421 }
1421 if (bCreateAll) { 1422 if (bCreateAll) {
1422 iCurSetCount = 0; 1423 iCurSetCount = 0;
1423 } 1424 }
1424 CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_ELEMENT_Occur); 1425 CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_Element::Occur);
1425 int32_t iMin = 0; 1426 int32_t iMin = 0;
1426 if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) { 1427 if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) {
1427 if (iCurSetCount < iMin) { 1428 if (iCurSetCount < iMin) {
1428 for (int32_t i = 0; i < iMin - iCurSetCount; i++) { 1429 for (int32_t i = 0; i < iMin - iCurSetCount; i++) {
1429 for (CXFA_Node* pCurrentPageNode = 1430 for (CXFA_Node* pCurrentPageNode =
1430 pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild); 1431 pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild);
1431 pCurrentPageNode; pCurrentPageNode = pCurrentPageNode->GetNodeItem( 1432 pCurrentPageNode; pCurrentPageNode = pCurrentPageNode->GetNodeItem(
1432 XFA_NODEITEM_NextSibling)) { 1433 XFA_NODEITEM_NextSibling)) {
1433 if (pCurrentPageNode->GetClassID() == XFA_ELEMENT_PageArea) { 1434 if (pCurrentPageNode->GetClassID() == XFA_Element::PageArea) {
1434 CreateMinPageRecord(pCurrentPageNode, FALSE); 1435 CreateMinPageRecord(pCurrentPageNode, FALSE);
1435 } else if (pCurrentPageNode->GetClassID() == XFA_ELEMENT_PageSet) { 1436 } else if (pCurrentPageNode->GetClassID() == XFA_Element::PageSet) {
1436 CreateMinPageSetRecord(pCurrentPageNode, TRUE); 1437 CreateMinPageSetRecord(pCurrentPageNode, TRUE);
1437 } 1438 }
1438 } 1439 }
1439 } 1440 }
1440 m_pPageSetMap.SetAt(pPageSet, iMin); 1441 m_pPageSetMap.SetAt(pPageSet, iMin);
1441 } 1442 }
1442 } 1443 }
1443 } 1444 }
1444 void CXFA_LayoutPageMgr::CreateNextMinRecord(CXFA_Node* pRecordNode) { 1445 void CXFA_LayoutPageMgr::CreateNextMinRecord(CXFA_Node* pRecordNode) {
1445 if (pRecordNode == NULL) { 1446 if (pRecordNode == NULL) {
1446 return; 1447 return;
1447 } 1448 }
1448 for (CXFA_Node* pCurrentNode = 1449 for (CXFA_Node* pCurrentNode =
1449 pRecordNode->GetNodeItem(XFA_NODEITEM_NextSibling); 1450 pRecordNode->GetNodeItem(XFA_NODEITEM_NextSibling);
1450 pCurrentNode; 1451 pCurrentNode;
1451 pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 1452 pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
1452 if (pCurrentNode->GetClassID() == XFA_ELEMENT_PageArea) { 1453 if (pCurrentNode->GetClassID() == XFA_Element::PageArea) {
1453 CreateMinPageRecord(pCurrentNode, FALSE); 1454 CreateMinPageRecord(pCurrentNode, FALSE);
1454 } else if (pCurrentNode->GetClassID() == XFA_ELEMENT_PageSet) { 1455 } else if (pCurrentNode->GetClassID() == XFA_Element::PageSet) {
1455 CreateMinPageSetRecord(pCurrentNode, TRUE); 1456 CreateMinPageSetRecord(pCurrentNode, TRUE);
1456 } 1457 }
1457 } 1458 }
1458 } 1459 }
1459 void CXFA_LayoutPageMgr::ProcessLastPageSet() { 1460 void CXFA_LayoutPageMgr::ProcessLastPageSet() {
1460 CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE); 1461 CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE);
1461 CreateNextMinRecord(m_pCurPageArea); 1462 CreateNextMinRecord(m_pCurPageArea);
1462 CXFA_Node* pPageSet = m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent); 1463 CXFA_Node* pPageSet = m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent);
1463 while (TRUE) { 1464 while (TRUE) {
1464 CreateMinPageSetRecord(pPageSet); 1465 CreateMinPageSetRecord(pPageSet);
1465 if (pPageSet == m_pTemplatePageSetRoot) { 1466 if (pPageSet == m_pTemplatePageSetRoot) {
1466 break; 1467 break;
1467 } 1468 }
1468 CreateNextMinRecord(pPageSet); 1469 CreateNextMinRecord(pPageSet);
1469 pPageSet = pPageSet->GetNodeItem(XFA_NODEITEM_Parent); 1470 pPageSet = pPageSet->GetNodeItem(XFA_NODEITEM_Parent);
1470 } 1471 }
1471 } 1472 }
1472 FX_BOOL CXFA_LayoutPageMgr::GetNextAvailContentHeight(FX_FLOAT fChildHeight) { 1473 FX_BOOL CXFA_LayoutPageMgr::GetNextAvailContentHeight(FX_FLOAT fChildHeight) {
1473 CXFA_Node* pCurContentNode = 1474 CXFA_Node* pCurContentNode =
1474 GetCurrentContainerRecord()->pCurContentArea->m_pFormNode; 1475 GetCurrentContainerRecord()->pCurContentArea->m_pFormNode;
1475 if (pCurContentNode == NULL) { 1476 if (pCurContentNode == NULL) {
1476 return FALSE; 1477 return FALSE;
1477 } 1478 }
1478 pCurContentNode = 1479 pCurContentNode =
1479 pCurContentNode->GetNextSameClassSibling(XFA_ELEMENT_ContentArea); 1480 pCurContentNode->GetNextSameClassSibling(XFA_Element::ContentArea);
1480 if (pCurContentNode) { 1481 if (pCurContentNode) {
1481 FX_FLOAT fNextContentHeight = 1482 FX_FLOAT fNextContentHeight =
1482 pCurContentNode->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt); 1483 pCurContentNode->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
1483 return fNextContentHeight > fChildHeight; 1484 return fNextContentHeight > fChildHeight;
1484 } 1485 }
1485 CXFA_Node* pPageNode = GetCurrentContainerRecord()->pCurPageArea->m_pFormNode; 1486 CXFA_Node* pPageNode = GetCurrentContainerRecord()->pCurPageArea->m_pFormNode;
1486 CXFA_Node* pOccurNode = pPageNode->GetFirstChildByClass(XFA_ELEMENT_Occur); 1487 CXFA_Node* pOccurNode = pPageNode->GetFirstChildByClass(XFA_Element::Occur);
1487 int32_t iMax = 0; 1488 int32_t iMax = 0;
1488 if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE)) { 1489 if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE)) {
1489 if (m_nCurPageCount == iMax) { 1490 if (m_nCurPageCount == iMax) {
1490 CXFA_Node* pSrcPage = m_pCurPageArea; 1491 CXFA_Node* pSrcPage = m_pCurPageArea;
1491 int32_t nSrcPageCount = m_nCurPageCount; 1492 int32_t nSrcPageCount = m_nCurPageCount;
1492 FX_POSITION psSrcRecord = m_rgProposedContainerRecord.GetTailPosition(); 1493 FX_POSITION psSrcRecord = m_rgProposedContainerRecord.GetTailPosition();
1493 CXFA_Node* pNextPage = GetNextAvailPageArea(NULL, NULL, FALSE, TRUE); 1494 CXFA_Node* pNextPage = GetNextAvailPageArea(NULL, NULL, FALSE, TRUE);
1494 m_pCurPageArea = pSrcPage; 1495 m_pCurPageArea = pSrcPage;
1495 m_nCurPageCount = nSrcPageCount; 1496 m_nCurPageCount = nSrcPageCount;
1496 CXFA_ContainerRecord* pPrevRecord = 1497 CXFA_ContainerRecord* pPrevRecord =
1497 (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext( 1498 (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext(
1498 psSrcRecord); 1499 psSrcRecord);
1499 while (psSrcRecord) { 1500 while (psSrcRecord) {
1500 FX_POSITION psSaveRecord = psSrcRecord; 1501 FX_POSITION psSaveRecord = psSrcRecord;
1501 CXFA_ContainerRecord* pInsertRecord = 1502 CXFA_ContainerRecord* pInsertRecord =
1502 (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext( 1503 (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext(
1503 psSrcRecord); 1504 psSrcRecord);
1504 RemoveLayoutRecord(pInsertRecord, pPrevRecord); 1505 RemoveLayoutRecord(pInsertRecord, pPrevRecord);
1505 delete pInsertRecord; 1506 delete pInsertRecord;
1506 m_rgProposedContainerRecord.RemoveAt(psSaveRecord); 1507 m_rgProposedContainerRecord.RemoveAt(psSaveRecord);
1507 } 1508 }
1508 if (pNextPage) { 1509 if (pNextPage) {
1509 CXFA_Node* pContentArea = 1510 CXFA_Node* pContentArea =
1510 pNextPage->GetFirstChildByClass(XFA_ELEMENT_ContentArea); 1511 pNextPage->GetFirstChildByClass(XFA_Element::ContentArea);
1511 if (pContentArea) { 1512 if (pContentArea) {
1512 FX_FLOAT fNextContentHeight = 1513 FX_FLOAT fNextContentHeight =
1513 pContentArea->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt); 1514 pContentArea->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
1514 if (fNextContentHeight > fChildHeight) { 1515 if (fNextContentHeight > fChildHeight) {
1515 return TRUE; 1516 return TRUE;
1516 } 1517 }
1517 } 1518 }
1518 } 1519 }
1519 return FALSE; 1520 return FALSE;
1520 } 1521 }
1521 } 1522 }
1522 CXFA_Node* pContentArea = 1523 CXFA_Node* pContentArea =
1523 pPageNode->GetFirstChildByClass(XFA_ELEMENT_ContentArea); 1524 pPageNode->GetFirstChildByClass(XFA_Element::ContentArea);
1524 FX_FLOAT fNextContentHeight = 1525 FX_FLOAT fNextContentHeight =
1525 pContentArea->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt); 1526 pContentArea->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
1526 if (fNextContentHeight < XFA_LAYOUT_FLOAT_PERCISION) { 1527 if (fNextContentHeight < XFA_LAYOUT_FLOAT_PERCISION) {
1527 return TRUE; 1528 return TRUE;
1528 } 1529 }
1529 if (fNextContentHeight > fChildHeight) { 1530 if (fNextContentHeight > fChildHeight) {
1530 return TRUE; 1531 return TRUE;
1531 } 1532 }
1532 return FALSE; 1533 return FALSE;
1533 } 1534 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 } 1589 }
1589 } 1590 }
1590 } 1591 }
1591 if (pCurLayoutItem->m_pFirstChild) { 1592 if (pCurLayoutItem->m_pFirstChild) {
1592 SaveLayoutItem(pCurLayoutItem); 1593 SaveLayoutItem(pCurLayoutItem);
1593 } 1594 }
1594 pCurLayoutItem->m_pParent = NULL; 1595 pCurLayoutItem->m_pParent = NULL;
1595 pCurLayoutItem->m_pNextSibling = NULL; 1596 pCurLayoutItem->m_pNextSibling = NULL;
1596 pCurLayoutItem->m_pFirstChild = NULL; 1597 pCurLayoutItem->m_pFirstChild = NULL;
1597 if (!pCurLayoutItem->IsContentLayoutItem() && 1598 if (!pCurLayoutItem->IsContentLayoutItem() &&
1598 pCurLayoutItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageArea) { 1599 pCurLayoutItem->m_pFormNode->GetClassID() != XFA_Element::PageArea) {
1599 delete pCurLayoutItem; 1600 delete pCurLayoutItem;
1600 } 1601 }
1601 pCurLayoutItem = pNextLayoutItem; 1602 pCurLayoutItem = pNextLayoutItem;
1602 } 1603 }
1603 } 1604 }
1604 CXFA_Node* CXFA_LayoutPageMgr::QueryOverflow( 1605 CXFA_Node* CXFA_LayoutPageMgr::QueryOverflow(
1605 CXFA_Node* pFormNode, 1606 CXFA_Node* pFormNode,
1606 CXFA_LayoutContext* pLayoutContext) { 1607 CXFA_LayoutContext* pLayoutContext) {
1607 for (CXFA_Node* pCurNode = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); 1608 for (CXFA_Node* pCurNode = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild);
1608 pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) { 1609 pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) {
1609 if (pCurNode->GetClassID() == XFA_ELEMENT_Break) { 1610 if (pCurNode->GetClassID() == XFA_Element::Break) {
1610 CFX_WideStringC wsOverflowLeader; 1611 CFX_WideStringC wsOverflowLeader;
1611 CFX_WideStringC wsOverflowTarget; 1612 CFX_WideStringC wsOverflowTarget;
1612 CFX_WideStringC wsOverflowTrailer; 1613 CFX_WideStringC wsOverflowTrailer;
1613 pCurNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader); 1614 pCurNode->TryCData(XFA_ATTRIBUTE_OverflowLeader, wsOverflowLeader);
1614 pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer); 1615 pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTrailer, wsOverflowTrailer);
1615 pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget); 1616 pCurNode->TryCData(XFA_ATTRIBUTE_OverflowTarget, wsOverflowTarget);
1616 if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() || 1617 if (!wsOverflowLeader.IsEmpty() || !wsOverflowTrailer.IsEmpty() ||
1617 !wsOverflowTarget.IsEmpty()) { 1618 !wsOverflowTarget.IsEmpty()) {
1618 return pCurNode; 1619 return pCurNode;
1619 } 1620 }
1620 return NULL; 1621 return NULL;
1621 } else if (pCurNode->GetClassID() == XFA_ELEMENT_Overflow) { 1622 } else if (pCurNode->GetClassID() == XFA_Element::Overflow) {
1622 return pCurNode; 1623 return pCurNode;
1623 } 1624 }
1624 } 1625 }
1625 return NULL; 1626 return NULL;
1626 } 1627 }
1627 1628
1628 void CXFA_LayoutPageMgr::MergePageSetContents() { 1629 void CXFA_LayoutPageMgr::MergePageSetContents() {
1629 CXFA_Document* pDocument = m_pTemplatePageSetRoot->GetDocument(); 1630 CXFA_Document* pDocument = m_pTemplatePageSetRoot->GetDocument();
1630 CXFA_FFNotify* pNotify = pDocument->GetParser()->GetNotify(); 1631 CXFA_FFNotify* pNotify = pDocument->GetParser()->GetNotify();
1631 CXFA_LayoutProcessor* pDocLayout = pDocument->GetDocLayout(); 1632 CXFA_LayoutProcessor* pDocLayout = pDocument->GetDocLayout();
(...skipping 19 matching lines...) Expand all
1651 int32_t iIndex = 0; 1652 int32_t iIndex = 0;
1652 for (; pRootLayout; 1653 for (; pRootLayout;
1653 pRootLayout = (CXFA_ContainerLayoutItem*)pRootLayout->m_pNextSibling) { 1654 pRootLayout = (CXFA_ContainerLayoutItem*)pRootLayout->m_pNextSibling) {
1654 CXFA_Node* pPendingPageSet = nullptr; 1655 CXFA_Node* pPendingPageSet = nullptr;
1655 CXFA_NodeIteratorTemplate< 1656 CXFA_NodeIteratorTemplate<
1656 CXFA_ContainerLayoutItem, 1657 CXFA_ContainerLayoutItem,
1657 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> 1658 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem>
1658 iterator(pRootLayout); 1659 iterator(pRootLayout);
1659 CXFA_ContainerLayoutItem* pRootPageSetContainerItem = iterator.GetCurrent(); 1660 CXFA_ContainerLayoutItem* pRootPageSetContainerItem = iterator.GetCurrent();
1660 ASSERT(pRootPageSetContainerItem->m_pFormNode->GetClassID() == 1661 ASSERT(pRootPageSetContainerItem->m_pFormNode->GetClassID() ==
1661 XFA_ELEMENT_PageSet); 1662 XFA_Element::PageSet);
1662 if (iIndex < pDocument->m_pPendingPageSet.GetSize()) { 1663 if (iIndex < pDocument->m_pPendingPageSet.GetSize()) {
1663 pPendingPageSet = pDocument->m_pPendingPageSet.GetAt(iIndex); 1664 pPendingPageSet = pDocument->m_pPendingPageSet.GetAt(iIndex);
1664 iIndex++; 1665 iIndex++;
1665 } 1666 }
1666 if (!pPendingPageSet) { 1667 if (!pPendingPageSet) {
1667 if (pRootPageSetContainerItem->m_pFormNode->GetPacketID() == 1668 if (pRootPageSetContainerItem->m_pFormNode->GetPacketID() ==
1668 XFA_XDPPACKET_Template) { 1669 XFA_XDPPACKET_Template) {
1669 pPendingPageSet = 1670 pPendingPageSet =
1670 pRootPageSetContainerItem->m_pFormNode->CloneTemplateToForm(FALSE); 1671 pRootPageSetContainerItem->m_pFormNode->CloneTemplateToForm(FALSE);
1671 } else { 1672 } else {
1672 pPendingPageSet = pRootPageSetContainerItem->m_pFormNode; 1673 pPendingPageSet = pRootPageSetContainerItem->m_pFormNode;
1673 } 1674 }
1674 } 1675 }
1675 if (pRootPageSetContainerItem->m_pFormNode->GetUserData( 1676 if (pRootPageSetContainerItem->m_pFormNode->GetUserData(
1676 XFA_LAYOUTITEMKEY) == pRootPageSetContainerItem) { 1677 XFA_LAYOUTITEMKEY) == pRootPageSetContainerItem) {
1677 pRootPageSetContainerItem->m_pFormNode->SetUserData(XFA_LAYOUTITEMKEY, 1678 pRootPageSetContainerItem->m_pFormNode->SetUserData(XFA_LAYOUTITEMKEY,
1678 NULL); 1679 NULL);
1679 } 1680 }
1680 pRootPageSetContainerItem->m_pFormNode = pPendingPageSet; 1681 pRootPageSetContainerItem->m_pFormNode = pPendingPageSet;
1681 pPendingPageSet->ClearFlag(XFA_NodeFlag_UnusedNode); 1682 pPendingPageSet->ClearFlag(XFA_NodeFlag_UnusedNode);
1682 for (CXFA_ContainerLayoutItem* pContainerItem = iterator.MoveToNext(); 1683 for (CXFA_ContainerLayoutItem* pContainerItem = iterator.MoveToNext();
1683 pContainerItem; pContainerItem = iterator.MoveToNext()) { 1684 pContainerItem; pContainerItem = iterator.MoveToNext()) {
1684 CXFA_Node* pNode = pContainerItem->m_pFormNode; 1685 CXFA_Node* pNode = pContainerItem->m_pFormNode;
1685 if (pNode->GetPacketID() != XFA_XDPPACKET_Template) { 1686 if (pNode->GetPacketID() != XFA_XDPPACKET_Template) {
1686 continue; 1687 continue;
1687 } 1688 }
1688 switch (pNode->GetClassID()) { 1689 switch (pNode->GetClassID()) {
1689 case XFA_ELEMENT_PageSet: { 1690 case XFA_Element::PageSet: {
1690 CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; 1691 CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode;
1691 pContainerItem->m_pFormNode = XFA_NodeMerge_CloneOrMergeContainer( 1692 pContainerItem->m_pFormNode = XFA_NodeMerge_CloneOrMergeContainer(
1692 pDocument, pParentNode, pContainerItem->m_pFormNode, TRUE); 1693 pDocument, pParentNode, pContainerItem->m_pFormNode, TRUE);
1693 } break; 1694 } break;
1694 case XFA_ELEMENT_PageArea: { 1695 case XFA_Element::PageArea: {
1695 CXFA_ContainerLayoutItem* pFormLayout = pContainerItem; 1696 CXFA_ContainerLayoutItem* pFormLayout = pContainerItem;
1696 CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; 1697 CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode;
1697 FX_BOOL bIsExistForm = TRUE; 1698 FX_BOOL bIsExistForm = TRUE;
1698 for (int32_t iLevel = 0; iLevel < 3; iLevel++) { 1699 for (int32_t iLevel = 0; iLevel < 3; iLevel++) {
1699 pFormLayout = (CXFA_ContainerLayoutItem*)pFormLayout->m_pFirstChild; 1700 pFormLayout = (CXFA_ContainerLayoutItem*)pFormLayout->m_pFirstChild;
1700 if (iLevel == 2) { 1701 if (iLevel == 2) {
1701 while (pFormLayout && 1702 while (pFormLayout &&
1702 !XFA_ItemLayoutProcessor_IsTakingSpace( 1703 !XFA_ItemLayoutProcessor_IsTakingSpace(
1703 pFormLayout->m_pFormNode)) { 1704 pFormLayout->m_pFormNode)) {
1704 pFormLayout = 1705 pFormLayout =
1705 (CXFA_ContainerLayoutItem*)pFormLayout->m_pNextSibling; 1706 (CXFA_ContainerLayoutItem*)pFormLayout->m_pNextSibling;
1706 } 1707 }
1707 } 1708 }
1708 if (pFormLayout == NULL) { 1709 if (pFormLayout == NULL) {
1709 bIsExistForm = FALSE; 1710 bIsExistForm = FALSE;
1710 break; 1711 break;
1711 } 1712 }
1712 } 1713 }
1713 if (bIsExistForm) { 1714 if (bIsExistForm) {
1714 CXFA_Node* pNewSubform = pFormLayout->m_pFormNode; 1715 CXFA_Node* pNewSubform = pFormLayout->m_pFormNode;
1715 if (pContainerItem->m_pOldSubform && 1716 if (pContainerItem->m_pOldSubform &&
1716 pContainerItem->m_pOldSubform != pNewSubform) { 1717 pContainerItem->m_pOldSubform != pNewSubform) {
1717 CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance( 1718 CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance(
1718 pDocument, pContainerItem->m_pFormNode->GetClassID(), 1719 pDocument, pContainerItem->m_pFormNode->GetClassID(),
1719 pContainerItem->m_pFormNode->GetNameHash(), pParentNode); 1720 pContainerItem->m_pFormNode->GetNameHash(), pParentNode);
1720 CXFA_ContainerIterator sIterator(pExistingNode); 1721 CXFA_ContainerIterator sIterator(pExistingNode);
1721 for (CXFA_Node* pIter = sIterator.GetCurrent(); pIter; 1722 for (CXFA_Node* pIter = sIterator.GetCurrent(); pIter;
1722 pIter = sIterator.MoveToNext()) { 1723 pIter = sIterator.MoveToNext()) {
1723 if (pIter->GetClassID() != XFA_ELEMENT_ContentArea) { 1724 if (pIter->GetClassID() != XFA_Element::ContentArea) {
1724 CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( 1725 CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>(
1725 pIter->GetUserData(XFA_LAYOUTITEMKEY)); 1726 pIter->GetUserData(XFA_LAYOUTITEMKEY));
1726 if (pLayoutItem) { 1727 if (pLayoutItem) {
1727 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); 1728 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem);
1728 delete pLayoutItem; 1729 delete pLayoutItem;
1729 } 1730 }
1730 } 1731 }
1731 } 1732 }
1732 if (pExistingNode) { 1733 if (pExistingNode) {
1733 pParentNode->RemoveChild(pExistingNode); 1734 pParentNode->RemoveChild(pExistingNode);
1734 } 1735 }
1735 } 1736 }
1736 pContainerItem->m_pOldSubform = pNewSubform; 1737 pContainerItem->m_pOldSubform = pNewSubform;
1737 } 1738 }
1738 pContainerItem->m_pFormNode = pDocument->DataMerge_CopyContainer( 1739 pContainerItem->m_pFormNode = pDocument->DataMerge_CopyContainer(
1739 pContainerItem->m_pFormNode, pParentNode, 1740 pContainerItem->m_pFormNode, pParentNode,
1740 ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)), TRUE); 1741 ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)), TRUE);
1741 } break; 1742 } break;
1742 case XFA_ELEMENT_ContentArea: { 1743 case XFA_Element::ContentArea: {
1743 CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode; 1744 CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode;
1744 for (CXFA_Node* pChildNode = 1745 for (CXFA_Node* pChildNode =
1745 pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild); 1746 pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild);
1746 pChildNode; 1747 pChildNode;
1747 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 1748 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
1748 if (pChildNode->GetTemplateNode() != pContainerItem->m_pFormNode) { 1749 if (pChildNode->GetTemplateNode() != pContainerItem->m_pFormNode) {
1749 continue; 1750 continue;
1750 } 1751 }
1751 pContainerItem->m_pFormNode = pChildNode; 1752 pContainerItem->m_pFormNode = pChildNode;
1752 break; 1753 break;
1753 } 1754 }
1754 } break; 1755 } break;
1755 default: 1756 default:
1756 break; 1757 break;
1757 } 1758 }
1758 } 1759 }
1759 if (!pPendingPageSet->GetNodeItem(XFA_NODEITEM_Parent)) { 1760 if (!pPendingPageSet->GetNodeItem(XFA_NODEITEM_Parent)) {
1760 CXFA_Node* pFormToplevelSubform = 1761 CXFA_Node* pFormToplevelSubform =
1761 pDocument->GetXFAObject(XFA_HASHCODE_Form) 1762 pDocument->GetXFAObject(XFA_HASHCODE_Form)
1762 ->AsNode() 1763 ->AsNode()
1763 ->GetFirstChildByClass(XFA_ELEMENT_Subform); 1764 ->GetFirstChildByClass(XFA_Element::Subform);
1764 pFormToplevelSubform->InsertChild(pPendingPageSet); 1765 pFormToplevelSubform->InsertChild(pPendingPageSet);
1765 } 1766 }
1766 pDocument->DataMerge_UpdateBindingRelations(pPendingPageSet); 1767 pDocument->DataMerge_UpdateBindingRelations(pPendingPageSet);
1767 pPendingPageSet->SetFlag(XFA_NodeFlag_Initialized, true); 1768 pPendingPageSet->SetFlag(XFA_NodeFlag_Initialized, true);
1768 } 1769 }
1769 CXFA_Node* pPageSet = GetRootLayoutItem()->m_pFormNode; 1770 CXFA_Node* pPageSet = GetRootLayoutItem()->m_pFormNode;
1770 while (pPageSet) { 1771 while (pPageSet) {
1771 CXFA_Node* pNextPageSet = 1772 CXFA_Node* pNextPageSet =
1772 pPageSet->GetNextSameClassSibling(XFA_ELEMENT_PageSet); 1773 pPageSet->GetNextSameClassSibling(XFA_Element::PageSet);
1773 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> 1774 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode>
1774 sIterator(pPageSet); 1775 sIterator(pPageSet);
1775 CXFA_Node* pNode = sIterator.GetCurrent(); 1776 CXFA_Node* pNode = sIterator.GetCurrent();
1776 while (pNode) { 1777 while (pNode) {
1777 if (pNode->IsUnusedNode()) { 1778 if (pNode->IsUnusedNode()) {
1778 if (pNode->IsContainerNode()) { 1779 if (pNode->IsContainerNode()) {
1779 XFA_ELEMENT eCurId = pNode->GetClassID(); 1780 XFA_Element eCurId = pNode->GetClassID();
1780 if (eCurId == XFA_ELEMENT_PageArea || eCurId == XFA_ELEMENT_PageSet) { 1781 if (eCurId == XFA_Element::PageArea ||
1782 eCurId == XFA_Element::PageSet) {
1781 CXFA_ContainerIterator iteChild(pNode); 1783 CXFA_ContainerIterator iteChild(pNode);
1782 CXFA_Node* pChildNode = iteChild.MoveToNext(); 1784 CXFA_Node* pChildNode = iteChild.MoveToNext();
1783 for (; pChildNode; pChildNode = iteChild.MoveToNext()) { 1785 for (; pChildNode; pChildNode = iteChild.MoveToNext()) {
1784 CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( 1786 CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>(
1785 pChildNode->GetUserData(XFA_LAYOUTITEMKEY)); 1787 pChildNode->GetUserData(XFA_LAYOUTITEMKEY));
1786 if (pLayoutItem) { 1788 if (pLayoutItem) {
1787 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); 1789 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem);
1788 delete pLayoutItem; 1790 delete pLayoutItem;
1789 } 1791 }
1790 } 1792 }
1791 } else if (eCurId != XFA_ELEMENT_ContentArea) { 1793 } else if (eCurId != XFA_Element::ContentArea) {
1792 CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>( 1794 CXFA_LayoutItem* pLayoutItem = static_cast<CXFA_LayoutItem*>(
1793 pNode->GetUserData(XFA_LAYOUTITEMKEY)); 1795 pNode->GetUserData(XFA_LAYOUTITEMKEY));
1794 if (pLayoutItem) { 1796 if (pLayoutItem) {
1795 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); 1797 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem);
1796 delete pLayoutItem; 1798 delete pLayoutItem;
1797 } 1799 }
1798 } 1800 }
1799 CXFA_Node* pNext = sIterator.SkipChildrenAndMoveToNext(); 1801 CXFA_Node* pNext = sIterator.SkipChildrenAndMoveToNext();
1800 pNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pNode); 1802 pNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pNode);
1801 pNode = pNext; 1803 pNode = pNext;
(...skipping 17 matching lines...) Expand all
1819 pRootLayoutItem = 1821 pRootLayoutItem =
1820 (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { 1822 (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) {
1821 CXFA_NodeIteratorTemplate< 1823 CXFA_NodeIteratorTemplate<
1822 CXFA_ContainerLayoutItem, 1824 CXFA_ContainerLayoutItem,
1823 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> 1825 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem>
1824 iterator(pRootLayoutItem); 1826 iterator(pRootLayoutItem);
1825 for (CXFA_ContainerLayoutItem* pContainerItem = iterator.GetCurrent(); 1827 for (CXFA_ContainerLayoutItem* pContainerItem = iterator.GetCurrent();
1826 pContainerItem; pContainerItem = iterator.MoveToNext()) { 1828 pContainerItem; pContainerItem = iterator.MoveToNext()) {
1827 CXFA_Node* pNode = pContainerItem->m_pFormNode; 1829 CXFA_Node* pNode = pContainerItem->m_pFormNode;
1828 switch (pNode->GetClassID()) { 1830 switch (pNode->GetClassID()) {
1829 case XFA_ELEMENT_PageArea: 1831 case XFA_Element::PageArea:
1830 m_pLayoutProcessor->GetRootRootItemLayoutProcessor() 1832 m_pLayoutProcessor->GetRootRootItemLayoutProcessor()
1831 ->DoLayoutPageArea(pContainerItem); 1833 ->DoLayoutPageArea(pContainerItem);
1832 break; 1834 break;
1833 default: 1835 default:
1834 break; 1836 break;
1835 } 1837 }
1836 } 1838 }
1837 } 1839 }
1838 } 1840 }
1839 1841
1840 void CXFA_LayoutPageMgr::SyncLayoutData() { 1842 void CXFA_LayoutPageMgr::SyncLayoutData() {
1841 MergePageSetContents(); 1843 MergePageSetContents();
1842 LayoutPageSetContents(); 1844 LayoutPageSetContents();
1843 CXFA_FFNotify* pNotify = 1845 CXFA_FFNotify* pNotify =
1844 m_pTemplatePageSetRoot->GetDocument()->GetParser()->GetNotify(); 1846 m_pTemplatePageSetRoot->GetDocument()->GetParser()->GetNotify();
1845 int32_t nPageIdx = -1; 1847 int32_t nPageIdx = -1;
1846 CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem(); 1848 CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem();
1847 for (; pRootLayoutItem; 1849 for (; pRootLayoutItem;
1848 pRootLayoutItem = 1850 pRootLayoutItem =
1849 (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { 1851 (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) {
1850 CXFA_NodeIteratorTemplate< 1852 CXFA_NodeIteratorTemplate<
1851 CXFA_ContainerLayoutItem, 1853 CXFA_ContainerLayoutItem,
1852 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> 1854 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem>
1853 iteratorParent(pRootLayoutItem); 1855 iteratorParent(pRootLayoutItem);
1854 for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent(); 1856 for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent();
1855 pContainerItem; pContainerItem = iteratorParent.MoveToNext()) { 1857 pContainerItem; pContainerItem = iteratorParent.MoveToNext()) {
1856 switch (pContainerItem->m_pFormNode->GetClassID()) { 1858 switch (pContainerItem->m_pFormNode->GetClassID()) {
1857 case XFA_ELEMENT_PageArea: { 1859 case XFA_Element::PageArea: {
1858 nPageIdx++; 1860 nPageIdx++;
1859 uint32_t dwRelevant = 1861 uint32_t dwRelevant =
1860 XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable; 1862 XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable;
1861 CXFA_NodeIteratorTemplate<CXFA_LayoutItem, 1863 CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
1862 CXFA_TraverseStrategy_LayoutItem> 1864 CXFA_TraverseStrategy_LayoutItem>
1863 iterator(pContainerItem); 1865 iterator(pContainerItem);
1864 CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent(); 1866 CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent();
1865 while (pChildLayoutItem) { 1867 while (pChildLayoutItem) {
1866 CXFA_ContentLayoutItem* pContentItem = 1868 CXFA_ContentLayoutItem* pContentItem =
1867 pChildLayoutItem->AsContentLayoutItem(); 1869 pChildLayoutItem->AsContentLayoutItem();
(...skipping 26 matching lines...) Expand all
1894 ClearRecordList(); 1896 ClearRecordList();
1895 } 1897 }
1896 void XFA_ReleaseLayoutItem_NoPageArea(CXFA_LayoutItem* pLayoutItem) { 1898 void XFA_ReleaseLayoutItem_NoPageArea(CXFA_LayoutItem* pLayoutItem) {
1897 CXFA_LayoutItem *pNext, *pNode = pLayoutItem->m_pFirstChild; 1899 CXFA_LayoutItem *pNext, *pNode = pLayoutItem->m_pFirstChild;
1898 while (pNode) { 1900 while (pNode) {
1899 pNext = pNode->m_pNextSibling; 1901 pNext = pNode->m_pNextSibling;
1900 pNode->m_pParent = NULL; 1902 pNode->m_pParent = NULL;
1901 XFA_ReleaseLayoutItem_NoPageArea(pNode); 1903 XFA_ReleaseLayoutItem_NoPageArea(pNode);
1902 pNode = pNext; 1904 pNode = pNext;
1903 } 1905 }
1904 if (pLayoutItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageArea) { 1906 if (pLayoutItem->m_pFormNode->GetClassID() != XFA_Element::PageArea) {
1905 delete pLayoutItem; 1907 delete pLayoutItem;
1906 } 1908 }
1907 } 1909 }
1908 void CXFA_LayoutPageMgr::PrepareLayout() { 1910 void CXFA_LayoutPageMgr::PrepareLayout() {
1909 m_pPageSetCurRoot = NULL; 1911 m_pPageSetCurRoot = NULL;
1910 m_ePageSetMode = XFA_ATTRIBUTEENUM_OrderedOccurrence; 1912 m_ePageSetMode = XFA_ATTRIBUTEENUM_OrderedOccurrence;
1911 m_nAvailPages = 0; 1913 m_nAvailPages = 0;
1912 ClearRecordList(); 1914 ClearRecordList();
1913 if (!m_pPageSetLayoutItemRoot) { 1915 if (!m_pPageSetLayoutItemRoot) {
1914 return; 1916 return;
1915 } 1917 }
1916 CXFA_ContainerLayoutItem* pRootLayoutItem = m_pPageSetLayoutItemRoot; 1918 CXFA_ContainerLayoutItem* pRootLayoutItem = m_pPageSetLayoutItemRoot;
1917 if (pRootLayoutItem && 1919 if (pRootLayoutItem &&
1918 pRootLayoutItem->m_pFormNode->GetPacketID() == XFA_XDPPACKET_Form) { 1920 pRootLayoutItem->m_pFormNode->GetPacketID() == XFA_XDPPACKET_Form) {
1919 CXFA_Node* pPageSetFormNode = pRootLayoutItem->m_pFormNode; 1921 CXFA_Node* pPageSetFormNode = pRootLayoutItem->m_pFormNode;
1920 pRootLayoutItem->m_pFormNode->GetDocument()->m_pPendingPageSet.RemoveAll(); 1922 pRootLayoutItem->m_pFormNode->GetDocument()->m_pPendingPageSet.RemoveAll();
1921 if (pPageSetFormNode->HasRemovedChildren()) { 1923 if (pPageSetFormNode->HasRemovedChildren()) {
1922 XFA_ReleaseLayoutItem(pRootLayoutItem); 1924 XFA_ReleaseLayoutItem(pRootLayoutItem);
1923 m_pPageSetLayoutItemRoot = NULL; 1925 m_pPageSetLayoutItemRoot = NULL;
1924 pRootLayoutItem = NULL; 1926 pRootLayoutItem = NULL;
1925 pPageSetFormNode = NULL; 1927 pPageSetFormNode = NULL;
1926 m_PageArray.RemoveAll(); 1928 m_PageArray.RemoveAll();
1927 } 1929 }
1928 while (pPageSetFormNode) { 1930 while (pPageSetFormNode) {
1929 CXFA_Node* pNextPageSet = 1931 CXFA_Node* pNextPageSet =
1930 pPageSetFormNode->GetNextSameClassSibling(XFA_ELEMENT_PageSet); 1932 pPageSetFormNode->GetNextSameClassSibling(XFA_Element::PageSet);
1931 pPageSetFormNode->GetNodeItem(XFA_NODEITEM_Parent) 1933 pPageSetFormNode->GetNodeItem(XFA_NODEITEM_Parent)
1932 ->RemoveChild(pPageSetFormNode, FALSE); 1934 ->RemoveChild(pPageSetFormNode, FALSE);
1933 pRootLayoutItem->m_pFormNode->GetDocument()->m_pPendingPageSet.Add( 1935 pRootLayoutItem->m_pFormNode->GetDocument()->m_pPendingPageSet.Add(
1934 pPageSetFormNode); 1936 pPageSetFormNode);
1935 pPageSetFormNode = pNextPageSet; 1937 pPageSetFormNode = pNextPageSet;
1936 } 1938 }
1937 } 1939 }
1938 pRootLayoutItem = m_pPageSetLayoutItemRoot; 1940 pRootLayoutItem = m_pPageSetLayoutItemRoot;
1939 CXFA_ContainerLayoutItem* pNextLayout = NULL; 1941 CXFA_ContainerLayoutItem* pNextLayout = NULL;
1940 for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) { 1942 for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) {
1941 pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling; 1943 pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling;
1942 SaveLayoutItem(pRootLayoutItem); 1944 SaveLayoutItem(pRootLayoutItem);
1943 delete pRootLayoutItem; 1945 delete pRootLayoutItem;
1944 } 1946 }
1945 m_pPageSetLayoutItemRoot = NULL; 1947 m_pPageSetLayoutItemRoot = NULL;
1946 } 1948 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_layout_pagemgr_new.h ('k') | xfa/fxfa/parser/xfa_locale.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698