1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include <algorithm> 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/foxitlib.h" 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_utils.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_object.h" 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_document.h" 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_parser.h" 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_script.h" 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_docdata.h" 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_doclayout.h" 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_localemgr.h" 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_fm2jsapi.h" 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_document_layout_imp.h" 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_layout_itemlayout.h" 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_layout_pagemgr_new.h" 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_layout_appadapter.h" 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_ItemLayoutProcessor::CXFA_ItemLayoutProcessor(CXFA_Node* pNode, 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutPageMgr* pPageMgr) 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_bKeepBreakFinish(FALSE), 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bIsProcessKeep(FALSE), 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepHeadNode(nullptr), 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepTailNode(nullptr), 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode(pNode), 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem(nullptr), 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem(nullptr), 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#else 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pPageMgrCreateItem(nullptr), 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode(XFA_LAYOUT_INVALIDNODE), 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor(nullptr), 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nCurChildNodeStage(XFA_ItemLayoutProcessorStages_None), 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fUsedSize(0), 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pPageMgr(pPageMgr), 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bBreakPending(TRUE), 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth(0), 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowY(0), 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWidthLimite(0), 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bUseInheriated(FALSE), 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_ePreProcessRs(XFA_ItemLayoutProcessorResult_Done), 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bHasAvailHeight(TRUE) { 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_assert(m_pFormNode && (m_pFormNode->IsContainerNode() || 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode->GetClassID() == XFA_ELEMENT_Form)); 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem = 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)m_pFormNode->GetUserData(XFA_LAYOUTITEMKEY); 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::CreateContentLayoutItem( 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode) { 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pFormNode) { 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutItem = NULL; 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOldLayoutItem) { 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem = m_pOldLayoutItem; 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem = m_pOldLayoutItem->m_pNext; 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pLayoutItem; 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem = (CXFA_ContentLayoutItem*)pFormNode->GetDocument() 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetParser() 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->GetNotify() 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ->OnCreateLayoutItem(pFormNode); 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#else 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem = 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)m_pPageMgrCreateItem->FindOrCreateLayoutItem( 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode); 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pPrevLayoutItem = 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pFormNode->GetUserData(XFA_LAYOUTITEMKEY); 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pPrevLayoutItem) { 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pPrevLayoutItem->m_pNext) { 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPrevLayoutItem = pPrevLayoutItem->m_pNext; 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPrevLayoutItem->m_pNext = pLayoutItem; 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pPrev = pPrevLayoutItem; 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->SetUserData(XFA_LAYOUTITEMKEY, pLayoutItem); 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pLayoutItem; 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::FindLayoutItemSplitPos( 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutItem, 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurVerticalOffset, 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fProposedSplitPos, 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bAppChange, 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCalculateMargin) { 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode = pLayoutItem->m_pFormNode; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fProposedSplitPos > fCurVerticalOffset + XFA_LAYOUT_FLOAT_PERCISION && 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fProposedSplitPos <= fCurVerticalOffset + pLayoutItem->m_sSize.y - 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_PERCISION) { 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pFormNode->GetIntact()) { 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_None: { 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bAnyChanged = FALSE; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Document* pDocument = pFormNode->GetDocument(); 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_Notify* pNotify = pDocument->GetParser()->GetNotify(); 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurTopMargin = 0, fCurBottomMargin = 0; 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode && bCalculateMargin) { 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurTopMargin = pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset) 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann .ToUnit(XFA_UNIT_Pt); 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurBottomMargin = pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset) 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann .ToUnit(XFA_UNIT_Pt); 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bChanged = TRUE; 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (bChanged) { 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bChanged = FALSE; 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fRelSplitPos = fProposedSplitPos - fCurVerticalOffset; 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNotify->FindSplitPos(pFormNode, pLayoutItem->GetIndex(), 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRelSplitPos)) { 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAnyChanged = TRUE; 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bChanged = TRUE; 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fProposedSplitPos = fCurVerticalOffset + fRelSplitPos; 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAppChange = TRUE; 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fProposedSplitPos <= 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurVerticalOffset + XFA_LAYOUT_FLOAT_PERCISION) { 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fRelSplitPos = fProposedSplitPos - fCurBottomMargin; 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pChildItem = 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutItem->m_pFirstChild; 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem; 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem = 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pChildItem->m_pNextSibling) { 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildOffset = 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurVerticalOffset + fCurTopMargin + pChildItem->m_sPos.y; 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bAppChange = FALSE; 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (FindLayoutItemSplitPos(pChildItem, fChildOffset, fRelSplitPos, 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAppChange, bCalculateMargin)) { 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fRelSplitPos - fChildOffset < XFA_LAYOUT_FLOAT_PERCISION && 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAppChange) { 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fProposedSplitPos = fRelSplitPos - fCurTopMargin; 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fProposedSplitPos = fRelSplitPos + fCurBottomMargin; 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAnyChanged = TRUE; 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bChanged = TRUE; 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fProposedSplitPos <= 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurVerticalOffset + XFA_LAYOUT_FLOAT_PERCISION) { 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bAnyChanged) { 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bAnyChanged; 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_ContentArea: 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_PageArea: { 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fProposedSplitPos = fCurVerticalOffset; 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic XFA_ATTRIBUTEENUM XFA_ItemLayoutProcessor_GetLayout( 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode, 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bRootForceTb) { 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRootForceTb = FALSE; 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayoutMode; 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode->TryEnum(XFA_ATTRIBUTE_Layout, eLayoutMode, FALSE)) { 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return eLayoutMode; 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParentNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent); 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParentNode && pParentNode->GetClassID() == XFA_ELEMENT_Form) { 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRootForceTb = TRUE; 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ATTRIBUTEENUM_Tb; 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ATTRIBUTEENUM_Position; 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic FX_BOOL XFA_ExistContainerKeep(CXFA_Node* pCurNode, FX_BOOL bPreFind) { 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurNode == NULL || !XFA_ItemLayoutProcessor_IsTakingSpace(pCurNode)) { 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_NODEITEM eItemType = XFA_NODEITEM_PrevSibling; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bPreFind) { 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eItemType = XFA_NODEITEM_NextSibling; 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pPreContainer = 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode->GetNodeItem(eItemType, XFA_OBJECTTYPE_ContainerNode); 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pPreContainer == NULL) { 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pKeep = pCurNode->GetFirstChildByClass(XFA_ELEMENT_Keep); 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pKeep) { 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM ePrevious; 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTE eKeepType = XFA_ATTRIBUTE_Previous; 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bPreFind) { 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eKeepType = XFA_ATTRIBUTE_Next; 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pKeep->TryEnum(eKeepType, ePrevious, FALSE)) { 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ePrevious == XFA_ATTRIBUTEENUM_ContentArea || 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ePrevious == XFA_ATTRIBUTEENUM_PageArea) { 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pKeep = pPreContainer->GetFirstChildByClass(XFA_ELEMENT_Keep); 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pKeep) { 216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eNext; 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTE eKeepType = XFA_ATTRIBUTE_Next; 220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bPreFind) { 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eKeepType = XFA_ATTRIBUTE_Previous; 222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pKeep->TryEnum(eKeepType, eNext, FALSE)) { 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eNext == XFA_ATTRIBUTEENUM_ContentArea || 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eNext == XFA_ATTRIBUTEENUM_PageArea) { 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_FLOAT CXFA_ItemLayoutProcessor::FindSplitPos(FX_FLOAT fProposedSplitPos) { 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pLayoutItem); 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCalculateMargin = TRUE; 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eLayout == XFA_ATTRIBUTEENUM_Position) { 237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bCalculateMargin = FALSE; 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (fProposedSplitPos > XFA_LAYOUT_FLOAT_PERCISION) { 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bAppChange = FALSE; 241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!FindLayoutItemSplitPos(m_pLayoutItem, 0, fProposedSplitPos, bAppChange, 242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bCalculateMargin)) { 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fProposedSplitPos; 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::SplitLayoutItem( 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutItem, 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pSecondParent, 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fSplitPos) { 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurTopMargin = 0, fCurBottomMargin = 0; 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCalculateMargin = TRUE; 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eLayout == XFA_ATTRIBUTEENUM_Position) { 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bCalculateMargin = FALSE; 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode && bCalculateMargin) { 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurTopMargin = 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurBottomMargin = 264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pSecondLayoutItem = NULL; 267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildPreprocessor && 268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor->m_pFormNode == pLayoutItem->m_pFormNode) { 269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem = m_pCurChildPreprocessor->CreateContentLayoutItem( 270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFormNode); 271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem = CreateContentLayoutItem(pLayoutItem->m_pFormNode); 273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_sPos.x = pLayoutItem->m_sPos.x; 275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_sSize.x = pLayoutItem->m_sSize.x; 276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_sPos.y = 0; 277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_sSize.y = pLayoutItem->m_sSize.y - fSplitPos; 278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_sSize.y -= pSecondLayoutItem->m_sSize.y; 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutItem->m_pFirstChild) { 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_sSize.y += fCurTopMargin; 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pSecondParent) { 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondParent->AddChild(pSecondLayoutItem); 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fCurTopMargin > 0 && pLayoutItem->m_pFirstChild) { 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondParent->m_sSize.y += fCurTopMargin; 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pParentItem = 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pSecondParent->m_pParent; 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pParentItem) { 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParentItem->m_sSize.y += fCurTopMargin; 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParentItem = (CXFA_ContentLayoutItem*)pParentItem->m_pParent; 291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_pParent = pLayoutItem->m_pParent; 295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_pNextSibling = pLayoutItem->m_pNextSibling; 296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pNextSibling = pSecondLayoutItem; 297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pChildren = 299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutItem->m_pFirstChild; 300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFirstChild = NULL; 301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT lHeightForKeep = 0; 302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*> keepLayoutItems; 303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAddMarginHeight = 0; 304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pChildItem = pChildren, * pChildNext = NULL; 305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem; pChildItem = pChildNext) { 306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildNext = (CXFA_ContentLayoutItem*)pChildItem->m_pNextSibling; 307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pNextSibling = NULL; 308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fSplitPos <= fCurTopMargin + pChildItem->m_sPos.y + fCurBottomMargin + 309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_PERCISION) { 310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!XFA_ExistContainerKeep(pChildItem->m_pFormNode, TRUE)) { 311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y -= fSplitPos - fCurBottomMargin; 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y += lHeightForKeep; 313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y += fAddMarginHeight; 314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->AddChild(pChildItem); 315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (lHeightForKeep < XFA_LAYOUT_FLOAT_PERCISION) { 317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t iIndex = 0; iIndex < keepLayoutItems.GetSize(); 318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iIndex++) { 319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pPreItem = keepLayoutItems[iIndex]; 320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->RemoveChild(pPreItem); 321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPreItem->m_sPos.y -= fSplitPos; 322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pPreItem->m_sPos.y < 0) { 323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPreItem->m_sPos.y = 0; 324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pPreItem->m_sPos.y + pPreItem->m_sSize.y > lHeightForKeep) { 326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPreItem->m_sPos.y = lHeightForKeep; 327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann lHeightForKeep += pPreItem->m_sSize.y; 328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->m_sSize.y += pPreItem->m_sSize.y; 329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pSecondParent) { 330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondParent->m_sSize.y += pPreItem->m_sSize.y; 331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->AddChild(pPreItem); 334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y -= fSplitPos; 337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y += lHeightForKeep; 338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y += fAddMarginHeight; 339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pSecondLayoutItem->AddChild(pChildItem); 340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (fSplitPos + XFA_LAYOUT_FLOAT_PERCISION >= 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurTopMargin + fCurBottomMargin + pChildItem->m_sPos.y + 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sSize.y) { 344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->AddChild(pChildItem); 345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ExistContainerKeep(pChildItem->m_pFormNode, FALSE)) { 346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann keepLayoutItems.Add(pChildItem); 347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann keepLayoutItems.RemoveAll(); 349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fOldHeight = pSecondLayoutItem->m_sSize.y; 352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SplitLayoutItem( 353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem, pSecondLayoutItem, 354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fSplitPos - fCurTopMargin - fCurBottomMargin - pChildItem->m_sPos.y); 355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAddMarginHeight = pSecondLayoutItem->m_sSize.y - fOldHeight; 356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->AddChild(pChildItem); 357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::SplitLayoutItem(FX_FLOAT fSplitPos) { 361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pLayoutItem); 362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SplitLayoutItem(m_pLayoutItem, NULL, fSplitPos); 363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_LayoutPage* CXFA_LayoutItem::GetPage() const { 367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_LayoutItem* pCurNode = const_cast<CXFA_LayoutItem*>(this); pCurNode; 368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pParent) { 369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurNode->m_pFormNode->GetClassID() == XFA_ELEMENT_PageArea) 370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<CXFA_ContainerLayoutItem*>(pCurNode); 371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return nullptr; 373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_LayoutItem::GetFormNode() const { 376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pFormNode; 377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_LayoutItem::GetRect(CFX_RectF& rtLayout, FX_BOOL bRelative) const { 380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CXFA_ContentLayoutItem* pThis = 382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<const CXFA_ContentLayoutItem*>(this); 383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_PointF sPos = pThis->m_sPos; 384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_SizeF sSize = pThis->m_sSize; 385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bRelative) { 386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_LayoutItem* pLayoutItem = pThis->m_pParent; pLayoutItem; 387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem = pLayoutItem->m_pParent) { 388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CXFA_ContentLayoutItem* pContent = 389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->AsContentLayoutItem()) { 390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sPos += pContent->m_sPos; 391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CXFA_Node* pMarginNode = 392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFormNode->GetFirstChildByClass( 393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ELEMENT_Margin)) { 394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sPos.Add(pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset) 395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann .ToUnit(XFA_UNIT_Pt), 396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset) 397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann .ToUnit(XFA_UNIT_Pt)); 398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutItem->m_pFormNode->GetClassID() == XFA_ELEMENT_ContentArea) { 401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann sPos.Add(pLayoutItem->m_pFormNode->GetMeasure(XFA_ATTRIBUTE_X) 402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann .ToUnit(XFA_UNIT_Pt), 403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFormNode->GetMeasure(XFA_ATTRIBUTE_Y) 404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann .ToUnit(XFA_UNIT_Pt)); 405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (pLayoutItem->m_pFormNode->GetClassID() == 407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ELEMENT_PageArea) { 408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rtLayout.Set(sPos.x, sPos.y, sSize.x, sSize.y); 414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_LayoutItem* CXFA_LayoutItem::GetParent() const { 417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pParent; 418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst CXFA_LayoutItem* CXFA_LayoutItem::GetFirst() const { 421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CXFA_ContentLayoutItem* pCurNode = 423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<const CXFA_ContentLayoutItem*>(this); 424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurNode->m_pPrev) { 425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pPrev; 426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pCurNode; 428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_LayoutItem* CXFA_LayoutItem::GetFirst() { 431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pCurNode = static_cast<CXFA_ContentLayoutItem*>(this); 433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurNode->m_pPrev) { 434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pPrev; 435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pCurNode; 437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_LayoutItem* CXFA_LayoutItem::GetLast() { 440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pCurNode = static_cast<CXFA_ContentLayoutItem*>(this); 442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurNode->m_pNext) { 443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pNext; 444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pCurNode; 446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannconst CXFA_LayoutItem* CXFA_LayoutItem::GetLast() const { 449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CXFA_ContentLayoutItem* pCurNode = 451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<const CXFA_ContentLayoutItem*>(this); 452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurNode->m_pNext) { 453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pNext; 454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pCurNode; 456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_LayoutItem* CXFA_LayoutItem::GetPrev() const { 459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<const CXFA_ContentLayoutItem*>(this)->m_pPrev; 461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_LayoutItem* CXFA_LayoutItem::GetNext() const { 464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return static_cast<const CXFA_ContentLayoutItem*>(this)->m_pNext; 466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CXFA_LayoutItem::GetIndex() const { 469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iIndex = 0; 471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CXFA_ContentLayoutItem* pCurNode = 472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<const CXFA_ContentLayoutItem*>(this); 473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurNode->m_pPrev) { 474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pPrev; 475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ++iIndex; 476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return iIndex; 478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CXFA_LayoutItem::GetCount() const { 481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_bIsContentLayoutItem); 482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = GetIndex() + 1; 483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CXFA_ContentLayoutItem* pCurNode = 484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static_cast<const CXFA_ContentLayoutItem*>(this); 485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurNode->m_pNext) { 486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurNode = pCurNode->m_pNext; 487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iCount++; 488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return iCount; 490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_LayoutItem::AddChild(CXFA_LayoutItem* pChildItem) { 493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pChildItem->m_pParent) { 494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent->RemoveChild(pChildItem); 495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent = this; 497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFirstChild == NULL) { 498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFirstChild = pChildItem; 499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pExistingChildItem = m_pFirstChild; 501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pExistingChildItem->m_pNextSibling) { 502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pExistingChildItem = pExistingChildItem->m_pNextSibling; 503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pExistingChildItem->m_pNextSibling = pChildItem; 505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_LayoutItem::AddHeadChild(CXFA_LayoutItem* pChildItem) { 508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pChildItem->m_pParent) { 509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent->RemoveChild(pChildItem); 510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent = this; 512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFirstChild == NULL) { 513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFirstChild = pChildItem; 514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pExistingChildItem = m_pFirstChild; 516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFirstChild = pChildItem; 517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFirstChild->m_pNextSibling = pExistingChildItem; 518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_LayoutItem::InsertChild(CXFA_LayoutItem* pBeforeItem, 521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pChildItem) { 522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBeforeItem->m_pParent != this) { 523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pChildItem->m_pParent) { 526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent = NULL; 527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent = this; 529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pExistingChildItem = pBeforeItem->m_pNextSibling; 530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBeforeItem->m_pNextSibling = pChildItem; 531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pNextSibling = pExistingChildItem; 532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_LayoutItem::RemoveChild(CXFA_LayoutItem* pChildItem) { 534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pChildItem->m_pParent != this) { 535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFirstChild == pChildItem) { 538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFirstChild = pChildItem->m_pNextSibling; 539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pExistingChildItem = m_pFirstChild; 541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pExistingChildItem && 542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pExistingChildItem->m_pNextSibling != pChildItem) { 543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pExistingChildItem = pExistingChildItem->m_pNextSibling; 544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pExistingChildItem) { 546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pExistingChildItem->m_pNextSibling = pChildItem->m_pNextSibling; 547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pNextSibling = NULL; 550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_pParent = NULL; 551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::ExtractLayoutItem() { 553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutItem = m_pLayoutItem; 554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutItem) { 555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = (CXFA_ContentLayoutItem*)pLayoutItem->m_pNextSibling; 556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pNextSibling = NULL; 557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ 559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_Done && 560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ToContentLayoutItem(m_pOldLayoutItem)) { 561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pOldLayoutItem->m_pPrev) { 562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem->m_pPrev->m_pNext = NULL; 563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_Notify* pNotify = 565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem->m_pFormNode->GetDocument()->GetParser()->GetNotify(); 566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_DocLayout* pDocLayout = 567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem->m_pFormNode->GetDocument()->GetDocLayout(); 568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pOldLayoutItem = m_pOldLayoutItem; 569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pOldLayoutItem) { 570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pNextOldLayoutItem = pOldLayoutItem->m_pNext; 571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNotify->OnLayoutEvent(pDocLayout, pOldLayoutItem, 572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUTEVENT_ItemRemoving); 573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pOldLayoutItem; 574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOldLayoutItem = pNextOldLayoutItem; 575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pOldLayoutItem = NULL; 577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pLayoutItem; 580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic FX_BOOL XFA_ItemLayoutProcessor_FindBreakNode( 582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pContainerNode, 583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node*& pCurActionNode, 584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorStages& nCurStage, 585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bBreakBefore) { 586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bFindRs = FALSE; 587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_Node* pBreakNode = pContainerNode; pBreakNode; 588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBreakNode = pBreakNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { 589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTE eAttributeType = XFA_ATTRIBUTE_Before; 590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bBreakBefore) { 591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eAttributeType = XFA_ATTRIBUTE_After; 592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pBreakNode->GetClassID()) { 594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_BreakBefore: { 595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bBreakBefore) { 596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pBreakNode; 597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_BreakBefore; 598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bFindRs = TRUE; 599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_BreakAfter: { 602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bBreakBefore) { 603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pBreakNode; 604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_BreakAfter; 605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bFindRs = TRUE; 606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Break: 609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBreakNode->GetEnum(eAttributeType) != XFA_ATTRIBUTEENUM_Auto) { 610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pBreakNode; 611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_BreakBefore; 612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bBreakBefore) { 613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_BreakAfter; 614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bFindRs = TRUE; 616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bFindRs) { 622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bFindRs; 626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ 628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic void XFA_DeleteLayoutGeneratedNode(CXFA_Node* pGenerateNode) { 629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_Notify* pNotify = pGenerateNode->GetDocument()->GetParser()->GetNotify(); 630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_DocLayout* pDocLayout = pGenerateNode->GetDocument()->GetDocLayout(); 631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> sIterator( 632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pGenerateNode); 633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode; 634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode = sIterator.MoveToNext()) { 635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pCurLayoutItem = 636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pNode->GetUserData(XFA_LAYOUTITEMKEY); 637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pNextLayoutItem = NULL; 638ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pCurLayoutItem) { 639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextLayoutItem = pCurLayoutItem->m_pNext; 640ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNotify->OnLayoutEvent(pDocLayout, pCurLayoutItem, 641ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUTEVENT_ItemRemoving); 642ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pCurLayoutItem; 643ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurLayoutItem = pNextLayoutItem; 644ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 645ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 646ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pGenerateNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pGenerateNode); 647ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 648ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 649ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::XFA_ItemLayoutProcessor_GotoNextContainerNode( 650ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node*& pCurActionNode, 651ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorStages& nCurStage, 652ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParentContainer, 653ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUsePageBreak) { 654ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pEntireContainer = pParentContainer; 655ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pChildContainer = XFA_LAYOUT_INVALIDNODE; 656ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (nCurStage) { 657ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BreakBefore: 658ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BreakAfter: { 659ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer = pCurActionNode->GetNodeItem(XFA_NODEITEM_Parent); 660ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 661ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Keep: 662ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Container: 663ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer = pCurActionNode; 664ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 665ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 666ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer = XFA_LAYOUT_INVALIDNODE; 667ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 668ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 669ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (nCurStage) { 670ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Keep: { 671ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBreakAfterNode = 672ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer->GetNodeItem(XFA_NODEITEM_FirstChild); 673ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bKeepBreakFinish && 674ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_FindBreakNode(pBreakAfterNode, pCurActionNode, 675ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage, FALSE)) { 676ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 677ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 678ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto CheckNextChildContainer; 679ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 680ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_None: { 681ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = XFA_LAYOUT_INVALIDNODE; 682ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BookendLeader: 683ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_Node* pBookendNode = 684ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode == XFA_LAYOUT_INVALIDNODE 685ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? pEntireContainer->GetNodeItem(XFA_NODEITEM_FirstChild) 686ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : pCurActionNode->GetNodeItem(XFA_NODEITEM_NextSibling); 687ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBookendNode; pBookendNode = pBookendNode->GetNodeItem( 688ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_NODEITEM_NextSibling)) { 689ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pBookendNode->GetClassID()) { 690ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Bookend: 691ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Break: 692ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pBookendNode; 693ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_BookendLeader; 694ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 695ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 696ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 697ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 698ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 699ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 700ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 701ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = XFA_LAYOUT_INVALIDNODE; 702ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BreakBefore: 703ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurActionNode != XFA_LAYOUT_INVALIDNODE) { 704ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBreakBeforeNode = 705ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode->GetNodeItem(XFA_NODEITEM_NextSibling); 706ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bKeepBreakFinish && 707ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_FindBreakNode( 708ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBreakBeforeNode, pCurActionNode, nCurStage, TRUE)) { 709ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 710ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 711ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bIsProcessKeep) { 712ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ProcessKeepNodesForBreakBefore(pCurActionNode, nCurStage, 713ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer)) { 714ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 715ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 716ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto CheckNextChildContainer; 717ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 718ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pChildContainer; 719ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_Container; 720ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 721ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 722ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto CheckNextChildContainer; 723ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 724ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Container: { 725ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = XFA_LAYOUT_INVALIDNODE; 726ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BreakAfter: { 727ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurActionNode == XFA_LAYOUT_INVALIDNODE) { 728ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBreakAfterNode = 729ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer->GetNodeItem(XFA_NODEITEM_FirstChild); 730ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bKeepBreakFinish && 731ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_FindBreakNode( 732ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBreakAfterNode, pCurActionNode, nCurStage, FALSE)) { 733ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 734ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 735ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 736ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBreakAfterNode = 737ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode->GetNodeItem(XFA_NODEITEM_NextSibling); 738ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_FindBreakNode( 739ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBreakAfterNode, pCurActionNode, nCurStage, FALSE)) { 740ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 741ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 742ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 743ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto CheckNextChildContainer; 744ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 745ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 746ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CheckNextChildContainer : { 747ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNextChildContainer = 748ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer == XFA_LAYOUT_INVALIDNODE 749ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? pEntireContainer->GetNodeItem(XFA_NODEITEM_FirstChild, 750ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_OBJECTTYPE_ContainerNode) 751ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : pChildContainer->GetNodeItem(XFA_NODEITEM_NextSibling, 752ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_OBJECTTYPE_ContainerNode); 753ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pNextChildContainer && 754ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextChildContainer->HasFlag(XFA_NODEFLAG_LayoutGeneratedNode)) { 755ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pSaveNode = pNextChildContainer; 756ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextChildContainer = pNextChildContainer->GetNodeItem( 757ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_NODEITEM_NextSibling, XFA_OBJECTTYPE_ContainerNode); 758ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ 759ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pSaveNode->HasFlag(XFA_NODEFLAG_UnusedNode)) { 760ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_DeleteLayoutGeneratedNode(pSaveNode); 761ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 762ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 763ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 764ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pNextChildContainer) { 765ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto NoMoreChildContainer; 766ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 767ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bLastKeep = FALSE; 768ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ProcessKeepNodesForCheckNext(pCurActionNode, nCurStage, 769ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextChildContainer, bLastKeep)) { 770ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 771ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 772ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bKeepBreakFinish && !bLastKeep && 773ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_FindBreakNode( 774ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextChildContainer->GetNodeItem(XFA_NODEITEM_FirstChild), 775ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode, nCurStage, TRUE)) { 776ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 777ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 778ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pNextChildContainer; 779ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bIsProcessKeep) { 780ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_Keep; 781ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 782ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_Container; 783ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 784ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 785ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 786ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NoMoreChildContainer : { 787ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = XFA_LAYOUT_INVALIDNODE; 788ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BookendTrailer: 789ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_Node* pBookendNode = 790ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode == XFA_LAYOUT_INVALIDNODE 791ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? pEntireContainer->GetNodeItem(XFA_NODEITEM_FirstChild) 792ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : pCurActionNode->GetNodeItem(XFA_NODEITEM_NextSibling); 793ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBookendNode; pBookendNode = pBookendNode->GetNodeItem( 794ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_NODEITEM_NextSibling)) { 795ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pBookendNode->GetClassID()) { 796ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Bookend: 797ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Break: 798ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = pBookendNode; 799ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_BookendTrailer; 800ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 801ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 802ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 803ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 804ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 805ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 806ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 807ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = NULL; 808ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_Done; 809ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 810ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 811ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepNodesForCheckNext( 812ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node*& pCurActionNode, 813ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorStages& nCurStage, 814ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node*& pNextContainer, 815ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bLastKeepNode) { 816ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCanSplite = pNextContainer->GetIntact() == XFA_ATTRIBUTEENUM_None; 817ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bNextKeep = FALSE; 818ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ExistContainerKeep(pNextContainer, FALSE)) { 819ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bNextKeep = TRUE; 820ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 821ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bNextKeep && !bCanSplite) { 822ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bIsProcessKeep && !m_bKeepBreakFinish) { 823ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepHeadNode = pNextContainer; 824ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bIsProcessKeep = TRUE; 825ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 826ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 827ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bIsProcessKeep && m_pKeepHeadNode != NULL) { 828ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepTailNode = pNextContainer; 829ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_bKeepBreakFinish && 830ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_FindBreakNode( 831ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextContainer->GetNodeItem(XFA_NODEITEM_FirstChild), 832ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode, nCurStage, TRUE)) { 833ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 834ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 835ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNextContainer = m_pKeepHeadNode; 836ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bKeepBreakFinish = TRUE; 837ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepHeadNode = NULL; 838ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepTailNode = NULL; 839ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bIsProcessKeep = FALSE; 840ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 841ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 842ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bKeepBreakFinish) { 843ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bLastKeepNode = TRUE; 844ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 845ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bKeepBreakFinish = FALSE; 846ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 847ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 848ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 849ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 850ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepNodesForBreakBefore( 851ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node*& pCurActionNode, 852ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorStages& nCurStage, 853ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pContainerNode) { 854ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pKeepTailNode == pContainerNode) { 855ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurActionNode = m_pKeepHeadNode; 856ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bKeepBreakFinish = TRUE; 857ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepHeadNode = NULL; 858ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepTailNode = NULL; 859ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bIsProcessKeep = FALSE; 860ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage = XFA_ItemLayoutProcessorStages_Container; 861ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 862ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 863ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBreakAfterNode = 864ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContainerNode->GetNodeItem(XFA_NODEITEM_FirstChild); 865ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_FindBreakNode(pBreakAfterNode, pCurActionNode, 866ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurStage, FALSE)) { 867ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 868ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 869ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 870ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 871ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_ItemLayoutProcessor_IsTakingSpace(CXFA_Node* pNode) { 872ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM ePresence = pNode->GetEnum(XFA_ATTRIBUTE_Presence); 873ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ePresence == XFA_ATTRIBUTEENUM_Visible || 874ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ePresence == XFA_ATTRIBUTEENUM_Invisible; 875ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 876ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic inline void XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize( 877ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode, 878ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContainerWidth, 879ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContainerHeight, 880ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bContainerWidthAutoSize, 881ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bContainerHeightAutoSize) { 882ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth = 0; 883ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight = 0; 884ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize = TRUE; 885ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize = TRUE; 886ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ELEMENT eClassID = pFormNode->GetClassID(); 887ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement mTmpValue; 888ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize && 889ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup) && 890ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->TryMeasure(XFA_ATTRIBUTE_W, mTmpValue, FALSE) && 891ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mTmpValue.GetValue() > XFA_LAYOUT_FLOAT_PERCISION) { 892ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth = mTmpValue.ToUnit(XFA_UNIT_Pt); 893ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize = FALSE; 894ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 895ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize && 896ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup) && 897ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->TryMeasure(XFA_ATTRIBUTE_H, mTmpValue, FALSE) && 898ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mTmpValue.GetValue() > XFA_LAYOUT_FLOAT_PERCISION) { 899ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight = mTmpValue.ToUnit(XFA_UNIT_Pt); 900ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize = FALSE; 901ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 902ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize && eClassID == XFA_ELEMENT_Subform && 903ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->TryMeasure(XFA_ATTRIBUTE_MaxW, mTmpValue, FALSE) && 904ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mTmpValue.GetValue() > XFA_LAYOUT_FLOAT_PERCISION) { 905ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth = mTmpValue.ToUnit(XFA_UNIT_Pt); 906ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize = FALSE; 907ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 908ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize && eClassID == XFA_ELEMENT_Subform && 909ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->TryMeasure(XFA_ATTRIBUTE_MaxH, mTmpValue, FALSE) && 910ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mTmpValue.GetValue() > XFA_LAYOUT_FLOAT_PERCISION) { 911ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight = mTmpValue.ToUnit(XFA_UNIT_Pt); 912ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize = FALSE; 913ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 914ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 915ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic inline void 916ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannXFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 917ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode, 918ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize, 919ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCalculatedWidth, 920ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContainerWidth, 921ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerHeightAutoSize, 922ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCalculatedHeight, 923ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContainerHeight) { 924ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 925ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement mTmpValue; 926ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 927ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth = fContentCalculatedWidth; 928ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 929ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode->TryMeasure(XFA_ATTRIBUTE_LeftInset, mTmpValue, FALSE)) { 930ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth += mTmpValue.ToUnit(XFA_UNIT_Pt); 931ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 932ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode->TryMeasure(XFA_ATTRIBUTE_RightInset, mTmpValue, FALSE)) { 933ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth += mTmpValue.ToUnit(XFA_UNIT_Pt); 934ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 935ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 936ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 937ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 938ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight = fContentCalculatedHeight; 939ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 940ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode->TryMeasure(XFA_ATTRIBUTE_TopInset, mTmpValue, FALSE)) { 941ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight += mTmpValue.ToUnit(XFA_UNIT_Pt); 942ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 943ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode->TryMeasure(XFA_ATTRIBUTE_BottomInset, mTmpValue, 944ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FALSE)) { 945ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight += mTmpValue.ToUnit(XFA_UNIT_Pt); 946ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 947ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 948ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 949ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 950ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::CalculatePositionedContainerPos( 951ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNode, 952ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fWidth, 953ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeight, 954ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fAbsoluteX, 955ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fAbsoluteY) { 956ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eAnchorType = pNode->GetEnum(XFA_ATTRIBUTE_AnchorType); 957ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nAnchorType = 0; 958ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eAnchorType) { 959ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_TopLeft: 960ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 0; 961ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 962ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_TopCenter: 963ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 1; 964ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 965ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_TopRight: 966ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 2; 967ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 968ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_MiddleLeft: 969ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 3; 970ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 971ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_MiddleCenter: 972ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 4; 973ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 974ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_MiddleRight: 975ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 5; 976ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 977ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_BottomLeft: 978ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 6; 979ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 980ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_BottomCenter: 981ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 7; 982ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 983ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_BottomRight: 984ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nAnchorType = 8; 985ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 986ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 987ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 988ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 989ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static const uint8_t nNextPos[4][9] = {{0, 1, 2, 3, 4, 5, 6, 7, 8}, 990ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann {6, 3, 0, 7, 4, 1, 8, 5, 2}, 991ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann {8, 7, 6, 5, 4, 3, 2, 1, 0}, 992ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann {2, 5, 8, 1, 4, 7, 0, 3, 6}}; 993ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 994ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAnchorX = pNode->GetMeasure(XFA_ATTRIBUTE_X).ToUnit(XFA_UNIT_Pt); 995ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAnchorY = pNode->GetMeasure(XFA_ATTRIBUTE_Y).ToUnit(XFA_UNIT_Pt); 996ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nRotate = 997ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_round(pNode->GetMeasure(XFA_ATTRIBUTE_Rotate).GetValue()); 998ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nRotate = XFA_MapRotation(nRotate) / 90; 999ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nAbsoluteAnchorType = nNextPos[nRotate][nAnchorType]; 1000ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX = fAnchorX; 1001ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteY = fAnchorY; 1002ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (nAbsoluteAnchorType / 3) { 1003ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 1: 1004ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteY -= fHeight / 2; 1005ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1006ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 2: 1007ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteY -= fHeight; 1008ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1009ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1010ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1011ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1012ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (nAbsoluteAnchorType % 3) { 1013ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 1: 1014ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX -= fWidth / 2; 1015ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1016ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 2: 1017ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX -= fWidth; 1018ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1019ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1020ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1021ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1022ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1023ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::IncrementRelayoutNode( 1024ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutProcessor* pLayoutProcessor, 1025ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNode, 1026ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParentNode) { 1027ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1028ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1029ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::DoLayoutPageArea( 1030ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContainerLayoutItem* pPageAreaLayoutItem) { 1031ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode = pPageAreaLayoutItem->m_pFormNode; 1032ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pCurChildNode = XFA_LAYOUT_INVALIDNODE; 1033ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorStages nCurChildNodeStage = 1034ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorStages_None; 1035ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pBeforeItem = NULL; 1036ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (XFA_ItemLayoutProcessor_GotoNextContainerNode( 1037ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurChildNode, nCurChildNodeStage, pFormNode, FALSE); 1038ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode( 1039ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pCurChildNode, nCurChildNodeStage, pFormNode, FALSE)) { 1040ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) { 1041ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1042ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1043ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) { 1044ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1045ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1046ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = 1047ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(pCurChildNode, NULL); 1048ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 1049ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 1050ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 1051ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX); 1052ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pProcessor->HasLayoutItem()) { 1053ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 1054ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1055ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1056ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fWidth, fHeight; 1057ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->GetCurrentComponentSize(fWidth, fHeight); 1058ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAbsoluteX = 0, fAbsoluteY = 0; 1059ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculatePositionedContainerPos(pCurChildNode, fWidth, fHeight, fAbsoluteX, 1060ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteY); 1061ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->SetCurrentComponentPos(fAbsoluteX, fAbsoluteY); 1062ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pProcessItem = pProcessor->ExtractLayoutItem(); 1063ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBeforeItem == NULL) { 1064ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPageAreaLayoutItem->AddHeadChild(pProcessItem); 1065ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1066ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPageAreaLayoutItem->InsertChild(pBeforeItem, pProcessItem); 1067ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1068ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBeforeItem = pProcessItem; 1069ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 1070ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1071ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBeforeItem = NULL; 1072ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pLayoutItem = pPageAreaLayoutItem->m_pFirstChild; 1073ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pLayoutItem) { 1074ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pLayoutItem->IsContentLayoutItem() || 1075ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFormNode->GetClassID() != XFA_ELEMENT_Draw) { 1076ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem = pLayoutItem->m_pNextSibling; 1077ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1078ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1079ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutItem->m_pFormNode->GetClassID() == XFA_ELEMENT_Draw) { 1080ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutItem* pNextLayoutItem = pLayoutItem->m_pNextSibling; 1081ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPageAreaLayoutItem->RemoveChild(pLayoutItem); 1082ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBeforeItem == NULL) { 1083ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPageAreaLayoutItem->AddHeadChild(pLayoutItem); 1084ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1085ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPageAreaLayoutItem->InsertChild(pBeforeItem, pLayoutItem); 1086ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1087ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBeforeItem = pLayoutItem; 1088ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem = pNextLayoutItem; 1089ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1090ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1091ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1092ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::DoLayoutPositionedContainer( 1093ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext* pContext) { 1094ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem != NULL) { 1095ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1096ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1097ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 1098ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bIgnoreXY = (m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout) != 1099ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM_Position); 1100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContainerWidth = 0, fContainerHeight = 0; 1101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize = TRUE, bContainerHeightAutoSize = TRUE; 1102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize( 1103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode, fContainerWidth, fContainerHeight, bContainerWidthAutoSize, 1104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize); 1105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0; 1106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHiddenContentCalculatedWidth = 0, 1107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHiddenContentCalculatedHeight = 0; 1108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildNode == XFA_LAYOUT_INVALIDNODE) { 1109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GotoNextContainerNode( 1110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE); 1111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iColIndex = 0; 1113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (; m_pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode( 1114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE)) { 1115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) { 1116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) { 1119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = 1122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(m_pCurChildNode, m_pPageMgr); 1123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 1124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 1125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 1126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pContext && pContext->m_prgSpecifiedColumnWidths) { 1127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iColSpan = m_pCurChildNode->GetInteger(XFA_ATTRIBUTE_ColSpan); 1128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iColSpan <= 1129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext->m_prgSpecifiedColumnWidths->GetSize() - iColIndex) { 1130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext->m_fCurColumnWidth = 0; 1131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext->m_bCurColumnWidthAvaiable = TRUE; 1132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iColSpan == -1) { 1133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iColSpan = pContext->m_prgSpecifiedColumnWidths->GetSize(); 1134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iColSpan; i++) { 1136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext->m_fCurColumnWidth += 1137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext->m_prgSpecifiedColumnWidths->GetAt(iColIndex + i); 1138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pContext->m_fCurColumnWidth == 0) { 1140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext->m_bCurColumnWidthAvaiable = FALSE; 1141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iColIndex += iColSpan; 1143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, 1146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext); 1147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pProcessor->HasLayoutItem()) { 1148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 1149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fWidth, fHeight; 1152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->GetCurrentComponentSize(fWidth, fHeight); 1153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bChangeParentSize = FALSE; 1154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace(m_pCurChildNode)) { 1155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bChangeParentSize = TRUE; 1156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAbsoluteX = 0, fAbsoluteY = 0; 1158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bIgnoreXY) { 1159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculatePositionedContainerPos(m_pCurChildNode, fWidth, fHeight, 1160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX, fAbsoluteY); 1161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->SetCurrentComponentPos(fAbsoluteX, fAbsoluteY); 1163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 1164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedWidth = fAbsoluteX + fWidth; 1165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bChangeParentSize) { 1166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedWidth < fChildSuppliedWidth) { 1167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fChildSuppliedWidth; 1168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fHiddenContentCalculatedWidth < fChildSuppliedWidth && 1171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode->GetClassID() != XFA_ELEMENT_Subform) { 1172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHiddenContentCalculatedWidth = fChildSuppliedWidth; 1173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 1177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedHeight = fAbsoluteY + fHeight; 1178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bChangeParentSize) { 1179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight < fChildSuppliedHeight) { 1180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fChildSuppliedHeight; 1181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fHiddenContentCalculatedHeight < fChildSuppliedHeight && 1184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode->GetClassID() != XFA_ELEMENT_Subform) { 1185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHiddenContentCalculatedHeight = fChildSuppliedHeight; 1186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(pProcessor->ExtractLayoutItem()); 1190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 1191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_VERSION eVersion = m_pFormNode->GetDocument()->GetCurVersionMode(); 1193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedWidth == 0 && eVersion < XFA_VERSION_207) { 1194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fHiddenContentCalculatedWidth; 1195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight == 0 && eVersion < XFA_VERSION_207) { 1197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fHiddenContentCalculatedHeight; 1198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 1200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth, 1201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight, 1202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight); 1203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SetCurrentComponentSize(fContainerWidth, fContainerHeight); 1204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic inline void XFA_ItemLayoutProcessor_UpdateWidgetSize( 1206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutItem, 1207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fWidth, 1208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fHeight) { 1209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pNode = pLayoutItem->m_pFormNode; 1210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(pNode); 1211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ELEMENT eClassID = pNode->GetClassID(); 1212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eClassID) { 1213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Subform: 1214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Area: 1215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_ExclGroup: 1216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_SubformSet: { 1217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fWidth < -XFA_LAYOUT_FLOAT_PERCISION) { 1218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fWidth = pLayoutItem->m_sSize.x; 1219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fHeight < -XFA_LAYOUT_FLOAT_PERCISION) { 1221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHeight = pLayoutItem->m_sSize.y; 1222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Draw: 1226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Field: { 1227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode->GetDocument()->GetParser()->GetNotify()->StartFieldDrawLayout( 1228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode, fWidth, fHeight); 1229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(FALSE); 1233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic inline void XFA_ItemLayoutProcessor_RelocateTableRowCells( 1236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutRow, 1237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_ArrayTemplate<FX_FLOAT>& rgSpecifiedColumnWidths, 1238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout) { 1239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContainerWidth = 0, fContainerHeight = 0; 1240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize = TRUE, bContainerHeightAutoSize = TRUE; 1241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize( 1242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutRow->m_pFormNode, fContainerWidth, fContainerHeight, 1243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize, bContainerHeightAutoSize); 1244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 1245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutRow->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 1246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fLeftInset = 0, fTopInset = 0, fRightInset = 0, fBottomInset = 0; 1247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 1248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fLeftInset = 1249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); 1250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTopInset = 1251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 1252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset = 1253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); 1254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fBottomInset = 1255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 1256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentWidthLimit = 1258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX 1259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : fContainerWidth - fLeftInset - fRightInset; 1260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCurrentHeight = 1261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutRow->m_sSize.y - fTopInset - fBottomInset; 1262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0; 1263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurrentColX = 0; 1264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nCurrentColIdx = 0; 1265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bMetWholeRowCell = FALSE; 1266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutChild = 1267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutRow->m_pFirstChild; 1268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild; 1269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = (CXFA_ContentLayoutItem*)pLayoutChild->m_pNextSibling) { 1270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nOriginalColSpan = 1271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_pFormNode->GetInteger(XFA_ATTRIBUTE_ColSpan); 1272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nColSpan = nOriginalColSpan; 1273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fColSpanWidth = 0; 1274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nColSpan == -1 || 1275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurrentColIdx + nColSpan > rgSpecifiedColumnWidths.GetSize()) { 1276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nColSpan = rgSpecifiedColumnWidths.GetSize() - nCurrentColIdx; 1277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < nColSpan; i++) { 1279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fColSpanWidth += rgSpecifiedColumnWidths[nCurrentColIdx + i]; 1280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nColSpan != nOriginalColSpan) { 1282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fColSpanWidth = bMetWholeRowCell ? 0 : std::max(fColSpanWidth, 1283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sSize.y); 1284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nOriginalColSpan == -1) { 1286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bMetWholeRowCell = TRUE; 1287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.Set(fCurrentColX, 0); 1289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sSize.x = fColSpanWidth; 1290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace(pLayoutChild->m_pFormNode)) { 1291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurrentColX += fColSpanWidth; 1292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nCurrentColIdx += nColSpan; 1293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fNewHeight = 1294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize ? -1 : fContentCurrentHeight; 1295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_UpdateWidgetSize(pLayoutChild, fColSpanWidth, 1296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fNewHeight); 1297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sSize.y = fNewHeight; 1298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 1299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedHeight = pLayoutChild->m_sSize.y; 1300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight < fChildSuppliedHeight) { 1301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fChildSuppliedHeight; 1302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 1307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutChild = 1308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutRow->m_pFirstChild; 1309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild; 1310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = (CXFA_ContentLayoutItem*)pLayoutChild->m_pNextSibling) { 1311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_UpdateWidgetSize( 1312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild, pLayoutChild->m_sSize.x, fContentCalculatedHeight); 1313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fOldChildHeight = pLayoutChild->m_sSize.y; 1314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sSize.y = fContentCalculatedHeight; 1315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParaNode = 1316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Para); 1317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParaNode && pLayoutChild->m_pFirstChild) { 1318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fOffHeight = fContentCalculatedHeight - fOldChildHeight; 1319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eVType = pParaNode->GetEnum(XFA_ATTRIBUTE_VAlign); 1320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eVType) { 1321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Middle: 1322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fOffHeight = fOffHeight / 2; 1323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Bottom: 1325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Top: 1327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fOffHeight = 0; 1329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fOffHeight > 0) { 1332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pInnerLayoutChild = 1333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutChild->m_pFirstChild; 1334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pInnerLayoutChild; 1335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pInnerLayoutChild = 1336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pInnerLayoutChild->m_pNextSibling) { 1337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pInnerLayoutChild->m_sPos.y += fOffHeight; 1338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 1344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedWidth = fCurrentColX; 1345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentWidthLimit < XFA_LAYOUT_FLOAT_MAX && 1346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit > fChildSuppliedWidth) { 1347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildSuppliedWidth = fContentWidthLimit; 1348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedWidth < fChildSuppliedWidth) { 1350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fChildSuppliedWidth; 1351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fContainerWidth - fLeftInset - fRightInset; 1354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutRow->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout) == 1356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM_Rl_row) { 1357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutChild = 1358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutRow->m_pFirstChild; 1359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild; 1360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = (CXFA_ContentLayoutItem*)pLayoutChild->m_pNextSibling) { 1361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x = fContentCalculatedWidth - 1362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x - pLayoutChild->m_sSize.x; 1363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 1366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutRow->m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth, 1367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight, 1368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight); 1369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutRow->m_sSize.Set(fContainerWidth, fContainerHeight); 1370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::DoLayoutTableContainer(CXFA_Node* pLayoutNode) { 1372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem != NULL) { 1373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutNode == NULL) { 1376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNode = m_pFormNode; 1377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pCurChildNode == XFA_LAYOUT_INVALIDNODE); 1379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 1380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContainerWidth = 0, fContainerHeight = 0; 1381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize = TRUE, bContainerHeightAutoSize = TRUE; 1382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize( 1383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode, fContainerWidth, fContainerHeight, bContainerWidthAutoSize, 1384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize); 1385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0; 1386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 1387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 1388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fLeftInset = 0, fTopInset = 0, fRightInset = 0, fBottomInset = 0; 1389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 1390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fLeftInset = 1391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); 1392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTopInset = 1393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 1394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset = 1395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); 1396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fBottomInset = 1397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 1398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentWidthLimit = 1400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX 1401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : fContainerWidth - fLeftInset - fRightInset; 1402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideStringC wsColumnWidths; 1403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutNode->TryCData(XFA_ATTRIBUTE_ColumnWidths, wsColumnWidths)) { 1404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideStringArray widths; 1405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (FX_SeparateStringW(wsColumnWidths.GetPtr(), wsColumnWidths.GetLength(), 1406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann L' ', widths) > 0) { 1407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCols = widths.GetSize(); 1408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString wsWidth; 1409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCols; i++) { 1410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsWidth = widths[i]; 1411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsWidth.TrimLeft(L' '); 1412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!wsWidth.IsEmpty()) { 1413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Measurement measure(wsWidth); 1414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rgSpecifiedColumnWidths.Add(measure.ToUnit(XFA_UNIT_Pt)); 1415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iSpecifiedColumnCount = m_rgSpecifiedColumnWidths.GetSize(); 1420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext layoutContext; 1421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann layoutContext.m_prgSpecifiedColumnWidths = &m_rgSpecifiedColumnWidths; 1422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext* pLayoutContext = 1423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iSpecifiedColumnCount > 0 ? &layoutContext : NULL; 1424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildNode == XFA_LAYOUT_INVALIDNODE) { 1425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GotoNextContainerNode( 1426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE); 1427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (; m_pCurChildNode; XFA_ItemLayoutProcessor_GotoNextContainerNode( 1429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, FALSE)) { 1430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann layoutContext.m_bCurColumnWidthAvaiable = FALSE; 1431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann layoutContext.m_fCurColumnWidth = 0; 1432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Container) { 1433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = 1436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(m_pCurChildNode, m_pPageMgr); 1437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 1438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 1439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 1440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, 1441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutContext); 1442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pProcessor->HasLayoutItem()) { 1443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 1444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(pProcessor->ExtractLayoutItem()); 1447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 1448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iRowCount = 0, iColCount = 0; 1450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann { 1451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*> rgRowItems; 1452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<int32_t> rgRowItemsSpan; 1453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<FX_FLOAT> rgRowItemsWidth; 1454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutChild = 1455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 1456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild; 1457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = (CXFA_ContentLayoutItem*)pLayoutChild->m_pNextSibling) { 1458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutChild->m_pFormNode->GetClassID() != XFA_ELEMENT_Subform) { 1459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!XFA_ItemLayoutProcessor_IsTakingSpace(pLayoutChild->m_pFormNode)) { 1462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = 1465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 1466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eLayout != XFA_ATTRIBUTEENUM_Row && 1467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eLayout != XFA_ATTRIBUTEENUM_Rl_row) { 1468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CXFA_ContentLayoutItem* pRowLayoutCell = 1471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutChild->m_pFirstChild) { 1472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItems.Add(pRowLayoutCell); 1473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iColSpan = 1474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pRowLayoutCell->m_pFormNode->GetInteger(XFA_ATTRIBUTE_ColSpan); 1475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItemsSpan.Add(iColSpan); 1476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItemsWidth.Add(pRowLayoutCell->m_sSize.x); 1477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iRowCount = rgRowItems.GetSize(); 1480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iColCount = 0; 1481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bMoreColumns = TRUE; 1482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (bMoreColumns) { 1483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bMoreColumns = FALSE; 1484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bAutoCol = FALSE; 1485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iRowCount; i++) { 1486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (rgRowItems[i] != NULL && (rgRowItemsSpan[i] <= 0 || 1487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann !XFA_ItemLayoutProcessor_IsTakingSpace( 1488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItems[i]->m_pFormNode))) { 1489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pNewCell = 1490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)rgRowItems[i]->m_pNextSibling; 1491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (rgRowItemsSpan[i] < 0 && XFA_ItemLayoutProcessor_IsTakingSpace( 1492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItems[i]->m_pFormNode)) { 1493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNewCell = NULL; 1494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItems[i] = pNewCell; 1496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItemsSpan[i] = 1497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNewCell 1498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? pNewCell->m_pFormNode->GetInteger(XFA_ATTRIBUTE_ColSpan) 1499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : 0; 1500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItemsWidth[i] = pNewCell ? pNewCell->m_sSize.x : 0; 1501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pCell = rgRowItems[i]; 1503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pCell) { 1504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bMoreColumns = TRUE; 1507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (rgRowItemsSpan[i] == 1) { 1508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iColCount >= iSpecifiedColumnCount) { 1509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t j = 0, c = iColCount + 1 - 1510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rgSpecifiedColumnWidths.GetSize(); 1511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j < c; j++) { 1512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rgSpecifiedColumnWidths.Add(0); 1513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_rgSpecifiedColumnWidths[iColCount] < 1516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_PERCISION) { 1517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAutoCol = TRUE; 1518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bAutoCol && 1520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rgSpecifiedColumnWidths[iColCount] < rgRowItemsWidth[i]) { 1521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rgSpecifiedColumnWidths[iColCount] = rgRowItemsWidth[i]; 1522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bMoreColumns) { 1526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fFinalColumnWidth = m_rgSpecifiedColumnWidths[iColCount]; 1527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iRowCount; i++) { 1528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!rgRowItems[i]) { 1529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItemsSpan[i]--; 1532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgRowItemsWidth[i] -= fFinalColumnWidth; 1533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iColCount++; 1535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurrentRowY = 0; 1539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutChild = 1540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 1541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild; 1542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = (CXFA_ContentLayoutItem*)pLayoutChild->m_pNextSibling) { 1543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!XFA_ItemLayoutProcessor_IsTakingSpace(pLayoutChild->m_pFormNode)) { 1544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 1545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutChild->m_pFormNode->GetClassID() == XFA_ELEMENT_Subform) { 1547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eSubformLayout = 1548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 1549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eSubformLayout == XFA_ATTRIBUTEENUM_Row || 1550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eSubformLayout == XFA_ATTRIBUTEENUM_Rl_row) { 1551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_RelocateTableRowCells( 1552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild, m_rgSpecifiedColumnWidths, eSubformLayout); 1553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.y = fCurrentRowY; 1556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 1557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x = 0; 1558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pLayoutChild->m_pFormNode->GetEnum(XFA_ATTRIBUTE_HAlign)) { 1560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Left: 1561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x = 0; 1563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Center: 1565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x = 1566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (fContentWidthLimit - pLayoutChild->m_sSize.x) / 2; 1567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Right: 1569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x = fContentWidthLimit - pLayoutChild->m_sSize.x; 1570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 1574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedWidth = 1575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild->m_sPos.x + pLayoutChild->m_sSize.x; 1576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentWidthLimit < XFA_LAYOUT_FLOAT_MAX && 1577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit > fChildSuppliedWidth) { 1578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildSuppliedWidth = fContentWidthLimit; 1579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedWidth < fChildSuppliedWidth) { 1581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fChildSuppliedWidth; 1582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurrentRowY += pLayoutChild->m_sSize.y; 1585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 1587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedHeight = fCurrentRowY; 1588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight < fChildSuppliedHeight) { 1589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fChildSuppliedHeight; 1590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 1593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth, 1594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight, 1595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight); 1596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SetCurrentComponentSize(fContainerWidth, fContainerHeight); 1597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic uint8_t XFA_ItemLayoutProcessor_HAlignEnumToInt( 1599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eHAlign) { 1600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eHAlign) { 1601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Center: 1602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 1; 1603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Right: 1604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 2; 1605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Left: 1606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 0; 1608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic void XFA_ItemLayoutProcessor_UpdatePendedItemLayout( 1611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor, 1612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutItem) { 1613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = 1614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 1615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eLayout) { 1616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Row: 1617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Rl_row: 1618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_RelocateTableRowCells( 1619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutItem, pProcessor->m_rgSpecifiedColumnWidths, eLayout); 1620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::IsAddNewRowForTrailer( 1626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pTrailerItem) { 1627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pTrailerItem) { 1628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fWidth = pTrailerItem->m_sSize.x; 1631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 1632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eLayout != XFA_ATTRIBUTEENUM_Tb && m_fWidthLimite > fWidth) { 1633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 1636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic void XFA_ItemLayoutProcessor_AddTrailerBeforeSplit( 1638ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor, 1639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fSplitPos, 1640ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pTrailerLayoutItem, 1641ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUseInherited = FALSE) { 1642ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pTrailerLayoutItem) { 1643ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1644ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1645ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeight = pTrailerLayoutItem->m_sSize.y; 1646ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseInherited) { 1647ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fNewSplitPos = 0; 1648ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fSplitPos - fHeight > XFA_LAYOUT_FLOAT_PERCISION) { 1649ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fNewSplitPos = pProcessor->FindSplitPos(fSplitPos - fHeight); 1650ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1651ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fNewSplitPos > XFA_LAYOUT_FLOAT_PERCISION) { 1652ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->SplitLayoutItem(fNewSplitPos); 1653ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1654ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1655ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1656ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_UpdatePendedItemLayout(pProcessor, 1657ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem); 1658ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 1659ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 1660ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fLeftInset = 0, fTopInset = 0, fRightInset = 0, fBottomInset = 0; 1661ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 1662ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fLeftInset = 1663ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); 1664ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTopInset = 1665ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 1666ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset = 1667ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); 1668ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fBottomInset = 1669ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 1670ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1671ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pProcessor->IsAddNewRowForTrailer(pTrailerLayoutItem)) { 1672ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.y = pProcessor->m_fLastRowY; 1673ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.x = pProcessor->m_fLastRowWidth; 1674ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->m_sSize.x += pTrailerLayoutItem->m_sSize.x; 1675ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->AddChild(pTrailerLayoutItem); 1676ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1677ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1678ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fNewSplitPos = 0; 1679ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fSplitPos - fHeight > XFA_LAYOUT_FLOAT_PERCISION) { 1680ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fNewSplitPos = pProcessor->FindSplitPos(fSplitPos - fHeight); 1681ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1682ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fNewSplitPos > XFA_LAYOUT_FLOAT_PERCISION) { 1683ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->SplitLayoutItem(fNewSplitPos); 1684ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.y = fNewSplitPos - fTopInset - fBottomInset; 1685ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1686ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.y = fSplitPos - fTopInset - fBottomInset; 1687ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1688ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pTrailerLayoutItem->m_pFormNode->GetEnum(XFA_ATTRIBUTE_HAlign)) { 1689ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Left: 1690ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1691ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.x = fLeftInset; 1692ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1693ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Right: 1694ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.x = pProcessor->m_pLayoutItem->m_sSize.x - 1695ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset - 1696ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sSize.x; 1697ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1698ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Center: 1699ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sPos.x = 1700ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (pProcessor->m_pLayoutItem->m_sSize.x - fLeftInset - fRightInset - 1701ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem->m_sSize.x) / 1702ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2; 1703ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1704ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1705ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->m_sSize.y += fHeight; 1706ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->AddChild(pTrailerLayoutItem); 1707ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 1708ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic void XFA_ItemLayoutProcessor_AddLeaderAfterSplit( 1709ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor, 1710ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLeaderLayoutItem) { 1711ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_UpdatePendedItemLayout(pProcessor, pLeaderLayoutItem); 1712ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 1713ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 1714ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fLeftInset = 0, fTopInset = 0, fRightInset = 0, fBottomInset = 0; 1715ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 1716ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fLeftInset = 1717ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); 1718ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTopInset = 1719ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 1720ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset = 1721ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); 1722ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fBottomInset = 1723ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 1724ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1725ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeight = pLeaderLayoutItem->m_sSize.y; 1726ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pChildItem = 1727ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pProcessor->m_pLayoutItem->m_pFirstChild; 1728ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem; 1729ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem = (CXFA_ContentLayoutItem*)pChildItem->m_pNextSibling) { 1730ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem->m_sPos.y += fHeight; 1731ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1732ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderLayoutItem->m_sPos.y = 0; 1733ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (pLeaderLayoutItem->m_pFormNode->GetEnum(XFA_ATTRIBUTE_HAlign)) { 1734ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Left: 1735ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 1736ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderLayoutItem->m_sPos.x = fLeftInset; 1737ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1738ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Right: 1739ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderLayoutItem->m_sPos.x = pProcessor->m_pLayoutItem->m_sSize.x - 1740ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset - pLeaderLayoutItem->m_sSize.x; 1741ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1742ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Center: 1743ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderLayoutItem->m_sPos.x = 1744ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (pProcessor->m_pLayoutItem->m_sSize.x - fLeftInset - fRightInset - 1745ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderLayoutItem->m_sSize.x) / 1746ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2; 1747ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 1748ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1749ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->m_sSize.y += fHeight; 1750ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->AddChild(pLeaderLayoutItem); 1751ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 1752ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic void XFA_ItemLayoutProcessor_AddPendingNode( 1753ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor, 1754ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pPendingNode, 1755ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bBreakPending) { 1756ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_rgPendingNodes.AddTail(pPendingNode); 1757ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_bBreakPending = bBreakPending; 1758ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1759ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic FX_FLOAT XFA_ItemLayoutProcessor_InsertPendingItems( 1760ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor, 1761ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pCurChildNode) { 1762ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTotalHeight = 0; 1763ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_rgPendingNodes.GetCount() < 1) { 1764ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fTotalHeight; 1765ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1766ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_pLayoutItem == NULL) { 1767ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem = 1768ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->CreateContentLayoutItem(pCurChildNode); 1769ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->m_sSize.Set(0, 0); 1770ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1771ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pProcessor->m_rgPendingNodes.GetCount() > 0) { 1772ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_POSITION pos = pProcessor->m_rgPendingNodes.GetHeadPosition(); 1773ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pPendingNode = 1774ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_Node*)pProcessor->m_rgPendingNodes.GetAt(pos); 1775ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_rgPendingNodes.RemoveAt(pos); 1776ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pPendingLayoutItem = NULL; 1777ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pPendingProcessor = 1778ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(pPendingNode, NULL); 1779ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 1780ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPendingProcessor->m_pPageMgrCreateItem = pProcessor->m_pPageMgrCreateItem; 1781ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 1782ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPendingProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX); 1783ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPendingLayoutItem = pPendingProcessor->HasLayoutItem() 1784ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? pPendingProcessor->ExtractLayoutItem() 1785ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : NULL; 1786ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pPendingProcessor; 1787ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pPendingLayoutItem) { 1788ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddLeaderAfterSplit(pProcessor, 1789ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPendingLayoutItem); 1790ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_bBreakPending) { 1791ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTotalHeight += pPendingLayoutItem->m_sSize.y; 1792ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1793ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1794ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1795ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fTotalHeight; 1796ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1797ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_FLOAT CXFA_ItemLayoutProcessor::InsertKeepLayoutItems() { 1798ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTotalHeight = 0; 1799ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_arrayKeepItems.GetSize()) { 1800ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem == NULL) { 1801ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 1802ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->m_sSize.Set(0, 0); 1803ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1804ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t iIndex = m_arrayKeepItems.GetSize() - 1; iIndex >= 0; 1805ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iIndex--) { 1806ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddLeaderAfterSplit(this, 1807ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrayKeepItems[iIndex]); 1808ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTotalHeight += m_arrayKeepItems[iIndex]->m_sSize.y; 1809ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1810ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrayKeepItems.RemoveAll(); 1811ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1812ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return fTotalHeight; 1813ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1814ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::ProcessKeepForSplite( 1815ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pParentProcessor, 1816ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pChildProcessor, 1817ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult eRetValue, 1818ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& rgCurLineLayoutItem, 1819ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowAvailWidth, 1820ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowHeight, 1821ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowY, 1822ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bAddedItemInRow, 1823ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bForceEndPage, 1824ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult& result) { 1825ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParentProcessor == NULL || pChildProcessor == NULL) { 1826ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1827ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1828ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParentProcessor->m_pCurChildNode->GetIntact() != 1829ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM_None || 1830ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann !pChildProcessor->m_bHasAvailHeight) { 1831ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ExistContainerKeep(pParentProcessor->m_pCurChildNode, TRUE)) { 1832ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildWidth, fChildHeight; 1833ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 1834ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*> keepLayoutItems; 1835ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParentProcessor->JudgePutNextPage(pParentProcessor->m_pLayoutItem, 1836ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildHeight, keepLayoutItems)) { 1837ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrayKeepItems.RemoveAll(); 1838ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t iIndex = 0; iIndex < keepLayoutItems.GetSize(); iIndex++) { 1839ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pItem = keepLayoutItems.GetAt(iIndex); 1840ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParentProcessor->m_pLayoutItem->RemoveChild(pItem); 1841ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY -= pItem->m_sSize.y; 1842ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_arrayKeepItems.Add(pItem); 1843ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1844ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 1845ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = TRUE; 1846ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann result = XFA_ItemLayoutProcessorResult_PageFullBreak; 1847ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 1848ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1849ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItem.Add(pChildProcessor->ExtractLayoutItem()); 1850ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 1851ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= fChildWidth; 1852ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowHeight < fChildHeight) { 1853ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = fChildHeight; 1854ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1855ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann result = eRetValue; 1856ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 1857ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1858ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1859ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1860ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1861ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::JudgePutNextPage( 1862ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pParentLayoutItem, 1863ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildHeight, 1864ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& pKeepItems) { 1865ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParentLayoutItem == NULL) { 1866ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1867ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1868ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fItemsHeight = 0; 1869ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pChildLayoutItem = 1870ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pParentLayoutItem->m_pFirstChild; 1871ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildLayoutItem; 1872ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildLayoutItem = 1873ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pChildLayoutItem->m_pNextSibling) { 1874ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ExistContainerKeep(pChildLayoutItem->m_pFormNode, FALSE)) { 1875ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pKeepItems.Add(pChildLayoutItem); 1876ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fItemsHeight += pChildLayoutItem->m_sSize.y; 1877ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1878ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pKeepItems.RemoveAll(); 1879ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fItemsHeight = 0; 1880ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1881ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1882ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fItemsHeight += fChildHeight; 1883ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pPageMgr->GetNextAvailContentHeight(fItemsHeight)) { 1884ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 1885ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1886ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 1887ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1888ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::ProcessUnUseBinds(CXFA_Node* pFormNode) { 1889ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pFormNode) { 1890ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1891ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1892ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> sIterator( 1893ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode); 1894ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; 1895ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode = sIterator.MoveToNext()) { 1896ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNode->IsContainerNode()) { 1897ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pBindNode = pNode->GetBindData(); 1898ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBindNode) { 1899ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBindNode->RemoveBindItem(pNode); 1900ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); 1901ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1902ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1903ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode->SetFlag(XFA_NODEFLAG_UnusedNode); 1904ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1905ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1906ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::ProcessUnUseOverFlow( 1907ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pLeaderNode, 1908ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pTrailerNode, 1909ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pTrailerItem, 1910ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode) { 1911ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ProcessUnUseBinds(pLeaderNode); 1912ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ProcessUnUseBinds(pTrailerNode); 1913ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode == NULL) { 1914ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 1915ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1916ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode->GetClassID() == XFA_ELEMENT_Overflow || 1917ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->GetClassID() == XFA_ELEMENT_Break) { 1918ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent); 1919ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1920ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLeaderNode && pFormNode) { 1921ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->RemoveChild(pLeaderNode); 1922ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1923ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTrailerNode && pFormNode) { 1924ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode->RemoveChild(pTrailerNode); 1925ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1926ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTrailerItem) { 1927ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ReleaseLayoutItem(pTrailerItem); 1928ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1929ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 1930ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic XFA_ItemLayoutProcessorResult XFA_ItemLayoutProcessor_InsertFlowedItem( 1931ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pThis, 1932ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor*& pProcessor, 1933ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize, 1934ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerHeightAutoSize, 1935ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContainerHeight, 1936ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eFlowStrategy, 1937ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t& uCurHAlignState, 1938ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*>(&rgCurLineLayoutItems)[3], 1939ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUseBreakControl, 1940ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAvailHeight, 1941ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fRealHeight, 1942ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowY, 1943ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentWidthLimit, 1944ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowAvailWidth, 1945ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowHeight, 1946ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bAddedItemInRow, 1947ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL& bForceEndPage, 1948ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext* pLayoutContext = NULL, 1949ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bNewRow = FALSE) { 1950ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bTakeSpace = 1951ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_IsTakingSpace(pProcessor->m_pFormNode); 1952ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t uHAlign = XFA_ItemLayoutProcessor_HAlignEnumToInt( 1953ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_pCurChildNode->GetEnum(XFA_ATTRIBUTE_HAlign)); 1954ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 1955ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uHAlign = 0; 1956ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1957ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb && uHAlign < uCurHAlignState) || 1958ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (eFlowStrategy == XFA_ATTRIBUTEENUM_Rl_tb && uHAlign > uCurHAlignState)) { 1959ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_RowFullBreak; 1960ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1961ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState = uHAlign; 1962ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bIsOwnSplite = 1963ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetIntact() == XFA_ATTRIBUTEENUM_None; 1964ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUseRealHeight = 1965ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bTakeSpace && bContainerHeightAutoSize && bIsOwnSplite && 1966ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetNodeItem(XFA_NODEITEM_Parent)->GetIntact() == 1967ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM_None; 1968ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bIsTransHeight = bTakeSpace; 1969ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bIsTransHeight && !bIsOwnSplite) { 1970ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRootForceTb = FALSE; 1971ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayoutStrategy = XFA_ItemLayoutProcessor_GetLayout( 1972ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode, bRootForceTb); 1973ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eLayoutStrategy == XFA_ATTRIBUTEENUM_Lr_tb || 1974ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eLayoutStrategy == XFA_ATTRIBUTEENUM_Rl_tb) { 1975ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsTransHeight = FALSE; 1976ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1977ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1978ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUseInherited = FALSE; 1979ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext layoutContext; 1980ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr) { 1981ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pOverflowNode = 1982ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_pPageMgr->QueryOverflow(pThis->m_pFormNode); 1983ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOverflowNode) { 1984ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann layoutContext.m_pOverflowNode = pOverflowNode; 1985ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann layoutContext.m_pOverflowProcessor = pThis; 1986ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutContext = &layoutContext; 1987ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1988ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 1989ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult eRetValue = XFA_ItemLayoutProcessorResult_Done; 1990ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bNewRow || 1991ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_ePreProcessRs == XFA_ItemLayoutProcessorResult_Done) { 1992ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eRetValue = pProcessor->DoLayout( 1993ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bTakeSpace ? bUseBreakControl : FALSE, 1994ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bUseRealHeight ? fRealHeight - fContentCurRowY : XFA_LAYOUT_FLOAT_MAX, 1995ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsTransHeight ? fRealHeight - fContentCurRowY : XFA_LAYOUT_FLOAT_MAX, 1996ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutContext); 1997ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_ePreProcessRs = eRetValue; 1998ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 1999ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eRetValue = pProcessor->m_ePreProcessRs; 2000ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_ePreProcessRs = XFA_ItemLayoutProcessorResult_Done; 2001ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2002ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->HasLayoutItem() == FALSE) { 2003ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return eRetValue; 2004ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2005ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildWidth, fChildHeight; 2006ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 2007ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseRealHeight && fRealHeight < XFA_LAYOUT_FLOAT_PERCISION) { 2008ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRealHeight = XFA_LAYOUT_FLOAT_MAX; 2009ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAvailHeight = XFA_LAYOUT_FLOAT_MAX; 2010ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2011ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bTakeSpace || 2012ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (fChildWidth <= fContentCurRowAvailWidth + XFA_LAYOUT_FLOAT_PERCISION) || 2013ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (fContentWidthLimit - fContentCurRowAvailWidth <= 2014ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_PERCISION)) { 2015ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node *pOverflowLeaderNode = NULL, *pOverflowTrailerNode = NULL, 2016ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann *pFormNode = NULL; 2017ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pTrailerLayoutItem = NULL; 2018ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bIsAddTrailerHeight = FALSE; 2019ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr && 2020ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetIntact() == XFA_ATTRIBUTEENUM_None) { 2021ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode = pThis->m_pPageMgr->QueryOverflow(pProcessor->m_pFormNode); 2022ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode == NULL && pLayoutContext && 2023ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutContext->m_pOverflowProcessor) { 2024ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode = pLayoutContext->m_pOverflowNode; 2025ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bUseInherited = TRUE; 2026ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2027ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode, 2028ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, FALSE, 2029ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FALSE)) { 2030ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowTrailerNode)) { 2031ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOverflowTrailerNode) { 2032ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pOverflowLeaderProcessor = 2033ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(pOverflowTrailerNode, NULL); 2034ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2035ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowLeaderProcessor->m_pPageMgrCreateItem = 2036ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem; 2037ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2038ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowLeaderProcessor->DoLayout(FALSE, XFA_LAYOUT_FLOAT_MAX); 2039ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem = 2040ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowLeaderProcessor->HasLayoutItem() 2041ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? pOverflowLeaderProcessor->ExtractLayoutItem() 2042ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : NULL; 2043ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pOverflowLeaderProcessor; 2044ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2045ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseInherited) { 2046ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsAddTrailerHeight = 2047ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->IsAddNewRowForTrailer(pTrailerLayoutItem); 2048ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2049ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsAddTrailerHeight = 2050ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->IsAddNewRowForTrailer(pTrailerLayoutItem); 2051ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2052ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bIsAddTrailerHeight) { 2053ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTrailerHeight = pTrailerLayoutItem->m_sSize.y; 2054ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildHeight += fTrailerHeight; 2055ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsAddTrailerHeight = TRUE; 2056ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2057ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2058ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2059ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2060ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bTakeSpace || 2061ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY + fChildHeight <= 2062ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAvailHeight + XFA_LAYOUT_FLOAT_PERCISION || 2063ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (!bContainerHeightAutoSize && 2064ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_fUsedSize + fAvailHeight + XFA_LAYOUT_FLOAT_PERCISION >= 2065ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight)) { 2066ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bTakeSpace || eRetValue == XFA_ItemLayoutProcessorResult_Done) { 2067ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_bUseInheriated) { 2068ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTrailerLayoutItem) { 2069ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddTrailerBeforeSplit( 2070ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor, fChildHeight, pTrailerLayoutItem); 2071ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2072ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) { 2073ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode(pProcessor, 2074ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowLeaderNode, FALSE); 2075ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2076ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_bUseInheriated = FALSE; 2077ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2078ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bIsAddTrailerHeight) { 2079ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildHeight -= pTrailerLayoutItem->m_sSize.y; 2080ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2081ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2082ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2083ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2084ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2085ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pChildLayoutItem = 2086ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ExtractLayoutItem(); 2087ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ExistContainerKeep(pProcessor->m_pFormNode, FALSE) && 2088ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetIntact() == XFA_ATTRIBUTEENUM_None) { 2089ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_arrayKeepItems.Add(pChildLayoutItem); 2090ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2091ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_arrayKeepItems.RemoveAll(); 2092ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2093ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[uHAlign].Add(pChildLayoutItem); 2094ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 2095ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bTakeSpace) { 2096ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= fChildWidth; 2097ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowHeight < fChildHeight) { 2098ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = fChildHeight; 2099ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eRetValue == XFA_ItemLayoutProcessorResult_PageFullBreak) { 2104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_bUseInheriated) { 2105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTrailerLayoutItem) { 2106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddTrailerBeforeSplit( 2107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor, fChildHeight, pTrailerLayoutItem); 2108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) { 2110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode( 2111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor, pOverflowLeaderNode, FALSE); 2112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_bUseInheriated = FALSE; 2114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bIsAddTrailerHeight) { 2116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildHeight -= pTrailerLayoutItem->m_sSize.y; 2117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem()); 2124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 2125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= fChildWidth; 2126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowHeight < fChildHeight) { 2127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = fChildHeight; 2128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return eRetValue; 2130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult eResult; 2133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->ProcessKeepForSplite( 2134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis, pProcessor, eRetValue, rgCurLineLayoutItems[uHAlign], 2135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth, fContentCurRowHeight, fContentCurRowY, 2136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow, bForceEndPage, eResult)) { 2137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return eResult; 2138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = TRUE; 2140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fSplitPos = 2141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->FindSplitPos(fAvailHeight - fContentCurRowY); 2142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fSplitPos > XFA_LAYOUT_FLOAT_PERCISION) { 2143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = 2144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 2145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eLayout == XFA_ATTRIBUTEENUM_Tb && 2146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eRetValue == XFA_ItemLayoutProcessorResult_Done) { 2147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem()); 2151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 2152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bTakeSpace) { 2153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= fChildWidth; 2154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowHeight < fChildHeight) { 2155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = fChildHeight; 2156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_PageFullBreak; 2159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node *pTempLeaderNode = NULL, *pTempTrailerNode = NULL; 2161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr && !pProcessor->m_bUseInheriated && 2162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eRetValue != XFA_ItemLayoutProcessorResult_PageFullBreak) { 2163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_pPageMgr->ProcessOverflow(pFormNode, pTempLeaderNode, 2164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTempTrailerNode, FALSE, TRUE); 2165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTrailerLayoutItem && bIsAddTrailerHeight) { 2167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddTrailerBeforeSplit( 2168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor, fSplitPos, pTrailerLayoutItem, bUseInherited); 2169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->SplitLayoutItem(fSplitPos); 2171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseInherited) { 2173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_bUseInheriated = TRUE; 2177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_pLayoutItem->m_pFirstChild && 2179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->m_pFirstChild->m_pNextSibling == 2180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NULL && 2181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pLayoutItem->m_pFirstChild->m_pFormNode->HasFlag( 2182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_NODEFLAG_LayoutGeneratedNode)) { 2183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) { 2188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode( 2189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor, pOverflowLeaderNode, FALSE); 2190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_pLayoutItem->m_pNextSibling) { 2194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 2195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem()); 2196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 2197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bTakeSpace) { 2198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= fChildWidth; 2199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowHeight < fChildHeight) { 2200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = fChildHeight; 2201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_PageFullBreak; 2205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (fContentCurRowY <= XFA_LAYOUT_FLOAT_PERCISION) { 2206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->GetCurrentComponentSize(fChildWidth, fChildHeight); 2207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_pPageMgr->GetNextAvailContentHeight(fChildHeight)) { 2208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node *pTempLeaderNode = NULL, *pTempTrailerNode = NULL; 2209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr) { 2210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode == NULL && pLayoutContext != NULL) { 2211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode = pLayoutContext->m_pOverflowProcessor->m_pFormNode; 2212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_pPageMgr->ProcessOverflow(pFormNode, pTempLeaderNode, 2214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTempTrailerNode, FALSE, TRUE); 2215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseInherited) { 2217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_bUseInheriated = TRUE; 2221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_PageFullBreak; 2223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[uHAlign].Add(pProcessor->ExtractLayoutItem()); 2225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bAddedItemInRow = TRUE; 2226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bTakeSpace) { 2227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= fChildWidth; 2228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowHeight < fChildHeight) { 2229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = fChildHeight; 2230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eRetValue == XFA_ItemLayoutProcessorResult_Done) { 2233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = FALSE; 2234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return eRetValue; 2236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayout = 2238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Layout); 2239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->m_pFormNode->GetIntact() == XFA_ATTRIBUTEENUM_None && 2240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eLayout == XFA_ATTRIBUTEENUM_Tb) { 2241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr) { 2242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode, 2243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, FALSE, 2244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TRUE); 2245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTrailerLayoutItem) { 2247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddTrailerBeforeSplit(pProcessor, fSplitPos, 2248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem); 2249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor->JudgeLeaderOrTrailerForOccur(pOverflowLeaderNode)) { 2251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode(pProcessor, 2252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowLeaderNode, FALSE); 2253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eRetValue == XFA_ItemLayoutProcessorResult_Done) { 2256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode == NULL && pLayoutContext != NULL) { 2257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFormNode = pLayoutContext->m_pOverflowProcessor->m_pFormNode; 2258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pThis->m_pPageMgr) { 2260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_pPageMgr->ProcessOverflow(pFormNode, pOverflowLeaderNode, 2261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, FALSE, 2262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TRUE); 2263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseInherited) { 2265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->ProcessUnUseOverFlow(pOverflowLeaderNode, 2266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pOverflowTrailerNode, 2267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTrailerLayoutItem, pFormNode); 2268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pThis->m_bUseInheriated = TRUE; 2269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_PageFullBreak; 2273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_RowFullBreak; 2277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannXFA_ItemLayoutProcessorResult CXFA_ItemLayoutProcessor::DoLayoutFlowedContainer( 2281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUseBreakControl, 2282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eFlowStrategy, 2283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeightLimit, 2284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fRealHeight, 2285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext* pContext, 2286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRootForceTb) { 2287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bHasAvailHeight = TRUE; 2288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContainerWidth = 0, fContainerHeight = 0; 2289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bBreakDone = FALSE; 2290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize = TRUE, bContainerHeightAutoSize = TRUE; 2291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bForceEndPage = FALSE; 2292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bIsManualBreak = FALSE; 2293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildPreprocessor) { 2294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor->m_ePreProcessRs = 2295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult_Done; 2296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerSpecfiedSize( 2298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode, fContainerWidth, fContainerHeight, bContainerWidthAutoSize, 2299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize); 2300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pContext && pContext->m_bCurColumnWidthAvaiable) { 2301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize = FALSE; 2302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth = pContext->m_fCurColumnWidth; 2303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bContainerHeightAutoSize) { 2305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight -= m_fUsedSize; 2306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bContainerHeightAutoSize) { 2308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParentNode = m_pFormNode->GetNodeItem(XFA_NODEITEM_Parent); 2309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bFocrTb = FALSE; 2310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParentNode && 2311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GetLayout(pParentNode, bFocrTb) == 2312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM_Row) { 2313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pChildContainer = m_pFormNode->GetNodeItem( 2314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_NODEITEM_FirstChild, XFA_OBJECTTYPE_ContainerNode); 2315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pChildContainer && 2316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildContainer->GetNodeItem(XFA_NODEITEM_NextSibling, 2317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_OBJECTTYPE_ContainerNode)) { 2318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight = 0; 2319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize = TRUE; 2320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pMarginNode = 2324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode->GetFirstChildByClass(XFA_ELEMENT_Margin); 2325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fLeftInset = 0, fTopInset = 0, fRightInset = 0, fBottomInset = 0; 2326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pMarginNode) { 2327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fLeftInset = 2328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); 2329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fTopInset = 2330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_TopInset).ToUnit(XFA_UNIT_Pt); 2331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRightInset = 2332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); 2333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fBottomInset = 2334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pMarginNode->GetMeasure(XFA_ATTRIBUTE_BottomInset).ToUnit(XFA_UNIT_Pt); 2335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentWidthLimit = 2337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX 2338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : fContainerWidth - fLeftInset - fRightInset; 2339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCalculatedWidth = 0, fContentCalculatedHeight = 0; 2340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAvailHeight = fHeightLimit - fTopInset - fBottomInset; 2341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fAvailHeight < 0) { 2342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bHasAvailHeight = FALSE; 2343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fRealHeight = fRealHeight - fTopInset - fBottomInset; 2345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCurRowY = 0; 2346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutChild = NULL; 2347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem != NULL) { 2348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done && 2349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eFlowStrategy != XFA_ATTRIBUTEENUM_Tb) { 2350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 2351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutNext = pLayoutChild; pLayoutNext; 2352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNext = (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) { 2353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutNext->m_sPos.y != pLayoutChild->m_sPos.y) { 2354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = pLayoutNext; 2355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutTempChild = 2359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 2360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutTempChild != pLayoutChild; 2361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutTempChild = 2362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutTempChild->m_pNextSibling) { 2363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutTempChild->m_pFormNode)) { 2365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildContentWidth = 2366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutTempChild->m_sPos.x + pLayoutTempChild->m_sSize.x; 2367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildContentHeight = 2368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutTempChild->m_sPos.y + pLayoutTempChild->m_sSize.y; 2369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedWidth < fChildContentWidth) { 2370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fChildContentWidth; 2371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight < fChildContentHeight) { 2373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fChildContentHeight; 2374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutChild) { 2378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY = pLayoutChild->m_sPos.y; 2379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY = fContentCalculatedHeight; 2381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY += InsertKeepLayoutItems(); 2384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_None) { 2385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GotoNextContainerNode( 2386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE); 2387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY += 2389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_InsertPendingItems(this, m_pFormNode); 2390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildPreprocessor && 2391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_Container) { 2392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ExistContainerKeep(m_pCurChildPreprocessor->GetFormNode(), FALSE)) { 2393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pKeepHeadNode = m_pCurChildNode; 2394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bIsProcessKeep = TRUE; 2395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nCurChildNodeStage = XFA_ItemLayoutProcessorStages_Keep; 2396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (m_nCurChildNodeStage != XFA_ItemLayoutProcessorStages_Done) { 2399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCurRowHeight = 0; 2400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCurRowAvailWidth = fContentWidthLimit; 2401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWidthLimite = fContentCurRowAvailWidth; 2402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*> rgCurLineLayoutItems[3]; 2403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t uCurHAlignState = 2404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb ? 0 : 2); 2405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutChild) { 2406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (CXFA_ContentLayoutItem* pLayoutNext = pLayoutChild; pLayoutNext; 2407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNext = (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) { 2408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutNext->m_pNextSibling == NULL && m_pCurChildPreprocessor && 2409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor->m_pFormNode == pLayoutNext->m_pFormNode) { 2410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNext->m_pNext = m_pCurChildPreprocessor->m_pLayoutItem; 2411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor->m_pLayoutItem = pLayoutNext; 2412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t uHAlign = XFA_ItemLayoutProcessor_HAlignEnumToInt( 2415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNext->m_pFormNode->GetEnum(XFA_ATTRIBUTE_HAlign)); 2416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[uHAlign].Add(pLayoutNext); 2417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eFlowStrategy == XFA_ATTRIBUTEENUM_Lr_tb) { 2418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (uHAlign > uCurHAlignState) { 2419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState = uHAlign; 2420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (uHAlign < uCurHAlignState) { 2422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState = uHAlign; 2423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace(pLayoutNext->m_pFormNode)) { 2425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pLayoutNext->m_sSize.y > fContentCurRowHeight) { 2426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight = pLayoutNext->m_sSize.y; 2427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowAvailWidth -= pLayoutNext->m_sSize.x; 2429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild == 2432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild) { 2433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->m_pFirstChild = NULL; 2434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutNext = 2436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)m_pLayoutItem->m_pFirstChild; 2437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (; pLayoutNext; 2438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNext = 2439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling) { 2440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((CXFA_ContentLayoutItem*)pLayoutNext->m_pNextSibling == 2441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild) { 2442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNext->m_pNextSibling = NULL; 2443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pLayoutNextTemp = 2448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutChild; 2449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pLayoutNextTemp) { 2450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNextTemp->m_pParent = NULL; 2451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pSaveLayoutNext = 2452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CXFA_ContentLayoutItem*)pLayoutNextTemp->m_pNextSibling; 2453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNextTemp->m_pNextSibling = NULL; 2454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutNextTemp = pSaveLayoutNext; 2455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLayoutChild = NULL; 2457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (m_pCurChildNode) { 2459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = NULL; 2460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bAddedItemInRow = FALSE; 2461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY += 2462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_InsertPendingItems(this, m_pFormNode); 2463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (m_nCurChildNodeStage) { 2464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Keep: 2465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_None: 2466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BreakBefore: { 2468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t iIndex = 0; iIndex < m_arrayKeepItems.GetSize(); 2469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iIndex++) { 2470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ContentLayoutItem* pItem = m_arrayKeepItems.GetAt(iIndex); 2471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->RemoveChild(pItem); 2472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight -= pItem->m_sSize.y; 2473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node *pLeaderNode = NULL, *pTrailerNode = NULL; 2475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCreatePage = FALSE; 2476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseBreakControl && m_pPageMgr && 2477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, TRUE, 2478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderNode, pTrailerNode, 2479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bCreatePage) && 2480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode->GetClassID() != XFA_ELEMENT_Form && bCreatePage) { 2481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (JudgeLeaderOrTrailerForOccur(pLeaderNode)) { 2482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode(this, pLeaderNode, TRUE); 2483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) { 2485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFormNode->GetNodeItem(XFA_NODEITEM_Parent)->GetClassID() == 2486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ELEMENT_Form && 2487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem == NULL) { 2488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode(this, pTrailerNode, 2489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TRUE); 2490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = 2492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(pTrailerNode, NULL); 2493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 2495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_InsertFlowedItem( 2497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann this, pProcessor, bContainerWidthAutoSize, 2498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState, rgCurLineLayoutItems, FALSE, 2500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, fContentCurRowY, 2501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, fContentCurRowAvailWidth, 2502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext); 2504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 2505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = NULL; 2506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GotoNextContainerNode( 2509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE); 2510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = TRUE; 2511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsManualBreak = TRUE; 2512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto SuspendAndCreateNewRow; 2513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 2515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BreakAfter: { 2516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult eResult; 2517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node *pLeaderNode = NULL, *pTrailerNode = NULL; 2518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCreatePage = FALSE; 2519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bUseBreakControl && m_pPageMgr && 2520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, FALSE, 2521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pLeaderNode, pTrailerNode, 2522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bCreatePage) && 2523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode->GetClassID() != XFA_ELEMENT_Form) { 2524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (JudgeLeaderOrTrailerForOccur(pTrailerNode)) { 2525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = 2526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(pTrailerNode, NULL); 2527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 2529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann eResult = XFA_ItemLayoutProcessor_InsertFlowedItem( 2531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann this, pProcessor, bContainerWidthAutoSize, 2532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState, rgCurLineLayoutItems, FALSE, 2534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, fContentCurRowY, 2535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, fContentCurRowAvailWidth, 2536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext); 2538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 2539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = NULL; 2540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bCreatePage) { 2542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (JudgeLeaderOrTrailerForOccur(pLeaderNode)) { 2543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculateRowChildPosition( 2544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems, eFlowStrategy, 2545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, bContainerWidthAutoSize, 2546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth, fContentCalculatedHeight, 2547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY, fContentCurRowHeight, fContentWidthLimit); 2548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems->RemoveAll(); 2549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_ItemLayoutProcessor* pProcessor = 2550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(pLeaderNode, NULL); 2551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 2553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_InsertFlowedItem( 2555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann this, pProcessor, bContainerWidthAutoSize, 2556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState, rgCurLineLayoutItems, FALSE, 2558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_LAYOUT_FLOAT_MAX, XFA_LAYOUT_FLOAT_MAX, fContentCurRowY, 2559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, fContentCurRowAvailWidth, 2560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext); 2562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 2563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = NULL; 2564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (JudgeLeaderOrTrailerForOccur(pLeaderNode)) { 2567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_AddPendingNode(this, pLeaderNode, TRUE); 2568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GotoNextContainerNode( 2571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE); 2572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bCreatePage) { 2573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = TRUE; 2574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsManualBreak = TRUE; 2575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_Done) { 2576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bBreakDone = TRUE; 2577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto SuspendAndCreateNewRow; 2580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 2582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BookendLeader: { 2583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pLeaderNode = NULL; 2584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildPreprocessor) { 2585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = m_pCurChildPreprocessor; 2586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor = NULL; 2587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_pPageMgr && 2588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pPageMgr->ProcessBookendLeaderOrTrailer( 2589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, TRUE, pLeaderNode)) { 2590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = new CXFA_ItemLayoutProcessor(pLeaderNode, m_pPageMgr); 2591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 2593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor) { 2596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_InsertFlowedItem( 2597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann this, pProcessor, bContainerWidthAutoSize, 2598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl, 2600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAvailHeight, fRealHeight, fContentCurRowY, 2601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, fContentCurRowAvailWidth, 2602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext) != XFA_ItemLayoutProcessorResult_Done) { 2604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto SuspendAndCreateNewRow; 2605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 2607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = NULL; 2608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 2611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_BookendTrailer: { 2612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pTrailerNode = NULL; 2613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildPreprocessor) { 2614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = m_pCurChildPreprocessor; 2615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor = NULL; 2616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_pPageMgr && 2617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pPageMgr->ProcessBookendLeaderOrTrailer( 2618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, FALSE, pTrailerNode)) { 2619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = new CXFA_ItemLayoutProcessor(pTrailerNode, m_pPageMgr); 2620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 2622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor) { 2625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_InsertFlowedItem( 2626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann this, pProcessor, bContainerWidthAutoSize, 2627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl, 2629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAvailHeight, fRealHeight, fContentCurRowY, 2630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, fContentCurRowAvailWidth, 2631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext) != XFA_ItemLayoutProcessorResult_Done) { 2633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto SuspendAndCreateNewRow; 2634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 2636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = NULL; 2637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2638ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } break; 2640ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Container: 2641ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pCurChildNode->IsContainerNode()); 2642ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildNode->GetClassID() == XFA_ELEMENT_Variables) { 2643ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2644ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2645ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCurRowY >= fHeightLimit + XFA_LAYOUT_FLOAT_PERCISION && 2646ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_IsTakingSpace(m_pCurChildNode)) { 2647ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = TRUE; 2648ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto SuspendAndCreateNewRow; 2649ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2650ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildNode->IsContainerNode()) { 2651ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bNewRow = FALSE; 2652ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pCurChildPreprocessor) { 2653ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = m_pCurChildPreprocessor; 2654ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor = NULL; 2655ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bNewRow = TRUE; 2656ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2657ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = 2658ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CXFA_ItemLayoutProcessor(m_pCurChildNode, m_pPageMgr); 2659ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_LAYOUTITEM_ProcessCACHE_ 2660ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor->m_pPageMgrCreateItem = m_pPageMgrCreateItem; 2661ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 2662ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2663ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_InsertPendingItems(pProcessor, 2664ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode); 2665ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessorResult rs = 2666ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_InsertFlowedItem( 2667ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann this, pProcessor, bContainerWidthAutoSize, 2668ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, fContainerHeight, eFlowStrategy, 2669ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uCurHAlignState, rgCurLineLayoutItems, bUseBreakControl, 2670ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAvailHeight, fRealHeight, fContentCurRowY, 2671ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, fContentCurRowAvailWidth, 2672ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowHeight, bAddedItemInRow, bForceEndPage, 2673ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pContext, bNewRow); 2674ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (rs) { 2675ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorResult_ManualBreak: 2676ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bIsManualBreak = TRUE; 2677ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorResult_PageFullBreak: 2678ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bForceEndPage = TRUE; 2679ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorResult_RowFullBreak: 2680ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann goto SuspendAndCreateNewRow; 2681ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorResult_Done: 2682ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 2683ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY += XFA_ItemLayoutProcessor_InsertPendingItems( 2684ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor, m_pCurChildNode); 2685ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pProcessor; 2686ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pProcessor = NULL; 2687ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2688ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2689ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2690ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ItemLayoutProcessorStages_Done: 2691ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2692ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 2693ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2694ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2695ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GotoNextContainerNode( 2696ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildNode, m_nCurChildNodeStage, m_pFormNode, TRUE); 2697ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bAddedItemInRow && eFlowStrategy == XFA_ATTRIBUTEENUM_Tb) { 2698ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2699ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2700ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 2701ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2702ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SuspendAndCreateNewRow: 2703ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pProcessor) { 2704ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pCurChildPreprocessor = pProcessor; 2705ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2706ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2707ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2708ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculateRowChildPosition(rgCurLineLayoutItems, eFlowStrategy, 2709ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bContainerHeightAutoSize, bContainerWidthAutoSize, 2710ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth, fContentCalculatedHeight, 2711ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY, fContentCurRowHeight, 2712ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit, bRootForceTb); 2713ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fWidthLimite = fContentCurRowAvailWidth; 2714ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bForceEndPage) { 2715ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 2716ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2717ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2718ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRetValue = 2719ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (m_nCurChildNodeStage == XFA_ItemLayoutProcessorStages_Done && 2720ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_rgPendingNodes.GetCount() == 0); 2721ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bBreakDone) { 2722ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRetValue = FALSE; 2723ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2724ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_CalculateContainerComponentSizeFromContentSize( 2725ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFormNode, bContainerWidthAutoSize, fContentCalculatedWidth, 2726ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerWidth, bContainerHeightAutoSize, fContentCalculatedHeight, 2727ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight); 2728ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContainerHeight >= XFA_LAYOUT_FLOAT_PERCISION || m_pLayoutItem || 2729ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRetValue) { 2730ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem == NULL) { 2731ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 2732ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2733ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContainerHeight < 0) { 2734ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContainerHeight = 0; 2735ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2736ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SetCurrentComponentSize(fContainerWidth, fContainerHeight); 2737ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bForceEndPage) { 2738ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fUsedSize = 0; 2739ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2740ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fUsedSize += m_pLayoutItem->m_sSize.y; 2741ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2742ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2743ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return bRetValue 2744ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? XFA_ItemLayoutProcessorResult_Done 2745ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : (bIsManualBreak ? XFA_ItemLayoutProcessorResult_ManualBreak 2746ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : XFA_ItemLayoutProcessorResult_PageFullBreak); 2747ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2748ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::CalculateRowChildPosition( 2749ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ArrayTemplate<CXFA_ContentLayoutItem*>(&rgCurLineLayoutItems)[3], 2750ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eFlowStrategy, 2751ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerHeightAutoSize, 2752ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bContainerWidthAutoSize, 2753ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCalculatedWidth, 2754ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCalculatedHeight, 2755ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fContentCurRowY, 2756ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentCurRowHeight, 2757ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fContentWidthLimit, 2758ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRootForceTb) { 2759ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nGroupLengths[3] = {0, 0, 0}; 2760ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fGroupWidths[3] = {0, 0, 0}; 2761ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nTotalLength = 0; 2762ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < 3; i++) { 2763ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nGroupLengths[i] = rgCurLineLayoutItems[i].GetSize(); 2764ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[i], j = 0; j < c; j++) { 2765ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nTotalLength++; 2766ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2767ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[i][j]->m_pFormNode)) { 2768ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fGroupWidths[i] += rgCurLineLayoutItems[i][j]->m_sSize.x; 2769ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2770ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2771ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2772ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!nTotalLength) { 2773ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 2774ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fNewHeight = fContentCurRowY; 2775ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight > fNewHeight) { 2776ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fNewHeight; 2777ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2778ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2779ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 2780ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2781ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem == NULL) { 2782ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 2783ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2784ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eFlowStrategy != XFA_ATTRIBUTEENUM_Rl_tb) { 2785ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurPos; 2786ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos = 0; 2787ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[0], j = 0; j < c; j++) { 2788ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRootForceTb) { 2789ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAbsoluteX, fAbsoluteY; 2790ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculatePositionedContainerPos(rgCurLineLayoutItems[0][j]->m_pFormNode, 2791ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_sSize.x, 2792ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_sSize.y, 2793ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX, fAbsoluteY); 2794ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_sPos.Set(fAbsoluteX, fAbsoluteY); 2795ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2796ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_sPos.Set(fCurPos, fContentCurRowY); 2797ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2798ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_pFormNode)) { 2799ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos += rgCurLineLayoutItems[0][j]->m_sSize.x; 2800ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2801ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2802ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(rgCurLineLayoutItems[0][j]); 2803ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth = fCurPos; 2804ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2805ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos = (fContentWidthLimit + fGroupWidths[0] - fGroupWidths[1] - 2806ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fGroupWidths[2]) / 2807ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2; 2808ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[1], j = 0; j < c; j++) { 2809ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRootForceTb) { 2810ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAbsoluteX, fAbsoluteY; 2811ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculatePositionedContainerPos(rgCurLineLayoutItems[1][j]->m_pFormNode, 2812ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_sSize.x, 2813ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_sSize.y, 2814ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX, fAbsoluteY); 2815ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_sPos.Set(fAbsoluteX, fAbsoluteY); 2816ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2817ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_sPos.Set(fCurPos, fContentCurRowY); 2818ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2819ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_pFormNode)) { 2820ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos += rgCurLineLayoutItems[1][j]->m_sSize.x; 2821ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2822ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2823ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(rgCurLineLayoutItems[1][j]); 2824ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth = fCurPos; 2825ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2826ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos = fContentWidthLimit - fGroupWidths[2]; 2827ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[2], j = 0; j < c; j++) { 2828ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bRootForceTb) { 2829ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAbsoluteX, fAbsoluteY; 2830ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalculatePositionedContainerPos(rgCurLineLayoutItems[2][j]->m_pFormNode, 2831ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_sSize.x, 2832ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_sSize.y, 2833ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX, fAbsoluteY); 2834ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_sPos.Set(fAbsoluteX, fAbsoluteY); 2835ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2836ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_sPos.Set(fCurPos, fContentCurRowY); 2837ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2838ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_pFormNode)) { 2839ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos += rgCurLineLayoutItems[2][j]->m_sSize.x; 2840ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2841ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2842ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(rgCurLineLayoutItems[2][j]); 2843ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth = fCurPos; 2844ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2845ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 2846ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fCurPos; 2847ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos = fGroupWidths[0]; 2848ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[0], j = 0; j < c; j++) { 2849ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2850ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_pFormNode)) { 2851ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos -= rgCurLineLayoutItems[0][j]->m_sSize.x; 2852ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2853ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[0][j]->m_sPos.Set(fCurPos, fContentCurRowY); 2854ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(rgCurLineLayoutItems[0][j]); 2855ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth = fCurPos; 2856ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2857ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos = (fContentWidthLimit + fGroupWidths[0] + fGroupWidths[1] - 2858ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fGroupWidths[2]) / 2859ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2; 2860ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[1], j = 0; j < c; j++) { 2861ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2862ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_pFormNode)) { 2863ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos -= rgCurLineLayoutItems[1][j]->m_sSize.x; 2864ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2865ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[1][j]->m_sPos.Set(fCurPos, fContentCurRowY); 2866ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(rgCurLineLayoutItems[1][j]); 2867ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth = fCurPos; 2868ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2869ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos = fContentWidthLimit; 2870ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t c = nGroupLengths[2], j = 0; j < c; j++) { 2871ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (XFA_ItemLayoutProcessor_IsTakingSpace( 2872ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_pFormNode)) { 2873ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fCurPos -= rgCurLineLayoutItems[2][j]->m_sSize.x; 2874ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2875ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rgCurLineLayoutItems[2][j]->m_sPos.Set(fCurPos, fContentCurRowY); 2876ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->AddChild(rgCurLineLayoutItems[2][j]); 2877ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowWidth = fCurPos; 2878ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2879ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2880ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fLastRowY = fContentCurRowY; 2881ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCurRowY += fContentCurRowHeight; 2882ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerWidthAutoSize) { 2883ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedWidth = fGroupWidths[0]; 2884ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentWidthLimit < XFA_LAYOUT_FLOAT_MAX && 2885ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentWidthLimit > fChildSuppliedWidth) { 2886ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fChildSuppliedWidth = fContentWidthLimit; 2887ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2888ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedWidth < fChildSuppliedWidth) { 2889ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedWidth = fChildSuppliedWidth; 2890ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2891ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2892ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bContainerHeightAutoSize) { 2893ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fChildSuppliedHeight = fContentCurRowY; 2894ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (fContentCalculatedHeight < fChildSuppliedHeight) { 2895ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fContentCalculatedHeight = fChildSuppliedHeight; 2896ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2897ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2898ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 2899ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2900ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* CXFA_ItemLayoutProcessor::GetSubformSetParent( 2901ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pSubformSet) { 2902ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pSubformSet && pSubformSet->GetClassID() == XFA_ELEMENT_SubformSet) { 2903ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pParent = pSubformSet->GetNodeItem(XFA_NODEITEM_Parent); 2904ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (pParent) { 2905ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pParent->GetClassID() != XFA_ELEMENT_SubformSet) { 2906ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pParent; 2907ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2908ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent); 2909ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2910ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2911ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pSubformSet; 2912ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2913ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::DoLayoutField() { 2914ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pLayoutItem != NULL) { 2915ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 2916ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2917ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pCurChildNode == XFA_LAYOUT_INVALIDNODE); 2918ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem = CreateContentLayoutItem(m_pFormNode); 2919ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pLayoutItem) { 2920ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 2921ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2922ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Document* pDocument = m_pFormNode->GetDocument(); 2923ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_Notify* pNotify = pDocument->GetParser()->GetNotify(); 2924ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeight = -1; 2925ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fWidth = -1; 2926ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNotify->StartFieldDrawLayout(m_pFormNode, fWidth, fHeight); 2927ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nRotate = 2928ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_round(m_pFormNode->GetMeasure(XFA_ATTRIBUTE_Rotate).GetValue()); 2929ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann nRotate = XFA_MapRotation(nRotate); 2930ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nRotate == 90 || nRotate == 270) { 2931ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fTmp = fWidth; 2932ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fWidth = fHeight; 2933ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHeight = fTmp; 2934ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2935ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann SetCurrentComponentSize(fWidth, fHeight); 2936ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2937ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannXFA_ItemLayoutProcessorResult CXFA_ItemLayoutProcessor::DoLayout( 2938ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bUseBreakControl, 2939ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeightLimit, 2940ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fRealHeight, 2941ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_LayoutContext* pContext) { 2942ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ELEMENT eClassID = m_pFormNode->GetClassID(); 2943ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eClassID) { 2944ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Subform: 2945ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Area: 2946ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_ExclGroup: 2947ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_SubformSet: { 2948ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bRootForceTb = FALSE; 2949ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pLayoutNode = GetSubformSetParent(m_pFormNode); 2950ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ATTRIBUTEENUM eLayoutStrategy = 2951ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann XFA_ItemLayoutProcessor_GetLayout(pLayoutNode, bRootForceTb); 2952ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (eLayoutStrategy) { 2953ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Tb: 2954ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Lr_tb: 2955ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Rl_tb: 2956ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return DoLayoutFlowedContainer(bUseBreakControl, eLayoutStrategy, 2957ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHeightLimit, fRealHeight, pContext, 2958ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bRootForceTb); 2959ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Position: 2960ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Row: 2961ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Rl_row: 2962ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 2963ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DoLayoutPositionedContainer(pContext); 2964ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nCurChildNodeStage = XFA_ItemLayoutProcessorStages_Done; 2965ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2966ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ATTRIBUTEENUM_Table: 2967ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DoLayoutTableContainer(pLayoutNode); 2968ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nCurChildNodeStage = XFA_ItemLayoutProcessorStages_Done; 2969ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2970ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2971ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2972ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Draw: 2973ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_Field: 2974ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann DoLayoutField(); 2975ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nCurChildNodeStage = XFA_ItemLayoutProcessorStages_Done; 2976ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2977ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case XFA_ELEMENT_ContentArea: 2978ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2979ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 2980ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return XFA_ItemLayoutProcessorResult_Done; 2981ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 2982ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2983ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::GetCurrentComponentPos(FX_FLOAT& fAbsoluteX, 2984ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fAbsoluteY) { 2985ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pLayoutItem); 2986ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteX = m_pLayoutItem->m_sPos.x; 2987ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fAbsoluteY = m_pLayoutItem->m_sPos.y; 2988ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2989ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::GetCurrentComponentSize(FX_FLOAT& fWidth, 2990ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT& fHeight) { 2991ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pLayoutItem); 2992ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fWidth = m_pLayoutItem->m_sSize.x; 2993ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fHeight = m_pLayoutItem->m_sSize.y; 2994ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 2995ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::SetCurrentComponentPos(FX_FLOAT fAbsoluteX, 2996ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fAbsoluteY) { 2997ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pLayoutItem); 2998ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->m_sPos.Set(fAbsoluteX, fAbsoluteY); 2999ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 3000ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_ItemLayoutProcessor::SetCurrentComponentSize(FX_FLOAT fWidth, 3001ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fHeight) { 3002ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(m_pLayoutItem); 3003ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pLayoutItem->m_sSize.Set(fWidth, fHeight); 3004ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 3005ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_ItemLayoutProcessor::JudgeLeaderOrTrailerForOccur( 3006ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pFormNode) { 3007ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pFormNode == NULL) { 3008ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 3009ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 3010ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Node* pTemplate = pFormNode->GetTemplateNode(); 3011ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pTemplate) { 3012ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pTemplate = pFormNode; 3013ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 3014ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_Occur NodeOccur = pTemplate->GetFirstChildByClass(XFA_ELEMENT_Occur); 3015ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iMax = NodeOccur.GetMax(); 3016ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iMax > -1) { 3017ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = 3018ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int32_t)(uintptr_t)m_PendingNodesCount.GetValueAt(pTemplate); 3019ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (iCount >= iMax) { 3020ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 3021ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 3022ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iCount++; 3023ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_PendingNodesCount.SetAt(pTemplate, (void*)(uintptr_t)(iCount)); 3024ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 3025ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 3026ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 3027ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 3028