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

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

Issue 2031873003: Get rid of NULLs in xfa/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@nullptr_fpdfsdk
Patch Set: 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_itemlayout.h ('k') | xfa/fxfa/parser/xfa_layout_pagemgr_new.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_itemlayout.h" 7 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 m_ePreProcessRs(XFA_ItemLayoutProcessorResult_Done), 73 m_ePreProcessRs(XFA_ItemLayoutProcessorResult_Done),
74 m_bHasAvailHeight(TRUE) { 74 m_bHasAvailHeight(TRUE) {
75 ASSERT(m_pFormNode && (m_pFormNode->IsContainerNode() || 75 ASSERT(m_pFormNode && (m_pFormNode->IsContainerNode() ||
76 m_pFormNode->GetClassID() == XFA_ELEMENT_Form)); 76 m_pFormNode->GetClassID() == XFA_ELEMENT_Form));
77 m_pOldLayoutItem = 77 m_pOldLayoutItem =
78 (CXFA_ContentLayoutItem*)m_pFormNode->GetUserData(XFA_LAYOUTITEMKEY); 78 (CXFA_ContentLayoutItem*)m_pFormNode->GetUserData(XFA_LAYOUTITEMKEY);
79 } 79 }
80 CXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::CreateContentLayoutItem( 80 CXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::CreateContentLayoutItem(
81 CXFA_Node* pFormNode) { 81 CXFA_Node* pFormNode) {
82 if (!pFormNode) { 82 if (!pFormNode) {
83 return NULL; 83 return nullptr;
84 } 84 }
85 CXFA_ContentLayoutItem* pLayoutItem = NULL; 85 CXFA_ContentLayoutItem* pLayoutItem = nullptr;
86 if (m_pOldLayoutItem) { 86 if (m_pOldLayoutItem) {
87 pLayoutItem = m_pOldLayoutItem; 87 pLayoutItem = m_pOldLayoutItem;
88 m_pOldLayoutItem = m_pOldLayoutItem->m_pNext; 88 m_pOldLayoutItem = m_pOldLayoutItem->m_pNext;
89 return pLayoutItem; 89 return pLayoutItem;
90 } 90 }
91 pLayoutItem = (CXFA_ContentLayoutItem*)pFormNode->GetDocument() 91 pLayoutItem = (CXFA_ContentLayoutItem*)pFormNode->GetDocument()
92 ->GetParser() 92 ->GetParser()
93 ->GetNotify() 93 ->GetNotify()
94 ->OnCreateLayoutItem(pFormNode); 94 ->OnCreateLayoutItem(pFormNode);
95 CXFA_ContentLayoutItem* pPrevLayoutItem = 95 CXFA_ContentLayoutItem* pPrevLayoutItem =
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 return eLayoutMode; 197 return eLayoutMode;
198 } 198 }
199 CXFA_Node* pParentNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent); 199 CXFA_Node* pParentNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent);
200 if (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_Form) { 200 if (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_Form) {
201 bRootForceTb = TRUE; 201 bRootForceTb = TRUE;
202 return XFA_ATTRIBUTEENUM_Tb; 202 return XFA_ATTRIBUTEENUM_Tb;
203 } 203 }
204 return XFA_ATTRIBUTEENUM_Position; 204 return XFA_ATTRIBUTEENUM_Position;
205 } 205 }
206 static FX_BOOL XFA_ExistContainerKeep(CXFA_Node* pCurNode, FX_BOOL bPreFind) { 206 static FX_BOOL XFA_ExistContainerKeep(CXFA_Node* pCurNode, FX_BOOL bPreFind) {
207 if (pCurNode == NULL || !XFA_ItemLayoutProcessor_IsTakingSpace(pCurNode)) { 207 if (!pCurNode || !XFA_ItemLayoutProcessor_IsTakingSpace(pCurNode))
208 return FALSE; 208 return FALSE;
209 } 209
210 XFA_NODEITEM eItemType = XFA_NODEITEM_PrevSibling; 210 XFA_NODEITEM eItemType = XFA_NODEITEM_PrevSibling;
211 if (!bPreFind) { 211 if (!bPreFind) {
212 eItemType = XFA_NODEITEM_NextSibling; 212 eItemType = XFA_NODEITEM_NextSibling;
213 } 213 }
214 CXFA_Node* pPreContainer = 214 CXFA_Node* pPreContainer =
215 pCurNode->GetNodeItem(eItemType, XFA_OBJECTTYPE_ContainerNode); 215 pCurNode->GetNodeItem(eItemType, XFA_OBJECTTYPE_ContainerNode);
216 if (pPreContainer == NULL) { 216 if (!pPreContainer)
217 return FALSE; 217 return FALSE;
218 } 218
219 CXFA_Node* pKeep = pCurNode->GetFirstChildByClass(XFA_ELEMENT_Keep); 219 CXFA_Node* pKeep = pCurNode->GetFirstChildByClass(XFA_ELEMENT_Keep);
220 if (pKeep) { 220 if (pKeep) {
221 XFA_ATTRIBUTEENUM ePrevious; 221 XFA_ATTRIBUTEENUM ePrevious;
222 XFA_ATTRIBUTE eKeepType = XFA_ATTRIBUTE_Previous; 222 XFA_ATTRIBUTE eKeepType = XFA_ATTRIBUTE_Previous;
223 if (!bPreFind) { 223 if (!bPreFind) {
224 eKeepType = XFA_ATTRIBUTE_Next; 224 eKeepType = XFA_ATTRIBUTE_Next;
225 } 225 }
226 if (pKeep->TryEnum(eKeepType, ePrevious, FALSE)) { 226 if (pKeep->TryEnum(eKeepType, ePrevious, FALSE)) {
227 if (ePrevious == XFA_ATTRIBUTEENUM_ContentArea || 227 if (ePrevious == XFA_ATTRIBUTEENUM_ContentArea ||
228 ePrevious == XFA_ATTRIBUTEENUM_PageArea) { 228 ePrevious == XFA_ATTRIBUTEENUM_PageArea) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 bCalculateMargin = FALSE; 275 bCalculateMargin = FALSE;
276 } 276 }
277 CXFA_Node* pMarginNode = 277 CXFA_Node* pMarginNode =
278 pLayoutItem->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 278 pLayoutItem->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin);
279 if (pMarginNode && bCalculateMargin) { 279 if (pMarginNode && bCalculateMargin) {
280 fCurTopMargin = 280 fCurTopMargin =
281 pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 281 pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt);
282 fCurBottomMargin = 282 fCurBottomMargin =
283 pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 283 pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt);
284 } 284 }
285 CXFA_ContentLayoutItem* pSecondLayoutItem = NULL; 285 CXFA_ContentLayoutItem* pSecondLayoutItem = nullptr;
286 if (m_pCurChildPreprocessor && 286 if (m_pCurChildPreprocessor &&
287 m_pCurChildPreprocessor->m_pFormNode == pLayoutItem->m_pFormNode) { 287 m_pCurChildPreprocessor->m_pFormNode == pLayoutItem->m_pFormNode) {
288 pSecondLayoutItem = m_pCurChildPreprocessor->CreateContentLayoutItem( 288 pSecondLayoutItem = m_pCurChildPreprocessor->CreateContentLayoutItem(
289 pLayoutItem->m_pFormNode); 289 pLayoutItem->m_pFormNode);
290 } else { 290 } else {
291 pSecondLayoutItem = CreateContentLayoutItem(pLayoutItem->m_pFormNode); 291 pSecondLayoutItem = CreateContentLayoutItem(pLayoutItem->m_pFormNode);
292 } 292 }
293 pSecondLayoutItem->m_sPos.x = pLayoutItem->m_sPos.x; 293 pSecondLayoutItem->m_sPos.x = pLayoutItem->m_sPos.x;
294 pSecondLayoutItem->m_sSize.x = pLayoutItem->m_sSize.x; 294 pSecondLayoutItem->m_sSize.x = pLayoutItem->m_sSize.x;
295 pSecondLayoutItem->m_sPos.y = 0; 295 pSecondLayoutItem->m_sPos.y = 0;
(...skipping 13 matching lines...) Expand all
309 pParentItem = (CXFA_ContentLayoutItem*)pParentItem->m_pParent; 309 pParentItem = (CXFA_ContentLayoutItem*)pParentItem->m_pParent;
310 } 310 }
311 } 311 }
312 } else { 312 } else {
313 pSecondLayoutItem->m_pParent = pLayoutItem->m_pParent; 313 pSecondLayoutItem->m_pParent = pLayoutItem->m_pParent;
314 pSecondLayoutItem->m_pNextSibling = pLayoutItem->m_pNextSibling; 314 pSecondLayoutItem->m_pNextSibling = pLayoutItem->m_pNextSibling;
315 pLayoutItem->m_pNextSibling = pSecondLayoutItem; 315 pLayoutItem->m_pNextSibling = pSecondLayoutItem;
316 } 316 }
317 CXFA_ContentLayoutItem* pChildren = 317 CXFA_ContentLayoutItem* pChildren =
318 (CXFA_ContentLayoutItem*)pLayoutItem->m_pFirstChild; 318 (CXFA_ContentLayoutItem*)pLayoutItem->m_pFirstChild;
319 pLayoutItem->m_pFirstChild = NULL; 319 pLayoutItem->m_pFirstChild = nullptr;
320 FX_FLOAT lHeightForKeep = 0; 320 FX_FLOAT lHeightForKeep = 0;
321 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> keepLayoutItems; 321 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> keepLayoutItems;
322 FX_FLOAT fAddMarginHeight = 0; 322 FX_FLOAT fAddMarginHeight = 0;
323 for (CXFA_ContentLayoutItem *pChildItem = pChildren, *pChildNext = NULL; 323 for (CXFA_ContentLayoutItem *pChildItem = pChildren, *pChildNext = nullptr;
324 pChildItem; pChildItem = pChildNext) { 324 pChildItem; pChildItem = pChildNext) {
325 pChildNext = (CXFA_ContentLayoutItem*)pChildItem->m_pNextSibling; 325 pChildNext = (CXFA_ContentLayoutItem*)pChildItem->m_pNextSibling;
326 pChildItem->m_pNextSibling = NULL; 326 pChildItem->m_pNextSibling = nullptr;
327 if (fSplitPos <= fCurTopMargin + pChildItem->m_sPos.y + fCurBottomMargin + 327 if (fSplitPos <= fCurTopMargin + pChildItem->m_sPos.y + fCurBottomMargin +
328 XFA_LAYOUT_FLOAT_PERCISION) { 328 XFA_LAYOUT_FLOAT_PERCISION) {
329 if (!XFA_ExistContainerKeep(pChildItem->m_pFormNode, TRUE)) { 329 if (!XFA_ExistContainerKeep(pChildItem->m_pFormNode, TRUE)) {
330 pChildItem->m_sPos.y -= fSplitPos - fCurBottomMargin; 330 pChildItem->m_sPos.y -= fSplitPos - fCurBottomMargin;
331 pChildItem->m_sPos.y += lHeightForKeep; 331 pChildItem->m_sPos.y += lHeightForKeep;
332 pChildItem->m_sPos.y += fAddMarginHeight; 332 pChildItem->m_sPos.y += fAddMarginHeight;
333 pSecondLayoutItem->AddChild(pChildItem); 333 pSecondLayoutItem->AddChild(pChildItem);
334 } else { 334 } else {
335 if (lHeightForKeep < XFA_LAYOUT_FLOAT_PERCISION) { 335 if (lHeightForKeep < XFA_LAYOUT_FLOAT_PERCISION) {
336 for (int32_t iIndex = 0; iIndex < keepLayoutItems.GetSize(); 336 for (int32_t iIndex = 0; iIndex < keepLayoutItems.GetSize();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 SplitLayoutItem( 371 SplitLayoutItem(
372 pChildItem, pSecondLayoutItem, 372 pChildItem, pSecondLayoutItem,
373 fSplitPos - fCurTopMargin - fCurBottomMargin - pChildItem->m_sPos.y); 373 fSplitPos - fCurTopMargin - fCurBottomMargin - pChildItem->m_sPos.y);
374 fAddMarginHeight = pSecondLayoutItem->m_sSize.y - fOldHeight; 374 fAddMarginHeight = pSecondLayoutItem->m_sSize.y - fOldHeight;
375 pLayoutItem->AddChild(pChildItem); 375 pLayoutItem->AddChild(pChildItem);
376 } 376 }
377 } 377 }
378 } 378 }
379 void CXFA_ItemLayoutProcessor::SplitLayoutItem(FX_FLOAT fSplitPos) { 379 void CXFA_ItemLayoutProcessor::SplitLayoutItem(FX_FLOAT fSplitPos) {
380 ASSERT(m_pLayoutItem); 380 ASSERT(m_pLayoutItem);
381 SplitLayoutItem(m_pLayoutItem, NULL, fSplitPos); 381 SplitLayoutItem(m_pLayoutItem, nullptr, fSplitPos);
382 } 382 }
383 383
384 CXFA_ContainerLayoutItem* CXFA_LayoutItem::GetPage() const { 384 CXFA_ContainerLayoutItem* CXFA_LayoutItem::GetPage() const {
385 for (CXFA_LayoutItem* pCurNode = const_cast<CXFA_LayoutItem*>(this); pCurNode; 385 for (CXFA_LayoutItem* pCurNode = const_cast<CXFA_LayoutItem*>(this); pCurNode;
386 pCurNode = pCurNode->m_pParent) { 386 pCurNode = pCurNode->m_pParent) {
387 if (pCurNode->m_pFormNode->GetClassID() == XFA_ELEMENT_PageArea) 387 if (pCurNode->m_pFormNode->GetClassID() == XFA_ELEMENT_PageArea)
388 return static_cast<CXFA_ContainerLayoutItem*>(pCurNode); 388 return static_cast<CXFA_ContainerLayoutItem*>(pCurNode);
389 } 389 }
390 return nullptr; 390 return nullptr;
391 } 391 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 iCount++; 506 iCount++;
507 } 507 }
508 return iCount; 508 return iCount;
509 } 509 }
510 510
511 void CXFA_LayoutItem::AddChild(CXFA_LayoutItem* pChildItem) { 511 void CXFA_LayoutItem::AddChild(CXFA_LayoutItem* pChildItem) {
512 if (pChildItem->m_pParent) { 512 if (pChildItem->m_pParent) {
513 pChildItem->m_pParent->RemoveChild(pChildItem); 513 pChildItem->m_pParent->RemoveChild(pChildItem);
514 } 514 }
515 pChildItem->m_pParent = this; 515 pChildItem->m_pParent = this;
516 if (m_pFirstChild == NULL) { 516 if (m_pFirstChild) {
517 m_pFirstChild = pChildItem;
518 } else {
519 CXFA_LayoutItem* pExistingChildItem = m_pFirstChild; 517 CXFA_LayoutItem* pExistingChildItem = m_pFirstChild;
520 while (pExistingChildItem->m_pNextSibling) { 518 while (pExistingChildItem->m_pNextSibling) {
521 pExistingChildItem = pExistingChildItem->m_pNextSibling; 519 pExistingChildItem = pExistingChildItem->m_pNextSibling;
522 } 520 }
523 pExistingChildItem->m_pNextSibling = pChildItem; 521 pExistingChildItem->m_pNextSibling = pChildItem;
522 } else {
523 m_pFirstChild = pChildItem;
524 } 524 }
525 } 525 }
526 void CXFA_LayoutItem::AddHeadChild(CXFA_LayoutItem* pChildItem) { 526 void CXFA_LayoutItem::AddHeadChild(CXFA_LayoutItem* pChildItem) {
527 if (pChildItem->m_pParent) { 527 if (pChildItem->m_pParent) {
528 pChildItem->m_pParent->RemoveChild(pChildItem); 528 pChildItem->m_pParent->RemoveChild(pChildItem);
529 } 529 }
530 pChildItem->m_pParent = this; 530 pChildItem->m_pParent = this;
531 if (m_pFirstChild == NULL) { 531 if (m_pFirstChild) {
532 m_pFirstChild = pChildItem;
533 } else {
534 CXFA_LayoutItem* pExistingChildItem = m_pFirstChild; 532 CXFA_LayoutItem* pExistingChildItem = m_pFirstChild;
535 m_pFirstChild = pChildItem; 533 m_pFirstChild = pChildItem;
536 m_pFirstChild->m_pNextSibling = pExistingChildItem; 534 m_pFirstChild->m_pNextSibling = pExistingChildItem;
535 } else {
536 m_pFirstChild = pChildItem;
537 } 537 }
538 } 538 }
539 void CXFA_LayoutItem::InsertChild(CXFA_LayoutItem* pBeforeItem, 539 void CXFA_LayoutItem::InsertChild(CXFA_LayoutItem* pBeforeItem,
540 CXFA_LayoutItem* pChildItem) { 540 CXFA_LayoutItem* pChildItem) {
541 if (pBeforeItem->m_pParent != this) { 541 if (pBeforeItem->m_pParent != this) {
542 return; 542 return;
543 } 543 }
544 if (pChildItem->m_pParent) { 544 if (pChildItem->m_pParent) {
545 pChildItem->m_pParent = NULL; 545 pChildItem->m_pParent = nullptr;
546 } 546 }
547 pChildItem->m_pParent = this; 547 pChildItem->m_pParent = this;
548 CXFA_LayoutItem* pExistingChildItem = pBeforeItem->m_pNextSibling; 548 CXFA_LayoutItem* pExistingChildItem = pBeforeItem->m_pNextSibling;
549 pBeforeItem->m_pNextSibling = pChildItem; 549 pBeforeItem->m_pNextSibling = pChildItem;
550 pChildItem->m_pNextSibling = pExistingChildItem; 550 pChildItem->m_pNextSibling = pExistingChildItem;
551 } 551 }
552 void CXFA_LayoutItem::RemoveChild(CXFA_LayoutItem* pChildItem) { 552 void CXFA_LayoutItem::RemoveChild(CXFA_LayoutItem* pChildItem) {
553 if (pChildItem->m_pParent != this) { 553 if (pChildItem->m_pParent != this) {
554 return; 554 return;
555 } 555 }
556 if (m_pFirstChild == pChildItem) { 556 if (m_pFirstChild == pChildItem) {
557 m_pFirstChild = pChildItem->m_pNextSibling; 557 m_pFirstChild = pChildItem->m_pNextSibling;
558 } else { 558 } else {
559 CXFA_LayoutItem* pExistingChildItem = m_pFirstChild; 559 CXFA_LayoutItem* pExistingChildItem = m_pFirstChild;
560 while (pExistingChildItem && 560 while (pExistingChildItem &&
561 pExistingChildItem->m_pNextSibling != pChildItem) { 561 pExistingChildItem->m_pNextSibling != pChildItem) {
562 pExistingChildItem = pExistingChildItem->m_pNextSibling; 562 pExistingChildItem = pExistingChildItem->m_pNextSibling;
563 } 563 }
564 if (pExistingChildItem) { 564 if (pExistingChildItem) {
565 pExistingChildItem->m_pNextSibling = pChildItem->m_pNextSibling; 565 pExistingChildItem->m_pNextSibling = pChildItem->m_pNextSibling;
566 } 566 }
567 } 567 }
568 pChildItem->m_pNextSibling = NULL; 568 pChildItem->m_pNextSibling = nullptr;
569 pChildItem->m_pParent = NULL; 569 pChildItem->m_pParent = nullptr;
570 } 570 }
571 CXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::ExtractLayoutItem() { 571 CXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::ExtractLayoutItem() {
572 CXFA_ContentLayoutItem* pLayoutItem = m_pLayoutItem; 572 CXFA_ContentLayoutItem* pLayoutItem = m_pLayoutItem;
573 if (pLayoutItem) { 573 if (pLayoutItem) {
574 m_pLayoutItem = 574 m_pLayoutItem =
575 static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pNextSibling); 575 static_cast<CXFA_ContentLayoutItem*>(pLayoutItem->m_pNextSibling);
576 pLayoutItem->m_pNextSibling = nullptr; 576 pLayoutItem->m_pNextSibling = nullptr;
577 } 577 }
578 if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done || 578 if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done ||
579 !ToContentLayoutItem(m_pOldLayoutItem)) 579 !ToContentLayoutItem(m_pOldLayoutItem))
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 CXFA_FFNotify* pNotify = 646 CXFA_FFNotify* pNotify =
647 pGenerateNode->GetDocument()->GetParser()->GetNotify(); 647 pGenerateNode->GetDocument()->GetParser()->GetNotify();
648 CXFA_LayoutProcessor* pDocLayout = 648 CXFA_LayoutProcessor* pDocLayout =
649 pGenerateNode->GetDocument()->GetDocLayout(); 649 pGenerateNode->GetDocument()->GetDocLayout();
650 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> sIterator( 650 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> sIterator(
651 pGenerateNode); 651 pGenerateNode);
652 for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode; 652 for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode;
653 pNode = sIterator.MoveToNext()) { 653 pNode = sIterator.MoveToNext()) {
654 CXFA_ContentLayoutItem* pCurLayoutItem = 654 CXFA_ContentLayoutItem* pCurLayoutItem =
655 (CXFA_ContentLayoutItem*)pNode->GetUserData(XFA_LAYOUTITEMKEY); 655 (CXFA_ContentLayoutItem*)pNode->GetUserData(XFA_LAYOUTITEMKEY);
656 CXFA_ContentLayoutItem* pNextLayoutItem = NULL; 656 CXFA_ContentLayoutItem* pNextLayoutItem = nullptr;
657 while (pCurLayoutItem) { 657 while (pCurLayoutItem) {
658 pNextLayoutItem = pCurLayoutItem->m_pNext; 658 pNextLayoutItem = pCurLayoutItem->m_pNext;
659 pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem); 659 pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem);
660 delete pCurLayoutItem; 660 delete pCurLayoutItem;
661 pCurLayoutItem = pNextLayoutItem; 661 pCurLayoutItem = pNextLayoutItem;
662 } 662 }
663 } 663 }
664 pGenerateNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pGenerateNode); 664 pGenerateNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pGenerateNode);
665 } 665 }
666 void CXFA_ItemLayoutProcessor::XFA_ItemLayoutProcessor_GotoNextContainerNode( 666 void CXFA_ItemLayoutProcessor::XFA_ItemLayoutProcessor_GotoNextContainerNode(
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 case XFA_ELEMENT_Break: 812 case XFA_ELEMENT_Break:
813 pCurActionNode = pBookendNode; 813 pCurActionNode = pBookendNode;
814 nCurStage = XFA_ItemLayoutProcessorStages_BookendTrailer; 814 nCurStage = XFA_ItemLayoutProcessorStages_BookendTrailer;
815 return; 815 return;
816 default: 816 default:
817 break; 817 break;
818 } 818 }
819 } 819 }
820 } 820 }
821 default: 821 default:
822 pCurActionNode = NULL; 822 pCurActionNode = nullptr;
823 nCurStage = XFA_ItemLayoutProcessorStages_Done; 823 nCurStage = XFA_ItemLayoutProcessorStages_Done;
824 } 824 }
825 } 825 }
826 FX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepNodesForCheckNext( 826 FX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepNodesForCheckNext(
827 CXFA_Node*& pCurActionNode, 827 CXFA_Node*& pCurActionNode,
828 XFA_ItemLayoutProcessorStages& nCurStage, 828 XFA_ItemLayoutProcessorStages& nCurStage,
829 CXFA_Node*& pNextContainer, 829 CXFA_Node*& pNextContainer,
830 FX_BOOL& bLastKeepNode) { 830 FX_BOOL& bLastKeepNode) {
831 const bool bCanSplit = pNextContainer->GetIntact() == XFA_ATTRIBUTEENUM_None; 831 const bool bCanSplit = pNextContainer->GetIntact() == XFA_ATTRIBUTEENUM_None;
832 FX_BOOL bNextKeep = FALSE; 832 FX_BOOL bNextKeep = FALSE;
833 if (XFA_ExistContainerKeep(pNextContainer, FALSE)) { 833 if (XFA_ExistContainerKeep(pNextContainer, FALSE)) {
834 bNextKeep = TRUE; 834 bNextKeep = TRUE;
835 } 835 }
836 if (bNextKeep && !bCanSplit) { 836 if (bNextKeep && !bCanSplit) {
837 if (!m_bIsProcessKeep && !m_bKeepBreakFinish) { 837 if (!m_bIsProcessKeep && !m_bKeepBreakFinish) {
838 m_pKeepHeadNode = pNextContainer; 838 m_pKeepHeadNode = pNextContainer;
839 m_bIsProcessKeep = TRUE; 839 m_bIsProcessKeep = TRUE;
840 } 840 }
841 } else { 841 } else {
842 if (m_bIsProcessKeep && m_pKeepHeadNode) { 842 if (m_bIsProcessKeep && m_pKeepHeadNode) {
843 m_pKeepTailNode = pNextContainer; 843 m_pKeepTailNode = pNextContainer;
844 if (!m_bKeepBreakFinish && 844 if (!m_bKeepBreakFinish &&
845 XFA_ItemLayoutProcessor_FindBreakNode( 845 XFA_ItemLayoutProcessor_FindBreakNode(
846 pNextContainer->GetNodeItem(XFA_NODEITEM_FirstChild), 846 pNextContainer->GetNodeItem(XFA_NODEITEM_FirstChild),
847 pCurActionNode, nCurStage, TRUE)) { 847 pCurActionNode, nCurStage, TRUE)) {
848 return TRUE; 848 return TRUE;
849 } else { 849 } else {
850 pNextContainer = m_pKeepHeadNode; 850 pNextContainer = m_pKeepHeadNode;
851 m_bKeepBreakFinish = TRUE; 851 m_bKeepBreakFinish = TRUE;
852 m_pKeepHeadNode = NULL; 852 m_pKeepHeadNode = nullptr;
853 m_pKeepTailNode = NULL; 853 m_pKeepTailNode = nullptr;
854 m_bIsProcessKeep = FALSE; 854 m_bIsProcessKeep = FALSE;
855 } 855 }
856 } else { 856 } else {
857 if (m_bKeepBreakFinish) { 857 if (m_bKeepBreakFinish) {
858 bLastKeepNode = TRUE; 858 bLastKeepNode = TRUE;
859 } 859 }
860 m_bKeepBreakFinish = FALSE; 860 m_bKeepBreakFinish = FALSE;
861 } 861 }
862 } 862 }
863 return FALSE; 863 return FALSE;
864 } 864 }
865 FX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepNodesForBreakBefore( 865 FX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepNodesForBreakBefore(
866 CXFA_Node*& pCurActionNode, 866 CXFA_Node*& pCurActionNode,
867 XFA_ItemLayoutProcessorStages& nCurStage, 867 XFA_ItemLayoutProcessorStages& nCurStage,
868 CXFA_Node* pContainerNode) { 868 CXFA_Node* pContainerNode) {
869 if (m_pKeepTailNode == pContainerNode) { 869 if (m_pKeepTailNode == pContainerNode) {
870 pCurActionNode = m_pKeepHeadNode; 870 pCurActionNode = m_pKeepHeadNode;
871 m_bKeepBreakFinish = TRUE; 871 m_bKeepBreakFinish = TRUE;
872 m_pKeepHeadNode = NULL; 872 m_pKeepHeadNode = nullptr;
873 m_pKeepTailNode = NULL; 873 m_pKeepTailNode = nullptr;
874 m_bIsProcessKeep = FALSE; 874 m_bIsProcessKeep = FALSE;
875 nCurStage = XFA_ItemLayoutProcessorStages_Container; 875 nCurStage = XFA_ItemLayoutProcessorStages_Container;
876 return TRUE; 876 return TRUE;
877 } 877 }
878 CXFA_Node* pBreakAfterNode = 878 CXFA_Node* pBreakAfterNode =
879 pContainerNode->GetNodeItem(XFA_NODEITEM_FirstChild); 879 pContainerNode->GetNodeItem(XFA_NODEITEM_FirstChild);
880 if (XFA_ItemLayoutProcessor_FindBreakNode(pBreakAfterNode, pCurActionNode, 880 if (XFA_ItemLayoutProcessor_FindBreakNode(pBreakAfterNode, pCurActionNode,
881 nCurStage, FALSE)) { 881 nCurStage, FALSE)) {
882 return TRUE; 882 return TRUE;
883 } 883 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 CXFA_Node* pNode, 1040 CXFA_Node* pNode,
1041 CXFA_Node* pParentNode) { 1041 CXFA_Node* pParentNode) {
1042 return FALSE; 1042 return FALSE;
1043 } 1043 }
1044 void CXFA_ItemLayoutProcessor::DoLayoutPageArea( 1044 void CXFA_ItemLayoutProcessor::DoLayoutPageArea(
1045 CXFA_ContainerLayoutItem* pPageAreaLayoutItem) { 1045 CXFA_ContainerLayoutItem* pPageAreaLayoutItem) {
1046 CXFA_Node* pFormNode = pPageAreaLayoutItem->m_pFormNode; 1046 CXFA_Node* pFormNode = pPageAreaLayoutItem->m_pFormNode;
1047 CXFA_Node* pCurChildNode = XFA_LAYOUT_INVALIDNODE; 1047 CXFA_Node* pCurChildNode = XFA_LAYOUT_INVALIDNODE;
1048 XFA_ItemLayoutProcessorStages nCurChildNodeStage = 1048 XFA_ItemLayoutProcessorStages nCurChildNodeStage =
1049 XFA_ItemLayoutProcessorStages_None; 1049 XFA_ItemLayoutProcessorStages_None;
1050 CXFA_LayoutItem* pBeforeItem = NULL; 1050 CXFA_LayoutItem* pBeforeItem = nullptr;
1051 for (XFA_ItemLayoutProcessor_GotoNextContainerNode( 1051 for (XFA_ItemLayoutProcessor_GotoNextContainerNode(
1052 pCurChildNode, nCurChildNodeStage, pFormNode, FALSE); 1052 pCurChildNode, nCurChildNodeStage, pFormNode, FALSE);
1053 pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode( 1053 pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode(
1054 pCurChildNode, nCurChildNodeStage, pFormNode, FALSE)) { 1054 pCurChildNode, nCurChildNodeStage, pFormNode, FALSE)) {
1055 if (nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) { 1055 if (nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) {
1056 continue; 1056 continue;
1057 } 1057 }
1058 if (pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) { 1058 if (pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) {
1059 continue; 1059 continue;
1060 } 1060 }
1061 CXFA_ItemLayoutProcessor* pProcessor = 1061 CXFA_ItemLayoutProcessor* pProcessor =
1062 new CXFA_ItemLayoutProcessor(pCurChildNode, NULL); 1062 new CXFA_ItemLayoutProcessor(pCurChildNode, nullptr);
1063 pProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX); 1063 pProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX);
1064 if (!pProcessor->HasLayoutItem()) { 1064 if (!pProcessor->HasLayoutItem()) {
1065 delete pProcessor; 1065 delete pProcessor;
1066 continue; 1066 continue;
1067 } 1067 }
1068 FX_FLOAT fWidth, fHeight; 1068 FX_FLOAT fWidth, fHeight;
1069 pProcessor->GetCurrentComponentSize(fWidth, fHeight); 1069 pProcessor->GetCurrentComponentSize(fWidth, fHeight);
1070 FX_FLOAT fAbsoluteX = 0, fAbsoluteY = 0; 1070 FX_FLOAT fAbsoluteX = 0, fAbsoluteY = 0;
1071 CalculatePositionedContainerPos(pCurChildNode, fWidth, fHeight, fAbsoluteX, 1071 CalculatePositionedContainerPos(pCurChildNode, fWidth, fHeight, fAbsoluteX,
1072 fAbsoluteY); 1072 fAbsoluteY);
1073 pProcessor->SetCurrentComponentPos(fAbsoluteX, fAbsoluteY); 1073 pProcessor->SetCurrentComponentPos(fAbsoluteX, fAbsoluteY);
1074 CXFA_LayoutItem* pProcessItem = pProcessor->ExtractLayoutItem(); 1074 CXFA_LayoutItem* pProcessItem = pProcessor->ExtractLayoutItem();
1075 if (pBeforeItem == NULL) { 1075 if (pBeforeItem)
1076 pPageAreaLayoutItem->InsertChild(pBeforeItem, pProcessItem);
1077 else
1076 pPageAreaLayoutItem->AddHeadChild(pProcessItem); 1078 pPageAreaLayoutItem->AddHeadChild(pProcessItem);
1077 } else {
1078 pPageAreaLayoutItem->InsertChild(pBeforeItem, pProcessItem);
1079 }
1080 pBeforeItem = pProcessItem; 1079 pBeforeItem = pProcessItem;
1081 delete pProcessor; 1080 delete pProcessor;
1082 } 1081 }
1083 pBeforeItem = NULL; 1082 pBeforeItem = nullptr;
1084 CXFA_LayoutItem* pLayoutItem = pPageAreaLayoutItem->m_pFirstChild; 1083 CXFA_LayoutItem* pLayoutItem = pPageAreaLayoutItem->m_pFirstChild;
1085 while (pLayoutItem) { 1084 while (pLayoutItem) {
1086 if (!pLayoutItem->IsContentLayoutItem() || 1085 if (!pLayoutItem->IsContentLayoutItem() ||
1087 pLayoutItem->m_pFormNode->GetClassID() != XFA_ELEMENT_Draw) { 1086 pLayoutItem->m_pFormNode->GetClassID() != XFA_ELEMENT_Draw) {
1088 pLayoutItem = pLayoutItem->m_pNextSibling; 1087 pLayoutItem = pLayoutItem->m_pNextSibling;
1089 continue; 1088 continue;
1090 } 1089 }
1091 if (pLayoutItem->m_pFormNode->GetClassID() == XFA_ELEMENT_Draw) { 1090 if (pLayoutItem->m_pFormNode->GetClassID() == XFA_ELEMENT_Draw) {
1092 CXFA_LayoutItem* pNextLayoutItem = pLayoutItem->m_pNextSibling; 1091 CXFA_LayoutItem* pNextLayoutItem = pLayoutItem->m_pNextSibling;
1093 pPageAreaLayoutItem->RemoveChild(pLayoutItem); 1092 pPageAreaLayoutItem->RemoveChild(pLayoutItem);
1094 if (pBeforeItem == NULL) { 1093 if (pBeforeItem)
1094 pPageAreaLayoutItem->InsertChild(pBeforeItem, pLayoutItem);
1095 else
1095 pPageAreaLayoutItem->AddHeadChild(pLayoutItem); 1096 pPageAreaLayoutItem->AddHeadChild(pLayoutItem);
1096 } else {
1097 pPageAreaLayoutItem->InsertChild(pBeforeItem, pLayoutItem);
1098 }
1099 pBeforeItem = pLayoutItem; 1097 pBeforeItem = pLayoutItem;
1100 pLayoutItem = pNextLayoutItem; 1098 pLayoutItem = pNextLayoutItem;
1101 } 1099 }
1102 } 1100 }
1103 } 1101 }
1104 void CXFA_ItemLayoutProcessor::DoLayoutPositionedContainer( 1102 void CXFA_ItemLayoutProcessor::DoLayoutPositionedContainer(
1105 CXFA_LayoutContext* pContext) { 1103 CXFA_LayoutContext* pContext) {
1106 if (m_pLayoutItem) 1104 if (m_pLayoutItem)
1107 return; 1105 return;
1108 1106
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 1370 XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize(
1373 pLayoutRow->m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth, 1371 pLayoutRow->m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth,
1374 fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight, 1372 fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight,
1375 fContainerHeight); 1373 fContainerHeight);
1376 pLayoutRow->m_sSize = CFX_SizeF(fContainerWidth, fContainerHeight); 1374 pLayoutRow->m_sSize = CFX_SizeF(fContainerWidth, fContainerHeight);
1377 } 1375 }
1378 void CXFA_ItemLayoutProcessor::DoLayoutTableContainer(CXFA_Node* pLayoutNode) { 1376 void CXFA_ItemLayoutProcessor::DoLayoutTableContainer(CXFA_Node* pLayoutNode) {
1379 if (m_pLayoutItem) 1377 if (m_pLayoutItem)
1380 return; 1378 return;
1381 1379
1382 if (pLayoutNode == NULL) { 1380 if (!pLayoutNode)
1383 pLayoutNode = m_pFormNode; 1381 pLayoutNode = m_pFormNode;
1384 } 1382
1385 ASSERT(m_pCurChildNode == XFA_LAYOUT_INVALIDNODE); 1383 ASSERT(m_pCurChildNode == XFA_LAYOUT_INVALIDNODE);
1386 m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 1384 m_pLayoutItem = CreateContentLayoutItem(m_pFormNode);
1387 FX_FLOAT fContainerWidth = 0, fContainerHeight = 0; 1385 FX_FLOAT fContainerWidth = 0, fContainerHeight = 0;
1388 FX_BOOL bContainerWidthAutoSize = TRUE, bContainerHeightAutoSize = TRUE; 1386 FX_BOOL bContainerWidthAutoSize = TRUE, bContainerHeightAutoSize = TRUE;
1389 XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize( 1387 XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize(
1390 m_pFormNode, fContainerWidth, fContainerHeight, bContainerWidthAutoSize, 1388 m_pFormNode, fContainerWidth, fContainerHeight, bContainerWidthAutoSize,
1391 bContainerHeightAutoSize); 1389 bContainerHeightAutoSize);
1392 FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0; 1390 FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0;
1393 CXFA_Node* pMarginNode = 1391 CXFA_Node* pMarginNode =
1394 m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 1392 m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin);
(...skipping 22 matching lines...) Expand all
1417 CXFA_Measurement measure(wsWidth.AsStringC()); 1415 CXFA_Measurement measure(wsWidth.AsStringC());
1418 m_rgSpecifiedColumnWidths.Add(measure.ToUnit(XFA_UNIT_Pt)); 1416 m_rgSpecifiedColumnWidths.Add(measure.ToUnit(XFA_UNIT_Pt));
1419 } 1417 }
1420 } 1418 }
1421 } 1419 }
1422 } 1420 }
1423 int32_t iSpecifiedColumnCount = m_rgSpecifiedColumnWidths.GetSize(); 1421 int32_t iSpecifiedColumnCount = m_rgSpecifiedColumnWidths.GetSize();
1424 CXFA_LayoutContext layoutContext; 1422 CXFA_LayoutContext layoutContext;
1425 layoutContext.m_prgSpecifiedColumnWidths = &m_rgSpecifiedColumnWidths; 1423 layoutContext.m_prgSpecifiedColumnWidths = &m_rgSpecifiedColumnWidths;
1426 CXFA_LayoutContext* pLayoutContext = 1424 CXFA_LayoutContext* pLayoutContext =
1427 iSpecifiedColumnCount > 0 ? &layoutContext : NULL; 1425 iSpecifiedColumnCount > 0 ? &layoutContext : nullptr;
1428 if (m_pCurChildNode == XFA_LAYOUT_INVALIDNODE) { 1426 if (m_pCurChildNode == XFA_LAYOUT_INVALIDNODE) {
1429 XFA_ItemLayoutProcessor_GotoNextContainerNode( 1427 XFA_ItemLayoutProcessor_GotoNextContainerNode(
1430 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE); 1428 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE);
1431 } 1429 }
1432 for (; m_pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode( 1430 for (; m_pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode(
1433 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE)) { 1431 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE)) {
1434 layoutContext.m_bCurColumnWidthAvaiable = FALSE; 1432 layoutContext.m_bCurColumnWidthAvaiable = FALSE;
1435 layoutContext.m_fCurColumnWidth = 0; 1433 layoutContext.m_fCurColumnWidth = 0;
1436 if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) { 1434 if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) {
1437 continue; 1435 continue;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 bMoreColumns = FALSE; 1482 bMoreColumns = FALSE;
1485 FX_BOOL bAutoCol = FALSE; 1483 FX_BOOL bAutoCol = FALSE;
1486 for (int32_t i = 0; i < iRowCount; i++) { 1484 for (int32_t i = 0; i < iRowCount; i++) {
1487 while (rgRowItems[i] && (rgRowItemsSpan[i] <= 0 || 1485 while (rgRowItems[i] && (rgRowItemsSpan[i] <= 0 ||
1488 !XFA_ItemLayoutProcessor_IsTakingSpace( 1486 !XFA_ItemLayoutProcessor_IsTakingSpace(
1489 rgRowItems[i]->m_pFormNode))) { 1487 rgRowItems[i]->m_pFormNode))) {
1490 CXFA_ContentLayoutItem* pNewCell = 1488 CXFA_ContentLayoutItem* pNewCell =
1491 (CXFA_ContentLayoutItem*)rgRowItems[i]->m_pNextSibling; 1489 (CXFA_ContentLayoutItem*)rgRowItems[i]->m_pNextSibling;
1492 if (rgRowItemsSpan[i] < 0 && XFA_ItemLayoutProcessor_IsTakingSpace( 1490 if (rgRowItemsSpan[i] < 0 && XFA_ItemLayoutProcessor_IsTakingSpace(
1493 rgRowItems[i]->m_pFormNode)) { 1491 rgRowItems[i]->m_pFormNode)) {
1494 pNewCell = NULL; 1492 pNewCell = nullptr;
1495 } 1493 }
1496 rgRowItems[i] = pNewCell; 1494 rgRowItems[i] = pNewCell;
1497 rgRowItemsSpan[i] = 1495 rgRowItemsSpan[i] =
1498 pNewCell 1496 pNewCell
1499 ? pNewCell->m_pFormNode->GetInteger(XFA_ATTRIBUTE_ColSpan) 1497 ? pNewCell->m_pFormNode->GetInteger(XFA_ATTRIBUTE_ColSpan)
1500 : 0; 1498 : 0;
1501 rgRowItemsWidth[i] = pNewCell ? pNewCell->m_sSize.x : 0; 1499 rgRowItemsWidth[i] = pNewCell ? pNewCell->m_sSize.x : 0;
1502 } 1500 }
1503 CXFA_ContentLayoutItem* pCell = rgRowItems[i]; 1501 CXFA_ContentLayoutItem* pCell = rgRowItems[i];
1504 if (!pCell) { 1502 if (!pCell) {
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
1808 CXFA_ItemLayoutProcessor* pParentProcessor, 1806 CXFA_ItemLayoutProcessor* pParentProcessor,
1809 CXFA_ItemLayoutProcessor* pChildProcessor, 1807 CXFA_ItemLayoutProcessor* pChildProcessor,
1810 XFA_ItemLayoutProcessorResult eRetValue, 1808 XFA_ItemLayoutProcessorResult eRetValue,
1811 CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& rgCurLineLayoutItem, 1809 CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& rgCurLineLayoutItem,
1812 FX_FLOAT& fContentCurRowAvailWidth, 1810 FX_FLOAT& fContentCurRowAvailWidth,
1813 FX_FLOAT& fContentCurRowHeight, 1811 FX_FLOAT& fContentCurRowHeight,
1814 FX_FLOAT& fContentCurRowY, 1812 FX_FLOAT& fContentCurRowY,
1815 FX_BOOL& bAddedItemInRow, 1813 FX_BOOL& bAddedItemInRow,
1816 FX_BOOL& bForceEndPage, 1814 FX_BOOL& bForceEndPage,
1817 XFA_ItemLayoutProcessorResult& result) { 1815 XFA_ItemLayoutProcessorResult& result) {
1818 if (pParentProcessor == NULL || pChildProcessor == NULL) { 1816 if (!pParentProcessor || !pChildProcessor)
1819 return FALSE; 1817 return FALSE;
1820 } 1818
1821 if (pParentProcessor->m_pCurChildNode->GetIntact() != 1819 if (pParentProcessor->m_pCurChildNode->GetIntact() !=
1822 XFA_ATTRIBUTEENUM_None || 1820 XFA_ATTRIBUTEENUM_None ||
1823 !pChildProcessor->m_bHasAvailHeight) { 1821 !pChildProcessor->m_bHasAvailHeight) {
1824 if (XFA_ExistContainerKeep(pParentProcessor->m_pCurChildNode, TRUE)) { 1822 if (XFA_ExistContainerKeep(pParentProcessor->m_pCurChildNode, TRUE)) {
1825 FX_FLOAT fChildWidth, fChildHeight; 1823 FX_FLOAT fChildWidth, fChildHeight;
1826 pChildProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 1824 pChildProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight);
1827 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> keepLayoutItems; 1825 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> keepLayoutItems;
1828 if (pParentProcessor->JudgePutNextPage(pParentProcessor->m_pLayoutItem, 1826 if (pParentProcessor->JudgePutNextPage(pParentProcessor->m_pLayoutItem,
1829 fChildHeight, keepLayoutItems)) { 1827 fChildHeight, keepLayoutItems)) {
1830 m_arrayKeepItems.RemoveAll(); 1828 m_arrayKeepItems.RemoveAll();
(...skipping 17 matching lines...) Expand all
1848 result = eRetValue; 1846 result = eRetValue;
1849 return TRUE; 1847 return TRUE;
1850 } 1848 }
1851 } 1849 }
1852 return FALSE; 1850 return FALSE;
1853 } 1851 }
1854 FX_BOOL CXFA_ItemLayoutProcessor::JudgePutNextPage( 1852 FX_BOOL CXFA_ItemLayoutProcessor::JudgePutNextPage(
1855 CXFA_ContentLayoutItem* pParentLayoutItem, 1853 CXFA_ContentLayoutItem* pParentLayoutItem,
1856 FX_FLOAT fChildHeight, 1854 FX_FLOAT fChildHeight,
1857 CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& pKeepItems) { 1855 CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& pKeepItems) {
1858 if (pParentLayoutItem == NULL) { 1856 if (!pParentLayoutItem)
1859 return FALSE; 1857 return FALSE;
1860 } 1858
1861 FX_FLOAT fItemsHeight = 0; 1859 FX_FLOAT fItemsHeight = 0;
1862 for (CXFA_ContentLayoutItem* pChildLayoutItem = 1860 for (CXFA_ContentLayoutItem* pChildLayoutItem =
1863 (CXFA_ContentLayoutItem*)pParentLayoutItem->m_pFirstChild; 1861 (CXFA_ContentLayoutItem*)pParentLayoutItem->m_pFirstChild;
1864 pChildLayoutItem; 1862 pChildLayoutItem;
1865 pChildLayoutItem = 1863 pChildLayoutItem =
1866 (CXFA_ContentLayoutItem*)pChildLayoutItem->m_pNextSibling) { 1864 (CXFA_ContentLayoutItem*)pChildLayoutItem->m_pNextSibling) {
1867 if (XFA_ExistContainerKeep(pChildLayoutItem->m_pFormNode, FALSE)) { 1865 if (XFA_ExistContainerKeep(pChildLayoutItem->m_pFormNode, FALSE)) {
1868 pKeepItems.Add(pChildLayoutItem); 1866 pKeepItems.Add(pChildLayoutItem);
1869 fItemsHeight += pChildLayoutItem->m_sSize.y; 1867 fItemsHeight += pChildLayoutItem->m_sSize.y;
1870 } else { 1868 } else {
(...skipping 12 matching lines...) Expand all
1883 return; 1881 return;
1884 } 1882 }
1885 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> sIterator( 1883 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> sIterator(
1886 pFormNode); 1884 pFormNode);
1887 for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; 1885 for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode;
1888 pNode = sIterator.MoveToNext()) { 1886 pNode = sIterator.MoveToNext()) {
1889 if (pNode->IsContainerNode()) { 1887 if (pNode->IsContainerNode()) {
1890 CXFA_Node* pBindNode = pNode->GetBindData(); 1888 CXFA_Node* pBindNode = pNode->GetBindData();
1891 if (pBindNode) { 1889 if (pBindNode) {
1892 pBindNode->RemoveBindItem(pNode); 1890 pBindNode->RemoveBindItem(pNode);
1893 pNode->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); 1891 pNode->SetObject(XFA_ATTRIBUTE_BindingNode, nullptr);
1894 } 1892 }
1895 } 1893 }
1896 pNode->SetFlag(XFA_NODEFLAG_UnusedNode, true); 1894 pNode->SetFlag(XFA_NODEFLAG_UnusedNode, true);
1897 } 1895 }
1898 } 1896 }
1899 void CXFA_ItemLayoutProcessor::ProcessUnUseOverFlow( 1897 void CXFA_ItemLayoutProcessor::ProcessUnUseOverFlow(
1900 CXFA_Node* pLeaderNode, 1898 CXFA_Node* pLeaderNode,
1901 CXFA_Node* pTrailerNode, 1899 CXFA_Node* pTrailerNode,
1902 CXFA_ContentLayoutItem* pTrailerItem, 1900 CXFA_ContentLayoutItem* pTrailerItem,
1903 CXFA_Node* pFormNode) { 1901 CXFA_Node* pFormNode) {
1904 ProcessUnUseBinds(pLeaderNode); 1902 ProcessUnUseBinds(pLeaderNode);
1905 ProcessUnUseBinds(pTrailerNode); 1903 ProcessUnUseBinds(pTrailerNode);
1906 if (pFormNode == NULL) { 1904 if (!pFormNode)
1907 return; 1905 return;
1908 } 1906
1909 if (pFormNode->GetClassID() == XFA_ELEMENT_Overflow || 1907 if (pFormNode->GetClassID() == XFA_ELEMENT_Overflow ||
1910 pFormNode->GetClassID() == XFA_ELEMENT_Break) { 1908 pFormNode->GetClassID() == XFA_ELEMENT_Break) {
1911 pFormNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent); 1909 pFormNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent);
1912 } 1910 }
1913 if (pLeaderNode && pFormNode) { 1911 if (pLeaderNode && pFormNode) {
1914 pFormNode->RemoveChild(pLeaderNode); 1912 pFormNode->RemoveChild(pLeaderNode);
1915 } 1913 }
1916 if (pTrailerNode && pFormNode) { 1914 if (pTrailerNode && pFormNode) {
1917 pFormNode->RemoveChild(pTrailerNode); 1915 pFormNode->RemoveChild(pTrailerNode);
1918 } 1916 }
(...skipping 12 matching lines...) Expand all
1931 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> (&rgCurLineLayoutItems)[3], 1929 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> (&rgCurLineLayoutItems)[3],
1932 FX_BOOL bUseBreakControl, 1930 FX_BOOL bUseBreakControl,
1933 FX_FLOAT fAvailHeight, 1931 FX_FLOAT fAvailHeight,
1934 FX_FLOAT fRealHeight, 1932 FX_FLOAT fRealHeight,
1935 FX_FLOAT& fContentCurRowY, 1933 FX_FLOAT& fContentCurRowY,
1936 FX_FLOAT& fContentWidthLimit, 1934 FX_FLOAT& fContentWidthLimit,
1937 FX_FLOAT& fContentCurRowAvailWidth, 1935 FX_FLOAT& fContentCurRowAvailWidth,
1938 FX_FLOAT& fContentCurRowHeight, 1936 FX_FLOAT& fContentCurRowHeight,
1939 FX_BOOL& bAddedItemInRow, 1937 FX_BOOL& bAddedItemInRow,
1940 FX_BOOL& bForceEndPage, 1938 FX_BOOL& bForceEndPage,
1941 CXFA_LayoutContext* pLayoutContext = NULL, 1939 CXFA_LayoutContext* pLayoutContext = nullptr,
1942 FX_BOOL bNewRow = FALSE) { 1940 FX_BOOL bNewRow = FALSE) {
1943 FX_BOOL bTakeSpace = 1941 FX_BOOL bTakeSpace =
1944 XFA_ItemLayoutProcessor_IsTakingSpace(pProcessor->m_pFormNode); 1942 XFA_ItemLayoutProcessor_IsTakingSpace(pProcessor->m_pFormNode);
1945 uint8_t uHAlign = XFA_ItemLayoutProcessor_HAlignEnumToInt( 1943 uint8_t uHAlign = XFA_ItemLayoutProcessor_HAlignEnumToInt(
1946 pThis->m_pCurChildNode->GetEnum(XFA_ATTRIBUTE_HAlign)); 1944 pThis->m_pCurChildNode->GetEnum(XFA_ATTRIBUTE_HAlign));
1947 if (bContainerWidthAutoSize) { 1945 if (bContainerWidthAutoSize) {
1948 uHAlign = 0; 1946 uHAlign = 0;
1949 } 1947 }
1950 if ((eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb && uHAlign < uCurHAlignState) || 1948 if ((eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb && uHAlign < uCurHAlignState) ||
1951 (eFlowStrategy == XFA_ATTRIBUTEENUM_Rl_tb && uHAlign > uCurHAlignState)) { 1949 (eFlowStrategy == XFA_ATTRIBUTEENUM_Rl_tb && uHAlign > uCurHAlignState)) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1998 FX_FLOAT fChildWidth, fChildHeight; 1996 FX_FLOAT fChildWidth, fChildHeight;
1999 pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 1997 pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight);
2000 if (bUseRealHeight && fRealHeight < XFA_LAYOUT_FLOAT_PERCISION) { 1998 if (bUseRealHeight && fRealHeight < XFA_LAYOUT_FLOAT_PERCISION) {
2001 fRealHeight = XFA_LAYOUT_FLOAT_MAX; 1999 fRealHeight = XFA_LAYOUT_FLOAT_MAX;
2002 fAvailHeight = XFA_LAYOUT_FLOAT_MAX; 2000 fAvailHeight = XFA_LAYOUT_FLOAT_MAX;
2003 } 2001 }
2004 if (!bTakeSpace || 2002 if (!bTakeSpace ||
2005 (fChildWidth <= fContentCurRowAvailWidth + XFA_LAYOUT_FLOAT_PERCISION) || 2003 (fChildWidth <= fContentCurRowAvailWidth + XFA_LAYOUT_FLOAT_PERCISION) ||
2006 (fContentWidthLimit - fContentCurRowAvailWidth <= 2004 (fContentWidthLimit - fContentCurRowAvailWidth <=
2007 XFA_LAYOUT_FLOAT_PERCISION)) { 2005 XFA_LAYOUT_FLOAT_PERCISION)) {
2008 CXFA_Node *pOverflowLeaderNode = NULL, *pOverflowTrailerNode = NULL, 2006 CXFA_Node *pOverflowLeaderNode = nullptr, *pOverflowTrailerNode = nullptr,
2009 *pFormNode = NULL; 2007 *pFormNode = nullptr;
2010 CXFA_ContentLayoutItem* pTrailerLayoutItem = NULL; 2008 CXFA_ContentLayoutItem* pTrailerLayoutItem = nullptr;
2011 FX_BOOL bIsAddTrailerHeight = FALSE; 2009 FX_BOOL bIsAddTrailerHeight = FALSE;
2012 if (pThis->m_pPageMgr && 2010 if (pThis->m_pPageMgr &&
2013 pProcessor->m_pFormNode->GetIntact() == XFA_ATTRIBUTEENUM_None) { 2011 pProcessor->m_pFormNode->GetIntact() == XFA_ATTRIBUTEENUM_None) {
2014 pFormNode = pThis->m_pPageMgr->QueryOverflow(pProcessor->m_pFormNode); 2012 pFormNode = pThis->m_pPageMgr->QueryOverflow(pProcessor->m_pFormNode);
2015 if (pFormNode == NULL && pLayoutContext && 2013 if (!pFormNode && pLayoutContext &&
2016 pLayoutContext->m_pOverflowProcessor) { 2014 pLayoutContext->m_pOverflowProcessor) {
2017 pFormNode = pLayoutContext->m_pOverflowNode; 2015 pFormNode = pLayoutContext->m_pOverflowNode;
2018 bUseInherited = TRUE; 2016 bUseInherited = TRUE;
2019 } 2017 }
2020 if (pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode, 2018 if (pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode,
2021 pOverflowTrailerNode, FALSE, 2019 pOverflowTrailerNode, FALSE,
2022 FALSE)) { 2020 FALSE)) {
2023 if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowTrailerNode)) { 2021 if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowTrailerNode)) {
2024 if (pOverflowTrailerNode) { 2022 if (pOverflowTrailerNode) {
2025 CXFA_ItemLayoutProcessor* pOverflowLeaderProcessor = 2023 CXFA_ItemLayoutProcessor* pOverflowLeaderProcessor =
2026 new CXFA_ItemLayoutProcessor(pOverflowTrailerNode, NULL); 2024 new CXFA_ItemLayoutProcessor(pOverflowTrailerNode, nullptr);
2027 pOverflowLeaderProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX); 2025 pOverflowLeaderProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX);
2028 pTrailerLayoutItem = 2026 pTrailerLayoutItem =
2029 pOverflowLeaderProcessor->HasLayoutItem() 2027 pOverflowLeaderProcessor->HasLayoutItem()
2030 ? pOverflowLeaderProcessor->ExtractLayoutItem() 2028 ? pOverflowLeaderProcessor->ExtractLayoutItem()
2031 : NULL; 2029 : nullptr;
2032 delete pOverflowLeaderProcessor; 2030 delete pOverflowLeaderProcessor;
2033 } 2031 }
2034 if (bUseInherited) { 2032 if (bUseInherited) {
2035 bIsAddTrailerHeight = 2033 bIsAddTrailerHeight =
2036 pThis->IsAddNewRowForTrailer(pTrailerLayoutItem); 2034 pThis->IsAddNewRowForTrailer(pTrailerLayoutItem);
2037 } else { 2035 } else {
2038 bIsAddTrailerHeight = 2036 bIsAddTrailerHeight =
2039 pProcessor->IsAddNewRowForTrailer(pTrailerLayoutItem); 2037 pProcessor->IsAddNewRowForTrailer(pTrailerLayoutItem);
2040 } 2038 }
2041 if (bIsAddTrailerHeight) { 2039 if (bIsAddTrailerHeight) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem()); 2137 rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem());
2140 bAddedItemInRow = TRUE; 2138 bAddedItemInRow = TRUE;
2141 if (bTakeSpace) { 2139 if (bTakeSpace) {
2142 fContentCurRowAvailWidth -= fChildWidth; 2140 fContentCurRowAvailWidth -= fChildWidth;
2143 if (fContentCurRowHeight < fChildHeight) { 2141 if (fContentCurRowHeight < fChildHeight) {
2144 fContentCurRowHeight = fChildHeight; 2142 fContentCurRowHeight = fChildHeight;
2145 } 2143 }
2146 } 2144 }
2147 return XFA_ItemLayoutProcessorResult_PageFullBreak; 2145 return XFA_ItemLayoutProcessorResult_PageFullBreak;
2148 } 2146 }
2149 CXFA_Node *pTempLeaderNode = NULL, *pTempTrailerNode = NULL; 2147 CXFA_Node *pTempLeaderNode = nullptr, *pTempTrailerNode = nullptr;
2150 if (pThis->m_pPageMgr && !pProcessor->m_bUseInheriated && 2148 if (pThis->m_pPageMgr && !pProcessor->m_bUseInheriated &&
2151 eRetValue != XFA_ItemLayoutProcessorResult_PageFullBreak) { 2149 eRetValue != XFA_ItemLayoutProcessorResult_PageFullBreak) {
2152 pThis->m_pPageMgr->ProcessOverflow(pFormNode, pTempLeaderNode, 2150 pThis->m_pPageMgr->ProcessOverflow(pFormNode, pTempLeaderNode,
2153 pTempTrailerNode, FALSE, TRUE); 2151 pTempTrailerNode, FALSE, TRUE);
2154 } 2152 }
2155 if (pTrailerLayoutItem && bIsAddTrailerHeight) { 2153 if (pTrailerLayoutItem && bIsAddTrailerHeight) {
2156 XFA_ItemLayoutProcessor_AddTrailerBeforeSplit( 2154 XFA_ItemLayoutProcessor_AddTrailerBeforeSplit(
2157 pProcessor, fSplitPos, pTrailerLayoutItem, bUseInherited); 2155 pProcessor, fSplitPos, pTrailerLayoutItem, bUseInherited);
2158 } else { 2156 } else {
2159 pProcessor->SplitLayoutItem(fSplitPos); 2157 pProcessor->SplitLayoutItem(fSplitPos);
2160 } 2158 }
2161 if (bUseInherited) { 2159 if (bUseInherited) {
2162 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2160 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode,
2163 pOverflowTrailerNode, 2161 pOverflowTrailerNode,
2164 pTrailerLayoutItem, pFormNode); 2162 pTrailerLayoutItem, pFormNode);
2165 pThis->m_bUseInheriated = TRUE; 2163 pThis->m_bUseInheriated = TRUE;
2166 } else { 2164 } else {
2167 if (pProcessor->m_pLayoutItem->m_pFirstChild && 2165 if (pProcessor->m_pLayoutItem->m_pFirstChild &&
2168 pProcessor->m_pLayoutItem->m_pFirstChild->m_pNextSibling == 2166 pProcessor->m_pLayoutItem->m_pFirstChild->m_pNextSibling ==
2169 NULL && 2167 nullptr &&
2170 pProcessor->m_pLayoutItem->m_pFirstChild->m_pFormNode->HasFlag( 2168 pProcessor->m_pLayoutItem->m_pFirstChild->m_pFormNode->HasFlag(
2171 XFA_NODEFLAG_LayoutGeneratedNode)) { 2169 XFA_NODEFLAG_LayoutGeneratedNode)) {
2172 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2170 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode,
2173 pOverflowTrailerNode, 2171 pOverflowTrailerNode,
2174 pTrailerLayoutItem, pFormNode); 2172 pTrailerLayoutItem, pFormNode);
2175 } else { 2173 } else {
2176 if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) { 2174 if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) {
2177 XFA_ItemLayoutProcessor_AddPendingNode( 2175 XFA_ItemLayoutProcessor_AddPendingNode(
2178 pProcessor, pOverflowLeaderNode, FALSE); 2176 pProcessor, pOverflowLeaderNode, FALSE);
2179 } 2177 }
2180 } 2178 }
2181 } 2179 }
2182 if (pProcessor->m_pLayoutItem->m_pNextSibling) { 2180 if (pProcessor->m_pLayoutItem->m_pNextSibling) {
2183 pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 2181 pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight);
2184 rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem()); 2182 rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem());
2185 bAddedItemInRow = TRUE; 2183 bAddedItemInRow = TRUE;
2186 if (bTakeSpace) { 2184 if (bTakeSpace) {
2187 fContentCurRowAvailWidth -= fChildWidth; 2185 fContentCurRowAvailWidth -= fChildWidth;
2188 if (fContentCurRowHeight < fChildHeight) { 2186 if (fContentCurRowHeight < fChildHeight) {
2189 fContentCurRowHeight = fChildHeight; 2187 fContentCurRowHeight = fChildHeight;
2190 } 2188 }
2191 } 2189 }
2192 } 2190 }
2193 return XFA_ItemLayoutProcessorResult_PageFullBreak; 2191 return XFA_ItemLayoutProcessorResult_PageFullBreak;
2194 } else if (fContentCurRowY <= XFA_LAYOUT_FLOAT_PERCISION) { 2192 } else if (fContentCurRowY <= XFA_LAYOUT_FLOAT_PERCISION) {
2195 pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 2193 pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight);
2196 if (pProcessor->m_pPageMgr->GetNextAvailContentHeight(fChildHeight)) { 2194 if (pProcessor->m_pPageMgr->GetNextAvailContentHeight(fChildHeight)) {
2197 CXFA_Node *pTempLeaderNode = NULL, *pTempTrailerNode = NULL; 2195 CXFA_Node *pTempLeaderNode = nullptr, *pTempTrailerNode = nullptr;
2198 if (pThis->m_pPageMgr) { 2196 if (pThis->m_pPageMgr) {
2199 if (pFormNode == NULL && pLayoutContext) { 2197 if (!pFormNode && pLayoutContext) {
2200 pFormNode = pLayoutContext->m_pOverflowProcessor->m_pFormNode; 2198 pFormNode = pLayoutContext->m_pOverflowProcessor->m_pFormNode;
2201 } 2199 }
2202 pThis->m_pPageMgr->ProcessOverflow(pFormNode, pTempLeaderNode, 2200 pThis->m_pPageMgr->ProcessOverflow(pFormNode, pTempLeaderNode,
2203 pTempTrailerNode, FALSE, TRUE); 2201 pTempTrailerNode, FALSE, TRUE);
2204 } 2202 }
2205 if (bUseInherited) { 2203 if (bUseInherited) {
2206 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2204 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode,
2207 pOverflowTrailerNode, 2205 pOverflowTrailerNode,
2208 pTrailerLayoutItem, pFormNode); 2206 pTrailerLayoutItem, pFormNode);
2209 pThis->m_bUseInheriated = TRUE; 2207 pThis->m_bUseInheriated = TRUE;
(...skipping 25 matching lines...) Expand all
2235 if (pTrailerLayoutItem) { 2233 if (pTrailerLayoutItem) {
2236 XFA_ItemLayoutProcessor_AddTrailerBeforeSplit(pProcessor, fSplitPos, 2234 XFA_ItemLayoutProcessor_AddTrailerBeforeSplit(pProcessor, fSplitPos,
2237 pTrailerLayoutItem); 2235 pTrailerLayoutItem);
2238 } 2236 }
2239 if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) { 2237 if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) {
2240 XFA_ItemLayoutProcessor_AddPendingNode(pProcessor, 2238 XFA_ItemLayoutProcessor_AddPendingNode(pProcessor,
2241 pOverflowLeaderNode, FALSE); 2239 pOverflowLeaderNode, FALSE);
2242 } 2240 }
2243 } else { 2241 } else {
2244 if (eRetValue == XFA_ItemLayoutProcessorResult_Done) { 2242 if (eRetValue == XFA_ItemLayoutProcessorResult_Done) {
2245 if (pFormNode == NULL && pLayoutContext) { 2243 if (!pFormNode && pLayoutContext) {
2246 pFormNode = pLayoutContext->m_pOverflowProcessor->m_pFormNode; 2244 pFormNode = pLayoutContext->m_pOverflowProcessor->m_pFormNode;
2247 } 2245 }
2248 if (pThis->m_pPageMgr) { 2246 if (pThis->m_pPageMgr) {
2249 pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode, 2247 pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode,
2250 pOverflowTrailerNode, FALSE, 2248 pOverflowTrailerNode, FALSE,
2251 TRUE); 2249 TRUE);
2252 } 2250 }
2253 if (bUseInherited) { 2251 if (bUseInherited) {
2254 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2252 pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode,
2255 pOverflowTrailerNode, 2253 pOverflowTrailerNode,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2326 FX_FLOAT fContentWidthLimit = 2324 FX_FLOAT fContentWidthLimit =
2327 bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX 2325 bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX
2328 : fContainerWidth - fLeftInset - fRightInset; 2326 : fContainerWidth - fLeftInset - fRightInset;
2329 FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0; 2327 FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0;
2330 FX_FLOAT fAvailHeight = fHeightLimit - fTopInset - fBottomInset; 2328 FX_FLOAT fAvailHeight = fHeightLimit - fTopInset - fBottomInset;
2331 if (fAvailHeight < 0) { 2329 if (fAvailHeight < 0) {
2332 m_bHasAvailHeight = FALSE; 2330 m_bHasAvailHeight = FALSE;
2333 } 2331 }
2334 fRealHeight = fRealHeight - fTopInset - fBottomInset; 2332 fRealHeight = fRealHeight - fTopInset - fBottomInset;
2335 FX_FLOAT fContentCurRowY = 0; 2333 FX_FLOAT fContentCurRowY = 0;
2336 CXFA_ContentLayoutItem* pLayoutChild = NULL; 2334 CXFA_ContentLayoutItem* pLayoutChild = nullptr;
2337 if (m_pLayoutItem) { 2335 if (m_pLayoutItem) {
2338 if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done && 2336 if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done &&
2339 eFlowStrategy != XFA_ATTRIBUTEENUM_Tb) { 2337 eFlowStrategy != XFA_ATTRIBUTEENUM_Tb) {
2340 pLayoutChild = (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 2338 pLayoutChild = (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild;
2341 for (CXFA_ContentLayoutItem* pLayoutNext = pLayoutChild; pLayoutNext; 2339 for (CXFA_ContentLayoutItem* pLayoutNext = pLayoutChild; pLayoutNext;
2342 pLayoutNext = (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) { 2340 pLayoutNext = (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) {
2343 if (pLayoutNext->m_sPos.y != pLayoutChild->m_sPos.y) { 2341 if (pLayoutNext->m_sPos.y != pLayoutChild->m_sPos.y) {
2344 pLayoutChild = pLayoutNext; 2342 pLayoutChild = pLayoutNext;
2345 } 2343 }
2346 } 2344 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2388 while (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done) { 2386 while (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done) {
2389 FX_FLOAT fContentCurRowHeight = 0; 2387 FX_FLOAT fContentCurRowHeight = 0;
2390 FX_FLOAT fContentCurRowAvailWidth = fContentWidthLimit; 2388 FX_FLOAT fContentCurRowAvailWidth = fContentWidthLimit;
2391 m_fWidthLimite = fContentCurRowAvailWidth; 2389 m_fWidthLimite = fContentCurRowAvailWidth;
2392 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> rgCurLineLayoutItems[3]; 2390 CFX_ArrayTemplate<CXFA_ContentLayoutItem*> rgCurLineLayoutItems[3];
2393 uint8_t uCurHAlignState = 2391 uint8_t uCurHAlignState =
2394 (eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb ? 0 : 2); 2392 (eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb ? 0 : 2);
2395 if (pLayoutChild) { 2393 if (pLayoutChild) {
2396 for (CXFA_ContentLayoutItem* pLayoutNext = pLayoutChild; pLayoutNext; 2394 for (CXFA_ContentLayoutItem* pLayoutNext = pLayoutChild; pLayoutNext;
2397 pLayoutNext = (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) { 2395 pLayoutNext = (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) {
2398 if (pLayoutNext->m_pNextSibling == NULL && m_pCurChildPreprocessor && 2396 if (!pLayoutNext->m_pNextSibling && m_pCurChildPreprocessor &&
2399 m_pCurChildPreprocessor->m_pFormNode == pLayoutNext->m_pFormNode) { 2397 m_pCurChildPreprocessor->m_pFormNode == pLayoutNext->m_pFormNode) {
2400 pLayoutNext->m_pNext = m_pCurChildPreprocessor->m_pLayoutItem; 2398 pLayoutNext->m_pNext = m_pCurChildPreprocessor->m_pLayoutItem;
2401 m_pCurChildPreprocessor->m_pLayoutItem = pLayoutNext; 2399 m_pCurChildPreprocessor->m_pLayoutItem = pLayoutNext;
2402 break; 2400 break;
2403 } 2401 }
2404 uint8_t uHAlign = XFA_ItemLayoutProcessor_HAlignEnumToInt( 2402 uint8_t uHAlign = XFA_ItemLayoutProcessor_HAlignEnumToInt(
2405 pLayoutNext->m_pFormNode->GetEnum(XFA_ATTRIBUTE_HAlign)); 2403 pLayoutNext->m_pFormNode->GetEnum(XFA_ATTRIBUTE_HAlign));
2406 rgCurLineLayoutItems[uHAlign].Add(pLayoutNext); 2404 rgCurLineLayoutItems[uHAlign].Add(pLayoutNext);
2407 if (eFlowStrategy == XFA_ATTRIBUTEENUM_Lr_tb) { 2405 if (eFlowStrategy == XFA_ATTRIBUTEENUM_Lr_tb) {
2408 if (uHAlign > uCurHAlignState) { 2406 if (uHAlign > uCurHAlignState) {
2409 uCurHAlignState = uHAlign; 2407 uCurHAlignState = uHAlign;
2410 } 2408 }
2411 } else if (uHAlign < uCurHAlignState) { 2409 } else if (uHAlign < uCurHAlignState) {
2412 uCurHAlignState = uHAlign; 2410 uCurHAlignState = uHAlign;
2413 } 2411 }
2414 if (XFA_ItemLayoutProcessor_IsTakingSpace(pLayoutNext->m_pFormNode)) { 2412 if (XFA_ItemLayoutProcessor_IsTakingSpace(pLayoutNext->m_pFormNode)) {
2415 if (pLayoutNext->m_sSize.y > fContentCurRowHeight) { 2413 if (pLayoutNext->m_sSize.y > fContentCurRowHeight) {
2416 fContentCurRowHeight = pLayoutNext->m_sSize.y; 2414 fContentCurRowHeight = pLayoutNext->m_sSize.y;
2417 } 2415 }
2418 fContentCurRowAvailWidth -= pLayoutNext->m_sSize.x; 2416 fContentCurRowAvailWidth -= pLayoutNext->m_sSize.x;
2419 } 2417 }
2420 } 2418 }
2421 if ((CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild == 2419 if ((CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild ==
2422 pLayoutChild) { 2420 pLayoutChild) {
2423 m_pLayoutItem->m_pFirstChild = NULL; 2421 m_pLayoutItem->m_pFirstChild = nullptr;
2424 } else { 2422 } else {
2425 CXFA_ContentLayoutItem* pLayoutNext = 2423 CXFA_ContentLayoutItem* pLayoutNext =
2426 (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 2424 (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild;
2427 for (; pLayoutNext; 2425 for (; pLayoutNext;
2428 pLayoutNext = 2426 pLayoutNext =
2429 (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) { 2427 (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) {
2430 if ((CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling == 2428 if ((CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling ==
2431 pLayoutChild) { 2429 pLayoutChild) {
2432 pLayoutNext->m_pNextSibling = NULL; 2430 pLayoutNext->m_pNextSibling = nullptr;
2433 break; 2431 break;
2434 } 2432 }
2435 } 2433 }
2436 } 2434 }
2437 CXFA_ContentLayoutItem* pLayoutNextTemp = 2435 CXFA_ContentLayoutItem* pLayoutNextTemp =
2438 (CXFA_ContentLayoutItem*)pLayoutChild; 2436 (CXFA_ContentLayoutItem*)pLayoutChild;
2439 while (pLayoutNextTemp) { 2437 while (pLayoutNextTemp) {
2440 pLayoutNextTemp->m_pParent = NULL; 2438 pLayoutNextTemp->m_pParent = nullptr;
2441 CXFA_ContentLayoutItem* pSaveLayoutNext = 2439 CXFA_ContentLayoutItem* pSaveLayoutNext =
2442 (CXFA_ContentLayoutItem*)pLayoutNextTemp->m_pNextSibling; 2440 (CXFA_ContentLayoutItem*)pLayoutNextTemp->m_pNextSibling;
2443 pLayoutNextTemp->m_pNextSibling = NULL; 2441 pLayoutNextTemp->m_pNextSibling = nullptr;
2444 pLayoutNextTemp = pSaveLayoutNext; 2442 pLayoutNextTemp = pSaveLayoutNext;
2445 } 2443 }
2446 pLayoutChild = NULL; 2444 pLayoutChild = nullptr;
2447 } 2445 }
2448 while (m_pCurChildNode) { 2446 while (m_pCurChildNode) {
2449 CXFA_ItemLayoutProcessor* pProcessor = nullptr; 2447 CXFA_ItemLayoutProcessor* pProcessor = nullptr;
2450 FX_BOOL bAddedItemInRow = FALSE; 2448 FX_BOOL bAddedItemInRow = FALSE;
2451 fContentCurRowY += 2449 fContentCurRowY +=
2452 XFA_ItemLayoutProcessor_InsertPendingItems(this, m_pFormNode); 2450 XFA_ItemLayoutProcessor_InsertPendingItems(this, m_pFormNode);
2453 switch (m_nCurChildNodeStage) { 2451 switch (m_nCurChildNodeStage) {
2454 case XFA_ItemLayoutProcessorStages_Keep: 2452 case XFA_ItemLayoutProcessorStages_Keep:
2455 case XFA_ItemLayoutProcessorStages_None: 2453 case XFA_ItemLayoutProcessorStages_None:
2456 break; 2454 break;
2457 case XFA_ItemLayoutProcessorStages_BreakBefore: { 2455 case XFA_ItemLayoutProcessorStages_BreakBefore: {
2458 for (int32_t iIndex = 0; iIndex < m_arrayKeepItems.GetSize(); 2456 for (int32_t iIndex = 0; iIndex < m_arrayKeepItems.GetSize();
2459 iIndex++) { 2457 iIndex++) {
2460 CXFA_ContentLayoutItem* pItem = m_arrayKeepItems.GetAt(iIndex); 2458 CXFA_ContentLayoutItem* pItem = m_arrayKeepItems.GetAt(iIndex);
2461 m_pLayoutItem->RemoveChild(pItem); 2459 m_pLayoutItem->RemoveChild(pItem);
2462 fContentCalculatedHeight -= pItem->m_sSize.y; 2460 fContentCalculatedHeight -= pItem->m_sSize.y;
2463 } 2461 }
2464 CXFA_Node *pLeaderNode = NULL, *pTrailerNode = NULL; 2462 CXFA_Node *pLeaderNode = nullptr, *pTrailerNode = nullptr;
2465 FX_BOOL bCreatePage = FALSE; 2463 FX_BOOL bCreatePage = FALSE;
2466 if (bUseBreakControl && m_pPageMgr && 2464 if (bUseBreakControl && m_pPageMgr &&
2467 m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, TRUE, 2465 m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, TRUE,
2468 pLeaderNode, pTrailerNode, 2466 pLeaderNode, pTrailerNode,
2469 bCreatePage) && 2467 bCreatePage) &&
2470 m_pFormNode->GetClassID() != XFA_ELEMENT_Form && bCreatePage) { 2468 m_pFormNode->GetClassID() != XFA_ELEMENT_Form && bCreatePage) {
2471 if (JudgeLeaderOrTrailerForOccur(pLeaderNode)) { 2469 if (JudgeLeaderOrTrailerForOccur(pLeaderNode)) {
2472 XFA_ItemLayoutProcessor_AddPendingNode(this, pLeaderNode, TRUE); 2470 XFA_ItemLayoutProcessor_AddPendingNode(this, pLeaderNode, TRUE);
2473 } 2471 }
2474 if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) { 2472 if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) {
2475 if (m_pFormNode->GetNodeItem(XFA_NODEITEM_Parent)->GetClassID() == 2473 if (m_pFormNode->GetNodeItem(XFA_NODEITEM_Parent)->GetClassID() ==
2476 XFA_ELEMENT_Form && 2474 XFA_ELEMENT_Form &&
2477 m_pLayoutItem == NULL) { 2475 !m_pLayoutItem) {
2478 XFA_ItemLayoutProcessor_AddPendingNode(this, pTrailerNode, 2476 XFA_ItemLayoutProcessor_AddPendingNode(this, pTrailerNode,
2479 TRUE); 2477 TRUE);
2480 } else { 2478 } else {
2481 std::unique_ptr<CXFA_ItemLayoutProcessor> pTempProcessor( 2479 std::unique_ptr<CXFA_ItemLayoutProcessor> pTempProcessor(
2482 new CXFA_ItemLayoutProcessor(pTrailerNode, nullptr)); 2480 new CXFA_ItemLayoutProcessor(pTrailerNode, nullptr));
2483 XFA_ItemLayoutProcessor_InsertFlowedItem( 2481 XFA_ItemLayoutProcessor_InsertFlowedItem(
2484 this, pTempProcessor.get(), bContainerWidthAutoSize, 2482 this, pTempProcessor.get(), bContainerWidthAutoSize,
2485 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2483 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy,
2486 uCurHAlignState, rgCurLineLayoutItems, FALSE, 2484 uCurHAlignState, rgCurLineLayoutItems, FALSE,
2487 XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, fContentCurRowY, 2485 XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, fContentCurRowY,
2488 fContentWidthLimit, fContentCurRowAvailWidth, 2486 fContentWidthLimit, fContentCurRowAvailWidth,
2489 fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2487 fContentCurRowHeight, bAddedItemInRow, bForceEndPage,
2490 pContext); 2488 pContext);
2491 } 2489 }
2492 } 2490 }
2493 XFA_ItemLayoutProcessor_GotoNextContainerNode( 2491 XFA_ItemLayoutProcessor_GotoNextContainerNode(
2494 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE); 2492 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE);
2495 bForceEndPage = TRUE; 2493 bForceEndPage = TRUE;
2496 bIsManualBreak = TRUE; 2494 bIsManualBreak = TRUE;
2497 goto SuspendAndCreateNewRow; 2495 goto SuspendAndCreateNewRow;
2498 } 2496 }
2499 } break; 2497 } break;
2500 case XFA_ItemLayoutProcessorStages_BreakAfter: { 2498 case XFA_ItemLayoutProcessorStages_BreakAfter: {
2501 CXFA_Node *pLeaderNode = NULL, *pTrailerNode = NULL; 2499 CXFA_Node *pLeaderNode = nullptr, *pTrailerNode = nullptr;
2502 FX_BOOL bCreatePage = FALSE; 2500 FX_BOOL bCreatePage = FALSE;
2503 if (bUseBreakControl && m_pPageMgr && 2501 if (bUseBreakControl && m_pPageMgr &&
2504 m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, FALSE, 2502 m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, FALSE,
2505 pLeaderNode, pTrailerNode, 2503 pLeaderNode, pTrailerNode,
2506 bCreatePage) && 2504 bCreatePage) &&
2507 m_pFormNode->GetClassID() != XFA_ELEMENT_Form) { 2505 m_pFormNode->GetClassID() != XFA_ELEMENT_Form) {
2508 if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) { 2506 if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) {
2509 std::unique_ptr<CXFA_ItemLayoutProcessor> pTempProcessor( 2507 std::unique_ptr<CXFA_ItemLayoutProcessor> pTempProcessor(
2510 new CXFA_ItemLayoutProcessor(pTrailerNode, nullptr)); 2508 new CXFA_ItemLayoutProcessor(pTrailerNode, nullptr));
2511 XFA_ItemLayoutProcessor_InsertFlowedItem( 2509 XFA_ItemLayoutProcessor_InsertFlowedItem(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2547 bForceEndPage = TRUE; 2545 bForceEndPage = TRUE;
2548 bIsManualBreak = TRUE; 2546 bIsManualBreak = TRUE;
2549 if (m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_Done) { 2547 if (m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_Done) {
2550 bBreakDone = TRUE; 2548 bBreakDone = TRUE;
2551 } 2549 }
2552 } 2550 }
2553 goto SuspendAndCreateNewRow; 2551 goto SuspendAndCreateNewRow;
2554 } 2552 }
2555 } break; 2553 } break;
2556 case XFA_ItemLayoutProcessorStages_BookendLeader: { 2554 case XFA_ItemLayoutProcessorStages_BookendLeader: {
2557 CXFA_Node* pLeaderNode = NULL; 2555 CXFA_Node* pLeaderNode = nullptr;
2558 if (m_pCurChildPreprocessor) { 2556 if (m_pCurChildPreprocessor) {
2559 pProcessor = m_pCurChildPreprocessor; 2557 pProcessor = m_pCurChildPreprocessor;
2560 m_pCurChildPreprocessor = NULL; 2558 m_pCurChildPreprocessor = nullptr;
2561 } else if (m_pPageMgr && 2559 } else if (m_pPageMgr &&
2562 m_pPageMgr->ProcessBookendLeaderOrTrailer( 2560 m_pPageMgr->ProcessBookendLeaderOrTrailer(
2563 m_pCurChildNode, TRUE, pLeaderNode)) { 2561 m_pCurChildNode, TRUE, pLeaderNode)) {
2564 pProcessor = new CXFA_ItemLayoutProcessor(pLeaderNode, m_pPageMgr); 2562 pProcessor = new CXFA_ItemLayoutProcessor(pLeaderNode, m_pPageMgr);
2565 } 2563 }
2566 if (pProcessor) { 2564 if (pProcessor) {
2567 if (XFA_ItemLayoutProcessor_InsertFlowedItem( 2565 if (XFA_ItemLayoutProcessor_InsertFlowedItem(
2568 this, pProcessor, bContainerWidthAutoSize, 2566 this, pProcessor, bContainerWidthAutoSize,
2569 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2567 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy,
2570 uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl, 2568 uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl,
2571 fAvailHeight, fRealHeight, fContentCurRowY, 2569 fAvailHeight, fRealHeight, fContentCurRowY,
2572 fContentWidthLimit, fContentCurRowAvailWidth, 2570 fContentWidthLimit, fContentCurRowAvailWidth,
2573 fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2571 fContentCurRowHeight, bAddedItemInRow, bForceEndPage,
2574 pContext) != XFA_ItemLayoutProcessorResult_Done) { 2572 pContext) != XFA_ItemLayoutProcessorResult_Done) {
2575 goto SuspendAndCreateNewRow; 2573 goto SuspendAndCreateNewRow;
2576 } else { 2574 } else {
2577 delete pProcessor; 2575 delete pProcessor;
2578 pProcessor = NULL; 2576 pProcessor = nullptr;
2579 } 2577 }
2580 } 2578 }
2581 } break; 2579 } break;
2582 case XFA_ItemLayoutProcessorStages_BookendTrailer: { 2580 case XFA_ItemLayoutProcessorStages_BookendTrailer: {
2583 CXFA_Node* pTrailerNode = NULL; 2581 CXFA_Node* pTrailerNode = nullptr;
2584 if (m_pCurChildPreprocessor) { 2582 if (m_pCurChildPreprocessor) {
2585 pProcessor = m_pCurChildPreprocessor; 2583 pProcessor = m_pCurChildPreprocessor;
2586 m_pCurChildPreprocessor = NULL; 2584 m_pCurChildPreprocessor = nullptr;
2587 } else if (m_pPageMgr && 2585 } else if (m_pPageMgr &&
2588 m_pPageMgr->ProcessBookendLeaderOrTrailer( 2586 m_pPageMgr->ProcessBookendLeaderOrTrailer(
2589 m_pCurChildNode, FALSE, pTrailerNode)) { 2587 m_pCurChildNode, FALSE, pTrailerNode)) {
2590 pProcessor = new CXFA_ItemLayoutProcessor(pTrailerNode, m_pPageMgr); 2588 pProcessor = new CXFA_ItemLayoutProcessor(pTrailerNode, m_pPageMgr);
2591 } 2589 }
2592 if (pProcessor) { 2590 if (pProcessor) {
2593 if (XFA_ItemLayoutProcessor_InsertFlowedItem( 2591 if (XFA_ItemLayoutProcessor_InsertFlowedItem(
2594 this, pProcessor, bContainerWidthAutoSize, 2592 this, pProcessor, bContainerWidthAutoSize,
2595 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2593 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy,
2596 uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl, 2594 uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl,
2597 fAvailHeight, fRealHeight, fContentCurRowY, 2595 fAvailHeight, fRealHeight, fContentCurRowY,
2598 fContentWidthLimit, fContentCurRowAvailWidth, 2596 fContentWidthLimit, fContentCurRowAvailWidth,
2599 fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2597 fContentCurRowHeight, bAddedItemInRow, bForceEndPage,
2600 pContext) != XFA_ItemLayoutProcessorResult_Done) { 2598 pContext) != XFA_ItemLayoutProcessorResult_Done) {
2601 goto SuspendAndCreateNewRow; 2599 goto SuspendAndCreateNewRow;
2602 } else { 2600 } else {
2603 delete pProcessor; 2601 delete pProcessor;
2604 pProcessor = NULL; 2602 pProcessor = nullptr;
2605 } 2603 }
2606 } 2604 }
2607 } break; 2605 } break;
2608 case XFA_ItemLayoutProcessorStages_Container: 2606 case XFA_ItemLayoutProcessorStages_Container:
2609 ASSERT(m_pCurChildNode->IsContainerNode()); 2607 ASSERT(m_pCurChildNode->IsContainerNode());
2610 if (m_pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) { 2608 if (m_pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) {
2611 break; 2609 break;
2612 } 2610 }
2613 if (fContentCurRowY >= fHeightLimit + XFA_LAYOUT_FLOAT_PERCISION && 2611 if (fContentCurRowY >= fHeightLimit + XFA_LAYOUT_FLOAT_PERCISION &&
2614 XFA_ItemLayoutProcessor_IsTakingSpace(m_pCurChildNode)) { 2612 XFA_ItemLayoutProcessor_IsTakingSpace(m_pCurChildNode)) {
2615 bForceEndPage = TRUE; 2613 bForceEndPage = TRUE;
2616 goto SuspendAndCreateNewRow; 2614 goto SuspendAndCreateNewRow;
2617 } 2615 }
2618 if (m_pCurChildNode->IsContainerNode()) { 2616 if (m_pCurChildNode->IsContainerNode()) {
2619 FX_BOOL bNewRow = FALSE; 2617 FX_BOOL bNewRow = FALSE;
2620 if (m_pCurChildPreprocessor) { 2618 if (m_pCurChildPreprocessor) {
2621 pProcessor = m_pCurChildPreprocessor; 2619 pProcessor = m_pCurChildPreprocessor;
2622 m_pCurChildPreprocessor = NULL; 2620 m_pCurChildPreprocessor = nullptr;
2623 bNewRow = TRUE; 2621 bNewRow = TRUE;
2624 } else { 2622 } else {
2625 pProcessor = 2623 pProcessor =
2626 new CXFA_ItemLayoutProcessor(m_pCurChildNode, m_pPageMgr); 2624 new CXFA_ItemLayoutProcessor(m_pCurChildNode, m_pPageMgr);
2627 } 2625 }
2628 XFA_ItemLayoutProcessor_InsertPendingItems(pProcessor, 2626 XFA_ItemLayoutProcessor_InsertPendingItems(pProcessor,
2629 m_pCurChildNode); 2627 m_pCurChildNode);
2630 XFA_ItemLayoutProcessorResult rs = 2628 XFA_ItemLayoutProcessorResult rs =
2631 XFA_ItemLayoutProcessor_InsertFlowedItem( 2629 XFA_ItemLayoutProcessor_InsertFlowedItem(
2632 this, pProcessor, bContainerWidthAutoSize, 2630 this, pProcessor, bContainerWidthAutoSize,
2633 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2631 bContainerHeightAutoSize, fContainerHeight, eFlowStrategy,
2634 uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl, 2632 uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl,
2635 fAvailHeight, fRealHeight, fContentCurRowY, 2633 fAvailHeight, fRealHeight, fContentCurRowY,
2636 fContentWidthLimit, fContentCurRowAvailWidth, 2634 fContentWidthLimit, fContentCurRowAvailWidth,
2637 fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2635 fContentCurRowHeight, bAddedItemInRow, bForceEndPage,
2638 pContext, bNewRow); 2636 pContext, bNewRow);
2639 switch (rs) { 2637 switch (rs) {
2640 case XFA_ItemLayoutProcessorResult_ManualBreak: 2638 case XFA_ItemLayoutProcessorResult_ManualBreak:
2641 bIsManualBreak = TRUE; 2639 bIsManualBreak = TRUE;
2642 case XFA_ItemLayoutProcessorResult_PageFullBreak: 2640 case XFA_ItemLayoutProcessorResult_PageFullBreak:
2643 bForceEndPage = TRUE; 2641 bForceEndPage = TRUE;
2644 case XFA_ItemLayoutProcessorResult_RowFullBreak: 2642 case XFA_ItemLayoutProcessorResult_RowFullBreak:
2645 goto SuspendAndCreateNewRow; 2643 goto SuspendAndCreateNewRow;
2646 case XFA_ItemLayoutProcessorResult_Done: 2644 case XFA_ItemLayoutProcessorResult_Done:
2647 default: 2645 default:
2648 fContentCurRowY += XFA_ItemLayoutProcessor_InsertPendingItems( 2646 fContentCurRowY += XFA_ItemLayoutProcessor_InsertPendingItems(
2649 pProcessor, m_pCurChildNode); 2647 pProcessor, m_pCurChildNode);
2650 delete pProcessor; 2648 delete pProcessor;
2651 pProcessor = NULL; 2649 pProcessor = nullptr;
2652 } 2650 }
2653 } 2651 }
2654 break; 2652 break;
2655 case XFA_ItemLayoutProcessorStages_Done: 2653 case XFA_ItemLayoutProcessorStages_Done:
2656 break; 2654 break;
2657 default: 2655 default:
2658 break; 2656 break;
2659 } 2657 }
2660 XFA_ItemLayoutProcessor_GotoNextContainerNode( 2658 XFA_ItemLayoutProcessor_GotoNextContainerNode(
2661 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE); 2659 m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE);
(...skipping 23 matching lines...) Expand all
2685 m_PendingNodes.empty(); 2683 m_PendingNodes.empty();
2686 if (bBreakDone) { 2684 if (bBreakDone) {
2687 bRetValue = FALSE; 2685 bRetValue = FALSE;
2688 } 2686 }
2689 XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 2687 XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize(
2690 m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth, 2688 m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth,
2691 fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight, 2689 fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight,
2692 fContainerHeight); 2690 fContainerHeight);
2693 if (fContainerHeight >= XFA_LAYOUT_FLOAT_PERCISION || m_pLayoutItem || 2691 if (fContainerHeight >= XFA_LAYOUT_FLOAT_PERCISION || m_pLayoutItem ||
2694 bRetValue) { 2692 bRetValue) {
2695 if (m_pLayoutItem == NULL) { 2693 if (!m_pLayoutItem)
2696 m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 2694 m_pLayoutItem = CreateContentLayoutItem(m_pFormNode);
2697 }
2698 if (fContainerHeight < 0) { 2695 if (fContainerHeight < 0) {
2699 fContainerHeight = 0; 2696 fContainerHeight = 0;
2700 } 2697 }
2701 SetCurrentComponentSize(fContainerWidth, fContainerHeight); 2698 SetCurrentComponentSize(fContainerWidth, fContainerHeight);
2702 if (bForceEndPage) { 2699 if (bForceEndPage) {
2703 m_fUsedSize = 0; 2700 m_fUsedSize = 0;
2704 } else { 2701 } else {
2705 m_fUsedSize += m_pLayoutItem->m_sSize.y; 2702 m_fUsedSize += m_pLayoutItem->m_sSize.y;
2706 } 2703 }
2707 } 2704 }
(...skipping 29 matching lines...) Expand all
2737 } 2734 }
2738 if (!nTotalLength) { 2735 if (!nTotalLength) {
2739 if (bContainerHeightAutoSize) { 2736 if (bContainerHeightAutoSize) {
2740 FX_FLOAT fNewHeight = fContentCurRowY; 2737 FX_FLOAT fNewHeight = fContentCurRowY;
2741 if (fContentCalculatedHeight > fNewHeight) { 2738 if (fContentCalculatedHeight > fNewHeight) {
2742 fContentCalculatedHeight = fNewHeight; 2739 fContentCalculatedHeight = fNewHeight;
2743 } 2740 }
2744 } 2741 }
2745 return FALSE; 2742 return FALSE;
2746 } 2743 }
2747 if (m_pLayoutItem == NULL) { 2744 if (!m_pLayoutItem)
2748 m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 2745 m_pLayoutItem = CreateContentLayoutItem(m_pFormNode);
2749 } 2746
2750 if (eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb) { 2747 if (eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb) {
2751 FX_FLOAT fCurPos; 2748 FX_FLOAT fCurPos;
2752 fCurPos = 0; 2749 fCurPos = 0;
2753 for (int32_t c = nGroupLengths[0], j = 0; j < c; j++) { 2750 for (int32_t c = nGroupLengths[0], j = 0; j < c; j++) {
2754 if (bRootForceTb) { 2751 if (bRootForceTb) {
2755 FX_FLOAT fAbsoluteX, fAbsoluteY; 2752 FX_FLOAT fAbsoluteX, fAbsoluteY;
2756 CalculatePositionedContainerPos(rgCurLineLayoutItems[0][j]->m_pFormNode, 2753 CalculatePositionedContainerPos(rgCurLineLayoutItems[0][j]->m_pFormNode,
2757 rgCurLineLayoutItems[0][j]->m_sSize.x, 2754 rgCurLineLayoutItems[0][j]->m_sSize.x,
2758 rgCurLineLayoutItems[0][j]->m_sSize.y, 2755 rgCurLineLayoutItems[0][j]->m_sSize.y,
2759 fAbsoluteX, fAbsoluteY); 2756 fAbsoluteX, fAbsoluteY);
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
2984 if (iMax < 0) 2981 if (iMax < 0)
2985 return TRUE; 2982 return TRUE;
2986 2983
2987 int32_t iCount = m_PendingNodesCount[pTemplate]; 2984 int32_t iCount = m_PendingNodesCount[pTemplate];
2988 if (iCount >= iMax) 2985 if (iCount >= iMax)
2989 return FALSE; 2986 return FALSE;
2990 2987
2991 m_PendingNodesCount[pTemplate] = iCount + 1; 2988 m_PendingNodesCount[pTemplate] = iCount + 1;
2992 return TRUE; 2989 return TRUE;
2993 } 2990 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_layout_itemlayout.h ('k') | xfa/fxfa/parser/xfa_layout_pagemgr_new.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698