Index: xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp |
diff --git a/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp b/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp |
index 08ce54f844f9d32e0922a5d34f95b8b21a2cca65..374d1dc44e7c0c06a24260b101bf1add022d66c1 100644 |
--- a/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp |
+++ b/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp |
@@ -22,6 +22,206 @@ |
#include "xfa/fxfa/parser/xfa_script_imp.h" |
#include "xfa/fxfa/parser/xfa_utils.h" |
+namespace { |
+ |
+class PageSetContainerLayoutItem { |
+ public: |
+ static inline CXFA_ContainerLayoutItem* GetFirstChild( |
+ CXFA_ContainerLayoutItem* pLayoutItem) { |
+ if (pLayoutItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageSet) |
+ return nullptr; |
+ |
+ CXFA_ContainerLayoutItem* pChildItem = |
+ static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pFirstChild); |
+ while (pChildItem && |
+ pChildItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageSet) { |
+ pChildItem = |
+ static_cast<CXFA_ContainerLayoutItem*>(pChildItem->m_pNextSibling); |
+ } |
+ return pChildItem; |
+ } |
+ |
+ static inline CXFA_ContainerLayoutItem* GetNextSibling( |
+ CXFA_ContainerLayoutItem* pLayoutItem) { |
+ CXFA_ContainerLayoutItem* pChildItem = |
+ static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pNextSibling); |
+ while (pChildItem && |
+ pChildItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageSet) { |
+ pChildItem = |
+ static_cast<CXFA_ContainerLayoutItem*>(pChildItem->m_pNextSibling); |
+ } |
+ return pChildItem; |
+ } |
+ |
+ static inline CXFA_ContainerLayoutItem* GetParent( |
+ CXFA_ContainerLayoutItem* pLayoutItem) { |
+ return static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pParent); |
+ } |
+}; |
+ |
+uint32_t GetRelevant(CXFA_Node* pFormItem, uint32_t dwParentRelvant) { |
+ uint32_t dwRelevant = XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable; |
+ CFX_WideStringC wsRelevant; |
+ if (pFormItem->TryCData(XFA_ATTRIBUTE_Relevant, wsRelevant)) { |
+ if (wsRelevant == FX_WSTRC(L"+print") || wsRelevant == FX_WSTRC(L"print")) |
+ dwRelevant &= ~XFA_WidgetStatus_Viewable; |
+ else if (wsRelevant == FX_WSTRC(L"-print")) |
+ dwRelevant &= ~XFA_WidgetStatus_Printable; |
+ } |
+ if (!(dwParentRelvant & XFA_WidgetStatus_Viewable) && |
+ (dwRelevant != XFA_WidgetStatus_Viewable)) { |
+ dwRelevant &= ~XFA_WidgetStatus_Viewable; |
+ } |
+ if (!(dwParentRelvant & XFA_WidgetStatus_Printable) && |
+ (dwRelevant != XFA_WidgetStatus_Printable)) { |
+ dwRelevant &= ~XFA_WidgetStatus_Printable; |
+ } |
+ return dwRelevant; |
+} |
+ |
+void SyncContainer(CXFA_FFNotify* pNotify, |
+ CXFA_LayoutProcessor* pDocLayout, |
+ CXFA_LayoutItem* pContainerItem, |
+ uint32_t dwRelevant, |
+ FX_BOOL bVisible, |
+ int32_t nPageIndex) { |
+ FX_BOOL bVisibleItem = FALSE; |
+ uint32_t dwStatus = 0; |
+ uint32_t dwRelevantContainer = 0; |
+ if (bVisible) { |
+ XFA_ATTRIBUTEENUM eAttributeValue = |
+ pContainerItem->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Presence); |
+ if (eAttributeValue == XFA_ATTRIBUTEENUM_Visible || |
+ eAttributeValue == XFA_ATTRIBUTEENUM_Unknown) { |
+ bVisibleItem = TRUE; |
+ } |
+ dwRelevantContainer = GetRelevant(pContainerItem->m_pFormNode, dwRelevant); |
+ dwStatus = |
+ (bVisibleItem ? XFA_WidgetStatus_Visible : 0) | dwRelevantContainer; |
+ } |
+ pNotify->OnLayoutItemAdded(pDocLayout, pContainerItem, nPageIndex, dwStatus); |
+ for (CXFA_LayoutItem* pChild = pContainerItem->m_pFirstChild; pChild; |
+ pChild = pChild->m_pNextSibling) { |
+ if (pChild->IsContentLayoutItem()) { |
+ SyncContainer(pNotify, pDocLayout, pChild, dwRelevantContainer, |
+ bVisibleItem, nPageIndex); |
+ } |
+ } |
+} |
+ |
+void ReorderLayoutItemToTail(CXFA_ContainerLayoutItem* pLayoutItem) { |
+ CXFA_ContainerLayoutItem* pParentLayoutItem = |
+ (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; |
+ if (!pParentLayoutItem) |
+ return; |
+ |
+ pParentLayoutItem->RemoveChild(pLayoutItem); |
+ pParentLayoutItem->AddChild(pLayoutItem); |
+} |
+ |
+void RemoveLayoutItem(CXFA_ContainerLayoutItem* pLayoutItem) { |
+ CXFA_ContainerLayoutItem* pParentLayoutItem = |
+ (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; |
+ if (!pParentLayoutItem) |
+ return; |
+ |
+ pParentLayoutItem->RemoveChild(pLayoutItem); |
+} |
+ |
+CXFA_Node* ResolveBreakTarget(CXFA_Node* pPageSetRoot, |
+ FX_BOOL bNewExprStyle, |
+ CFX_WideStringC& wsTargetExpr) { |
+ CXFA_Document* pDocument = pPageSetRoot->GetDocument(); |
+ if (wsTargetExpr.IsEmpty()) |
+ return nullptr; |
+ |
+ CFX_WideString wsTargetAll(wsTargetExpr); |
+ wsTargetAll.TrimLeft(); |
+ wsTargetAll.TrimRight(); |
+ int32_t iSpliteIndex = 0; |
+ FX_BOOL bTargetAllFind = TRUE; |
+ while (iSpliteIndex != -1) { |
+ CFX_WideString wsTargetExpr; |
+ int32_t iSpliteNextIndex = 0; |
+ if (!bTargetAllFind) { |
+ iSpliteNextIndex = wsTargetAll.Find(' ', iSpliteIndex); |
+ wsTargetExpr = |
+ wsTargetAll.Mid(iSpliteIndex, iSpliteNextIndex - iSpliteIndex); |
+ } else { |
+ wsTargetExpr = wsTargetAll; |
+ } |
+ if (wsTargetExpr.IsEmpty()) |
+ return nullptr; |
+ |
+ bTargetAllFind = FALSE; |
+ if (wsTargetExpr.GetAt(0) == '#') { |
+ CXFA_Node* pNode = pDocument->GetNodeByID( |
+ ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Template)), |
+ wsTargetExpr.Mid(1).AsStringC()); |
+ if (pNode) |
+ return pNode; |
+ } else if (bNewExprStyle) { |
+ CFX_WideString wsProcessedTarget = wsTargetExpr; |
+ if (wsTargetExpr.Left(4) == FX_WSTRC(L"som(") && |
+ wsTargetExpr.Right(1) == FX_WSTRC(L")")) { |
+ wsProcessedTarget = wsTargetExpr.Mid(4, wsTargetExpr.GetLength() - 5); |
+ } |
+ XFA_RESOLVENODE_RS rs; |
+ int32_t iCount = pDocument->GetScriptContext()->ResolveObjects( |
+ pPageSetRoot, wsProcessedTarget.AsStringC(), rs, |
+ XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | |
+ XFA_RESOLVENODE_Attributes | XFA_RESOLVENODE_Siblings | |
+ XFA_RESOLVENODE_Parent); |
+ if (iCount > 0 && rs.nodes[0]->IsNode()) |
+ return rs.nodes[0]->AsNode(); |
+ } |
+ iSpliteIndex = iSpliteNextIndex; |
+ } |
+ return nullptr; |
+} |
+ |
+void SetLayoutGeneratedNodeFlag(CXFA_Node* pNode) { |
+ pNode->SetFlag(XFA_NODEFLAG_LayoutGeneratedNode, false); |
+ pNode->ClearFlag(XFA_NODEFLAG_UnusedNode); |
+} |
+ |
+FX_BOOL CheckContentAreaNotUsed( |
+ CXFA_ContainerLayoutItem* pPageAreaLayoutItem, |
+ CXFA_Node* pContentArea, |
+ CXFA_ContainerLayoutItem*& pContentAreaLayoutItem) { |
+ for (CXFA_ContainerLayoutItem* pLayoutItem = |
+ (CXFA_ContainerLayoutItem*)pPageAreaLayoutItem->m_pFirstChild; |
+ pLayoutItem; |
+ pLayoutItem = (CXFA_ContainerLayoutItem*)pLayoutItem->m_pNextSibling) { |
+ if (pLayoutItem->m_pFormNode == pContentArea) { |
+ if (pLayoutItem->m_pFirstChild == NULL) { |
+ pContentAreaLayoutItem = pLayoutItem; |
+ return TRUE; |
+ } |
+ return FALSE; |
+ } |
+ } |
+ return TRUE; |
+} |
+ |
+void SyncRemoveLayoutItem(CXFA_LayoutItem* pParentLayoutItem, |
+ CXFA_FFNotify* pNotify, |
+ CXFA_LayoutProcessor* pDocLayout) { |
+ CXFA_LayoutItem* pNextLayoutItem; |
+ CXFA_LayoutItem* pCurLayoutItem = pParentLayoutItem->m_pFirstChild; |
+ while (pCurLayoutItem) { |
+ pNextLayoutItem = pCurLayoutItem->m_pNextSibling; |
+ if (pCurLayoutItem->m_pFirstChild) |
+ SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout); |
+ |
+ pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem); |
+ delete pCurLayoutItem; |
+ pCurLayoutItem = pNextLayoutItem; |
+ } |
+} |
+ |
+} // namespace |
+ |
CXFA_LayoutPageMgr::CXFA_LayoutPageMgr(CXFA_LayoutProcessor* pLayoutProcessor) |
: m_pLayoutProcessor(pLayoutProcessor), |
m_pTemplatePageSetRoot(nullptr), |
@@ -179,40 +379,22 @@ FX_BOOL CXFA_LayoutPageMgr::AppendNewPage(FX_BOOL bFirstTemPage) { |
} |
return !bFirstTemPage || m_pCurrentContainerRecord; |
} |
-static void XFA_LayoutItemMgr_ReorderLayoutItemToTail( |
- CXFA_ContainerLayoutItem* pLayoutItem) { |
- CXFA_ContainerLayoutItem* pParentLayoutItem = |
- (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; |
- if (!pParentLayoutItem) { |
- return; |
- } |
- pParentLayoutItem->RemoveChild(pLayoutItem); |
- pParentLayoutItem->AddChild(pLayoutItem); |
-} |
-static void XFA_LayoutItemMgr_RemoveLayoutItem( |
- CXFA_ContainerLayoutItem* pLayoutItem) { |
- CXFA_ContainerLayoutItem* pParentLayoutItem = |
- (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; |
- if (!pParentLayoutItem) { |
- return; |
- } |
- pParentLayoutItem->RemoveChild(pLayoutItem); |
-} |
+ |
void CXFA_LayoutPageMgr::RemoveLayoutRecord(CXFA_ContainerRecord* pNewRecord, |
CXFA_ContainerRecord* pPrevRecord) { |
if (!pNewRecord || !pPrevRecord) { |
return; |
} |
if (pNewRecord->pCurPageSet != pPrevRecord->pCurPageSet) { |
- XFA_LayoutItemMgr_RemoveLayoutItem(pNewRecord->pCurPageSet); |
+ RemoveLayoutItem(pNewRecord->pCurPageSet); |
return; |
} |
if (pNewRecord->pCurPageArea != pPrevRecord->pCurPageArea) { |
- XFA_LayoutItemMgr_RemoveLayoutItem(pNewRecord->pCurPageArea); |
+ RemoveLayoutItem(pNewRecord->pCurPageArea); |
return; |
} |
if (pNewRecord->pCurContentArea != pPrevRecord->pCurContentArea) { |
- XFA_LayoutItemMgr_RemoveLayoutItem(pNewRecord->pCurContentArea); |
+ RemoveLayoutItem(pNewRecord->pCurContentArea); |
return; |
} |
} |
@@ -223,15 +405,15 @@ void CXFA_LayoutPageMgr::ReorderPendingLayoutRecordToTail( |
return; |
} |
if (pNewRecord->pCurPageSet != pPrevRecord->pCurPageSet) { |
- XFA_LayoutItemMgr_ReorderLayoutItemToTail(pNewRecord->pCurPageSet); |
+ ReorderLayoutItemToTail(pNewRecord->pCurPageSet); |
return; |
} |
if (pNewRecord->pCurPageArea != pPrevRecord->pCurPageArea) { |
- XFA_LayoutItemMgr_ReorderLayoutItemToTail(pNewRecord->pCurPageArea); |
+ ReorderLayoutItemToTail(pNewRecord->pCurPageArea); |
return; |
} |
if (pNewRecord->pCurContentArea != pPrevRecord->pCurContentArea) { |
- XFA_LayoutItemMgr_ReorderLayoutItemToTail(pNewRecord->pCurContentArea); |
+ ReorderLayoutItemToTail(pNewRecord->pCurContentArea); |
return; |
} |
} |
@@ -267,59 +449,6 @@ FX_FLOAT CXFA_LayoutPageMgr::GetAvailHeight() { |
} |
return XFA_LAYOUT_FLOAT_MAX; |
} |
-static CXFA_Node* XFA_ResolveBreakTarget(CXFA_Node* pPageSetRoot, |
- FX_BOOL bNewExprStyle, |
- CFX_WideStringC& wsTargetExpr) { |
- CXFA_Document* pDocument = pPageSetRoot->GetDocument(); |
- if (wsTargetExpr.IsEmpty()) { |
- return NULL; |
- } |
- CFX_WideString wsTargetAll(wsTargetExpr); |
- wsTargetAll.TrimLeft(); |
- wsTargetAll.TrimRight(); |
- int32_t iSpliteIndex = 0; |
- FX_BOOL bTargetAllFind = TRUE; |
- while (iSpliteIndex != -1) { |
- CFX_WideString wsTargetExpr; |
- int32_t iSpliteNextIndex = 0; |
- if (!bTargetAllFind) { |
- iSpliteNextIndex = wsTargetAll.Find(' ', iSpliteIndex); |
- wsTargetExpr = |
- wsTargetAll.Mid(iSpliteIndex, iSpliteNextIndex - iSpliteIndex); |
- } else { |
- wsTargetExpr = wsTargetAll; |
- } |
- if (wsTargetExpr.IsEmpty()) { |
- return NULL; |
- } |
- bTargetAllFind = FALSE; |
- if (wsTargetExpr.GetAt(0) == '#') { |
- CXFA_Node* pNode = pDocument->GetNodeByID( |
- ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Template)), |
- wsTargetExpr.Mid(1).AsStringC()); |
- if (pNode) { |
- return pNode; |
- } |
- } else if (bNewExprStyle) { |
- CFX_WideString wsProcessedTarget = wsTargetExpr; |
- if (wsTargetExpr.Left(4) == FX_WSTRC(L"som(") && |
- wsTargetExpr.Right(1) == FX_WSTRC(L")")) { |
- wsProcessedTarget = wsTargetExpr.Mid(4, wsTargetExpr.GetLength() - 5); |
- } |
- XFA_RESOLVENODE_RS rs; |
- int32_t iCount = pDocument->GetScriptContext()->ResolveObjects( |
- pPageSetRoot, wsProcessedTarget.AsStringC(), rs, |
- XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | |
- XFA_RESOLVENODE_Attributes | XFA_RESOLVENODE_Siblings | |
- XFA_RESOLVENODE_Parent); |
- if (iCount > 0 && rs.nodes[0]->IsNode()) { |
- return rs.nodes[0]->AsNode(); |
- } |
- } |
- iSpliteIndex = iSpliteNextIndex; |
- } |
- return NULL; |
-} |
FX_BOOL XFA_LayoutPageMgr_RunBreakTestScript(CXFA_Node* pTestScript) { |
CFX_WideString wsExpression; |
@@ -434,43 +563,14 @@ void CXFA_LayoutPageMgr::AddContentAreaLayoutItem( |
pNewRecord->pCurPageArea->AddChild(pNewContentAreaLayoutItem); |
pNewRecord->pCurContentArea = pNewContentAreaLayoutItem; |
} |
-class CXFA_TraverseStrategy_PageSetContainerLayoutItem { |
- public: |
- static inline CXFA_ContainerLayoutItem* GetFirstChild( |
- CXFA_ContainerLayoutItem* pLayoutItem) { |
- if (pLayoutItem->m_pFormNode->GetClassID() == XFA_ELEMENT_PageSet) { |
- CXFA_ContainerLayoutItem* pChildItem = |
- (CXFA_ContainerLayoutItem*)pLayoutItem->m_pFirstChild; |
- while (pChildItem && |
- pChildItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageSet) { |
- pChildItem = (CXFA_ContainerLayoutItem*)pChildItem->m_pNextSibling; |
- } |
- return pChildItem; |
- } |
- return NULL; |
- } |
- static inline CXFA_ContainerLayoutItem* GetNextSibling( |
- CXFA_ContainerLayoutItem* pLayoutItem) { |
- CXFA_ContainerLayoutItem* pChildItem = |
- (CXFA_ContainerLayoutItem*)pLayoutItem->m_pNextSibling; |
- while (pChildItem && |
- pChildItem->m_pFormNode->GetClassID() != XFA_ELEMENT_PageSet) { |
- pChildItem = (CXFA_ContainerLayoutItem*)pChildItem->m_pNextSibling; |
- } |
- return pChildItem; |
- } |
- static inline CXFA_ContainerLayoutItem* GetParent( |
- CXFA_ContainerLayoutItem* pLayoutItem) { |
- return (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent; |
- } |
-}; |
+ |
void CXFA_LayoutPageMgr::FinishPaginatedPageSets() { |
CXFA_ContainerLayoutItem* pRootPageSetLayoutItem = m_pPageSetLayoutItemRoot; |
for (; pRootPageSetLayoutItem; |
pRootPageSetLayoutItem = |
(CXFA_ContainerLayoutItem*)pRootPageSetLayoutItem->m_pNextSibling) { |
CXFA_NodeIteratorTemplate<CXFA_ContainerLayoutItem, |
- CXFA_TraverseStrategy_PageSetContainerLayoutItem> |
+ PageSetContainerLayoutItem> |
sIterator(pRootPageSetLayoutItem); |
for (CXFA_ContainerLayoutItem* pPageSetLayoutItem = sIterator.GetCurrent(); |
pPageSetLayoutItem; pPageSetLayoutItem = sIterator.MoveToNext()) { |
@@ -647,25 +747,11 @@ FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_ELEMENT eBreakType, |
if (pTarget && pTarget->GetClassID() != XFA_ELEMENT_PageArea) { |
pTarget = NULL; |
} |
- if (m_nAvailPages % 2 != 1 || !m_pCurrentContainerRecord || |
- (pTarget && |
- pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode) || |
- bStartNew) { |
- if (m_nAvailPages % 2 == 1) { |
- } |
- } |
break; |
case XFA_ATTRIBUTEENUM_PageEven: |
if (pTarget && pTarget->GetClassID() != XFA_ELEMENT_PageArea) { |
pTarget = NULL; |
} |
- if (m_nAvailPages % 2 != 0 || !m_pCurrentContainerRecord || |
- (pTarget && |
- pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode) || |
- bStartNew) { |
- if (m_nAvailPages % 2 == 0) { |
- } |
- } |
break; |
case XFA_ATTRIBUTEENUM_Auto: |
default: |
@@ -693,13 +779,13 @@ FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( |
} |
CFX_WideStringC wsTarget = pCurNode->GetCData(XFA_ATTRIBUTE_Target); |
CXFA_Node* pTarget = |
- XFA_ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget); |
+ ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget); |
wsBreakTrailer = pCurNode->GetCData(XFA_ATTRIBUTE_Trailer); |
wsBreakLeader = pCurNode->GetCData(XFA_ATTRIBUTE_Leader); |
pBreakLeaderTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsBreakLeader); |
+ ResolveBreakTarget(pContainer, TRUE, wsBreakLeader); |
pBreakTrailerTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsBreakTrailer); |
+ ResolveBreakTarget(pContainer, TRUE, wsBreakTrailer); |
if (RunBreak(eType, pCurNode->GetEnum(XFA_ATTRIBUTE_TargetType), pTarget, |
bStartNew)) { |
return TRUE; |
@@ -729,7 +815,7 @@ FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( |
CFX_WideStringC wsTarget = pCurNode->GetCData( |
bBefore ? XFA_ATTRIBUTE_BeforeTarget : XFA_ATTRIBUTE_AfterTarget); |
CXFA_Node* pTarget = |
- XFA_ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget); |
+ ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget); |
if (RunBreak(bBefore ? XFA_ELEMENT_BreakBefore : XFA_ELEMENT_BreakAfter, |
pCurNode->GetEnum(bBefore ? XFA_ATTRIBUTE_Before |
: XFA_ATTRIBUTE_After), |
@@ -742,10 +828,7 @@ FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( |
} |
return FALSE; |
} |
-static void XFA_SetLayoutGeneratedNodeFlag(CXFA_Node* pNode) { |
- pNode->SetFlag(XFA_NODEFLAG_LayoutGeneratedNode, false); |
- pNode->ClearFlag(XFA_NODEFLAG_UnusedNode); |
-} |
+ |
FX_BOOL CXFA_LayoutPageMgr::ProcessBreakBeforeOrAfter( |
CXFA_Node* pBreakNode, |
FX_BOOL bBefore, |
@@ -769,7 +852,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBreakBeforeOrAfter( |
pBreakLeaderNode = pDocument->DataMerge_CopyContainer( |
pLeaderTemplate, pFormNode, pDataScope, TRUE); |
pDocument->DataMerge_UpdateBindingRelations(pBreakLeaderNode); |
- XFA_SetLayoutGeneratedNodeFlag(pBreakLeaderNode); |
+ SetLayoutGeneratedNodeFlag(pBreakLeaderNode); |
} |
if (pTrailerTemplate) { |
if (!pDataScope) { |
@@ -778,7 +861,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBreakBeforeOrAfter( |
pBreakTrailerNode = pDocument->DataMerge_CopyContainer( |
pTrailerTemplate, pFormNode, pDataScope, TRUE); |
pDocument->DataMerge_UpdateBindingRelations(pBreakTrailerNode); |
- XFA_SetLayoutGeneratedNodeFlag(pBreakTrailerNode); |
+ SetLayoutGeneratedNodeFlag(pBreakTrailerNode); |
} |
return TRUE; |
} |
@@ -801,7 +884,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBookendLeaderOrTrailer( |
pBookendAppendNode = pDocument->DataMerge_CopyContainer( |
pLeaderTemplate, pFormNode, pDataScope, TRUE); |
pDocument->DataMerge_UpdateBindingRelations(pBookendAppendNode); |
- XFA_SetLayoutGeneratedNodeFlag(pBookendAppendNode); |
+ SetLayoutGeneratedNodeFlag(pBookendAppendNode); |
return TRUE; |
} |
} |
@@ -827,8 +910,8 @@ CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, |
!wsOverflowTarget.IsEmpty()) { |
if (!wsOverflowTarget.IsEmpty() && bCreatePage && |
!m_bCreateOverFlowPage) { |
- CXFA_Node* pTarget = XFA_ResolveBreakTarget(m_pTemplatePageSetRoot, |
- TRUE, wsOverflowTarget); |
+ CXFA_Node* pTarget = |
+ ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); |
if (pTarget) { |
m_bCreateOverFlowPage = TRUE; |
switch (pTarget->GetClassID()) { |
@@ -847,9 +930,9 @@ CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, |
} |
if (!bCreatePage) { |
pLeaderTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); |
+ ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); |
pTrailerTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); |
+ ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); |
} |
return pOverflowNode; |
} |
@@ -860,8 +943,8 @@ CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, |
pOverflowNode->TryCData(XFA_ATTRIBUTE_Trailer, wsOverflowTrailer); |
pOverflowNode->TryCData(XFA_ATTRIBUTE_Target, wsOverflowTarget); |
if (!wsOverflowTarget.IsEmpty() && bCreatePage && !m_bCreateOverFlowPage) { |
- CXFA_Node* pTarget = XFA_ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, |
- wsOverflowTarget); |
+ CXFA_Node* pTarget = |
+ ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsOverflowTarget); |
if (pTarget) { |
m_bCreateOverFlowPage = TRUE; |
switch (pTarget->GetClassID()) { |
@@ -879,10 +962,9 @@ CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode, |
} |
} |
if (!bCreatePage) { |
- pLeaderTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); |
+ pLeaderTemplate = ResolveBreakTarget(pContainer, TRUE, wsOverflowLeader); |
pTrailerTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); |
+ ResolveBreakTarget(pContainer, TRUE, wsOverflowTrailer); |
} |
return pOverflowNode; |
} |
@@ -920,7 +1002,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode, |
pLeaderNode = pDocument->DataMerge_CopyContainer( |
pLeaderTemplate, pFormNode, pDataScope, TRUE); |
pDocument->DataMerge_UpdateBindingRelations(pLeaderNode); |
- XFA_SetLayoutGeneratedNodeFlag(pLeaderNode); |
+ SetLayoutGeneratedNodeFlag(pLeaderNode); |
} |
if (pTrailerTemplate) { |
if (!pDataScope) { |
@@ -929,7 +1011,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode, |
pTrailerNode = pDocument->DataMerge_CopyContainer( |
pTrailerTemplate, pFormNode, pDataScope, TRUE); |
pDocument->DataMerge_UpdateBindingRelations(pTrailerNode); |
- XFA_SetLayoutGeneratedNodeFlag(pTrailerNode); |
+ SetLayoutGeneratedNodeFlag(pTrailerNode); |
} |
return TRUE; |
} |
@@ -954,7 +1036,7 @@ FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer( |
wsBookendLeader); |
if (!wsBookendLeader.IsEmpty()) { |
pBookendAppendTemplate = |
- XFA_ResolveBreakTarget(pContainer, FALSE, wsBookendLeader); |
+ ResolveBreakTarget(pContainer, FALSE, wsBookendLeader); |
return TRUE; |
} |
return FALSE; |
@@ -963,7 +1045,7 @@ FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer( |
bLeader ? XFA_ATTRIBUTE_Leader : XFA_ATTRIBUTE_Trailer, |
wsBookendLeader); |
pBookendAppendTemplate = |
- XFA_ResolveBreakTarget(pContainer, TRUE, wsBookendLeader); |
+ ResolveBreakTarget(pContainer, TRUE, wsBookendLeader); |
return TRUE; |
} |
return FALSE; |
@@ -1251,24 +1333,7 @@ CXFA_Node* CXFA_LayoutPageMgr::GetNextAvailPageArea( |
} |
return NULL; |
} |
-static FX_BOOL XFA_LayoutPageMgr_CheckContentAreaNotUsed( |
- CXFA_ContainerLayoutItem* pPageAreaLayoutItem, |
- CXFA_Node* pContentArea, |
- CXFA_ContainerLayoutItem*& pContentAreaLayoutItem) { |
- for (CXFA_ContainerLayoutItem* pLayoutItem = |
- (CXFA_ContainerLayoutItem*)pPageAreaLayoutItem->m_pFirstChild; |
- pLayoutItem; |
- pLayoutItem = (CXFA_ContainerLayoutItem*)pLayoutItem->m_pNextSibling) { |
- if (pLayoutItem->m_pFormNode == pContentArea) { |
- if (pLayoutItem->m_pFirstChild == NULL) { |
- pContentAreaLayoutItem = pLayoutItem; |
- return TRUE; |
- } |
- return FALSE; |
- } |
- } |
- return TRUE; |
-} |
+ |
FX_BOOL CXFA_LayoutPageMgr::GetNextContentArea(CXFA_Node* pContentArea) { |
CXFA_Node* pCurContentNode = |
GetCurrentContainerRecord()->pCurContentArea->m_pFormNode; |
@@ -1283,9 +1348,8 @@ FX_BOOL CXFA_LayoutPageMgr::GetNextContentArea(CXFA_Node* pContentArea) { |
return FALSE; |
} |
CXFA_ContainerLayoutItem* pContentAreaLayout = NULL; |
- if (!XFA_LayoutPageMgr_CheckContentAreaNotUsed( |
- GetCurrentContainerRecord()->pCurPageArea, pContentArea, |
- pContentAreaLayout)) { |
+ if (!CheckContentAreaNotUsed(GetCurrentContainerRecord()->pCurPageArea, |
+ pContentArea, pContentAreaLayout)) { |
return FALSE; |
} |
if (pContentAreaLayout) { |
@@ -1495,21 +1559,7 @@ CXFA_LayoutItem* CXFA_LayoutPageMgr::FindOrCreateLayoutItem( |
return pFormNode->GetDocument()->GetParser()->GetNotify()->OnCreateLayoutItem( |
pFormNode); |
} |
-static void XFA_SyncRemoveLayoutItem(CXFA_LayoutItem* pParentLayoutItem, |
- CXFA_FFNotify* pNotify, |
- CXFA_LayoutProcessor* pDocLayout) { |
- CXFA_LayoutItem* pNextLayoutItem; |
- CXFA_LayoutItem* pCurLayoutItem = pParentLayoutItem->m_pFirstChild; |
- while (pCurLayoutItem) { |
- pNextLayoutItem = pCurLayoutItem->m_pNextSibling; |
- if (pCurLayoutItem->m_pFirstChild) { |
- XFA_SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout); |
- } |
- pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem); |
- delete pCurLayoutItem; |
- pCurLayoutItem = pNextLayoutItem; |
- } |
-} |
+ |
void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) { |
CXFA_LayoutItem* pNextLayoutItem; |
CXFA_LayoutItem* pCurLayoutItem = pParentLayoutItem->m_pFirstChild; |
@@ -1523,7 +1573,7 @@ void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) { |
CXFA_LayoutProcessor* pDocLayout = |
m_pTemplatePageSetRoot->GetDocument()->GetDocLayout(); |
if (pCurLayoutItem->m_pFirstChild) { |
- XFA_SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout); |
+ SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout); |
} |
pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem); |
delete pCurLayoutItem; |
@@ -1787,36 +1837,7 @@ void CXFA_LayoutPageMgr::LayoutPageSetContents() { |
} |
} |
} |
-void XFA_SyncContainer(CXFA_FFNotify* pNotify, |
- CXFA_LayoutProcessor* pDocLayout, |
- CXFA_LayoutItem* pContainerItem, |
- uint32_t dwRelevant, |
- FX_BOOL bVisible, |
- int32_t nPageIndex) { |
- FX_BOOL bVisibleItem = FALSE; |
- uint32_t dwStatus = 0; |
- uint32_t dwRelevantContainer = 0; |
- if (bVisible) { |
- XFA_ATTRIBUTEENUM eAttributeValue = |
- pContainerItem->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Presence); |
- if (eAttributeValue == XFA_ATTRIBUTEENUM_Visible || |
- eAttributeValue == XFA_ATTRIBUTEENUM_Unknown) { |
- bVisibleItem = TRUE; |
- } |
- dwRelevantContainer = |
- XFA_GetRelevant(pContainerItem->m_pFormNode, dwRelevant); |
- dwStatus = |
- (bVisibleItem ? XFA_LAYOUTSTATUS_Visible : 0) | dwRelevantContainer; |
- } |
- pNotify->OnLayoutItemAdded(pDocLayout, pContainerItem, nPageIndex, dwStatus); |
- for (CXFA_LayoutItem* pChild = pContainerItem->m_pFirstChild; pChild; |
- pChild = pChild->m_pNextSibling) { |
- if (pChild->IsContentLayoutItem()) { |
- XFA_SyncContainer(pNotify, pDocLayout, pChild, dwRelevantContainer, |
- bVisibleItem, nPageIndex); |
- } |
- } |
-} |
+ |
void CXFA_LayoutPageMgr::SyncLayoutData() { |
MergePageSetContents(); |
LayoutPageSetContents(); |
@@ -1837,7 +1858,7 @@ void CXFA_LayoutPageMgr::SyncLayoutData() { |
case XFA_ELEMENT_PageArea: { |
nPageIdx++; |
uint32_t dwRelevant = |
- XFA_LAYOUTSTATUS_Viewable | XFA_LAYOUTSTATUS_Printable; |
+ XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable; |
CXFA_NodeIteratorTemplate<CXFA_LayoutItem, |
CXFA_TraverseStrategy_LayoutItem> |
iterator(pContainerItem); |
@@ -1853,9 +1874,9 @@ void CXFA_LayoutPageMgr::SyncLayoutData() { |
(pContentItem->m_pFormNode->GetEnum(XFA_ATTRIBUTE_Presence) == |
XFA_ATTRIBUTEENUM_Visible); |
uint32_t dwRelevantChild = |
- XFA_GetRelevant(pContentItem->m_pFormNode, dwRelevant); |
- XFA_SyncContainer(pNotify, m_pLayoutProcessor, pContentItem, |
- dwRelevantChild, bVisible, nPageIdx); |
+ GetRelevant(pContentItem->m_pFormNode, dwRelevant); |
+ SyncContainer(pNotify, m_pLayoutProcessor, pContentItem, |
+ dwRelevantChild, bVisible, nPageIdx); |
pChildLayoutItem = iterator.SkipChildrenAndMoveToNext(); |
} |
} break; |