summaryrefslogtreecommitdiff
path: root/xfa/fxfa
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa')
-rw-r--r--xfa/fxfa/parser/cxfa_containerlayoutitem.cpp2
-rw-r--r--xfa/fxfa/parser/cxfa_layoutpagemgr.cpp (renamed from xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp)464
-rw-r--r--xfa/fxfa/parser/cxfa_layoutpagemgr.h (renamed from xfa/fxfa/parser/xfa_layout_pagemgr_new.h)20
-rw-r--r--xfa/fxfa/parser/cxfa_layoutprocessor.cpp2
-rw-r--r--xfa/fxfa/parser/xfa_layout_itemlayout.cpp2
5 files changed, 262 insertions, 228 deletions
diff --git a/xfa/fxfa/parser/cxfa_containerlayoutitem.cpp b/xfa/fxfa/parser/cxfa_containerlayoutitem.cpp
index 0db7fb20b4..646f8a45e5 100644
--- a/xfa/fxfa/parser/cxfa_containerlayoutitem.cpp
+++ b/xfa/fxfa/parser/cxfa_containerlayoutitem.cpp
@@ -6,9 +6,9 @@
#include "xfa/fxfa/parser/cxfa_containerlayoutitem.h"
+#include "xfa/fxfa/parser/cxfa_layoutpagemgr.h"
#include "xfa/fxfa/parser/cxfa_layoutprocessor.h"
#include "xfa/fxfa/parser/cxfa_measurement.h"
-#include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
CXFA_ContainerLayoutItem::CXFA_ContainerLayoutItem(CXFA_Node* pNode)
: CXFA_LayoutItem(pNode, FALSE), m_pOldSubform(nullptr) {}
diff --git a/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp
index a88ccce330..48a9c78ffe 100644
--- a/xfa/fxfa/parser/xfa_layout_pagemgr_new.cpp
+++ b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp
@@ -4,7 +4,7 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
+#include "xfa/fxfa/parser/cxfa_layoutpagemgr.h"
#include "xfa/fxfa/app/xfa_ffnotify.h"
#include "xfa/fxfa/parser/cxfa_containerlayoutitem.h"
@@ -26,7 +26,7 @@ namespace {
class PageSetContainerLayoutItem {
public:
- static inline CXFA_ContainerLayoutItem* GetFirstChild(
+ static CXFA_ContainerLayoutItem* GetFirstChild(
CXFA_ContainerLayoutItem* pLayoutItem) {
if (pLayoutItem->m_pFormNode->GetElementType() != XFA_Element::PageSet)
return nullptr;
@@ -41,7 +41,7 @@ class PageSetContainerLayoutItem {
return pChildItem;
}
- static inline CXFA_ContainerLayoutItem* GetNextSibling(
+ static CXFA_ContainerLayoutItem* GetNextSibling(
CXFA_ContainerLayoutItem* pLayoutItem) {
CXFA_ContainerLayoutItem* pChildItem =
static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pNextSibling);
@@ -53,7 +53,7 @@ class PageSetContainerLayoutItem {
return pChildItem;
}
- static inline CXFA_ContainerLayoutItem* GetParent(
+ static CXFA_ContainerLayoutItem* GetParent(
CXFA_ContainerLayoutItem* pLayoutItem) {
return static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pParent);
}
@@ -68,10 +68,12 @@ uint32_t GetRelevant(CXFA_Node* pFormItem, uint32_t dwParentRelvant) {
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;
@@ -111,7 +113,7 @@ void SyncContainer(CXFA_FFNotify* pNotify,
void ReorderLayoutItemToTail(CXFA_ContainerLayoutItem* pLayoutItem) {
CXFA_ContainerLayoutItem* pParentLayoutItem =
- (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent;
+ static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pParent);
if (!pParentLayoutItem)
return;
@@ -121,7 +123,7 @@ void ReorderLayoutItemToTail(CXFA_ContainerLayoutItem* pLayoutItem) {
void RemoveLayoutItem(CXFA_ContainerLayoutItem* pLayoutItem) {
CXFA_ContainerLayoutItem* pParentLayoutItem =
- (CXFA_ContainerLayoutItem*)pLayoutItem->m_pParent;
+ static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem->m_pParent);
if (!pParentLayoutItem)
return;
@@ -189,9 +191,10 @@ FX_BOOL CheckContentAreaNotUsed(
CXFA_Node* pContentArea,
CXFA_ContainerLayoutItem*& pContentAreaLayoutItem) {
for (CXFA_ContainerLayoutItem* pLayoutItem =
- (CXFA_ContainerLayoutItem*)pPageAreaLayoutItem->m_pFirstChild;
- pLayoutItem;
- pLayoutItem = (CXFA_ContainerLayoutItem*)pLayoutItem->m_pNextSibling) {
+ static_cast<CXFA_ContainerLayoutItem*>(
+ pPageAreaLayoutItem->m_pFirstChild);
+ pLayoutItem; pLayoutItem = static_cast<CXFA_ContainerLayoutItem*>(
+ pLayoutItem->m_pNextSibling)) {
if (pLayoutItem->m_pFormNode == pContentArea) {
if (!pLayoutItem->m_pFirstChild) {
pContentAreaLayoutItem = pLayoutItem;
@@ -221,6 +224,20 @@ void SyncRemoveLayoutItem(CXFA_LayoutItem* pParentLayoutItem,
} // namespace
+class CXFA_ContainerRecord {
+ public:
+ CXFA_ContainerRecord(CXFA_ContainerLayoutItem* pPageSet = nullptr,
+ CXFA_ContainerLayoutItem* pPageArea = nullptr,
+ CXFA_ContainerLayoutItem* pContentArea = nullptr)
+ : pCurPageSet(pPageSet),
+ pCurPageArea(pPageArea),
+ pCurContentArea(pContentArea) {}
+
+ CXFA_ContainerLayoutItem* pCurPageSet;
+ CXFA_ContainerLayoutItem* pCurPageArea;
+ CXFA_ContainerLayoutItem* pCurContentArea;
+};
+
CXFA_LayoutPageMgr::CXFA_LayoutPageMgr(CXFA_LayoutProcessor* pLayoutProcessor)
: m_pLayoutProcessor(pLayoutProcessor),
m_pTemplatePageSetRoot(nullptr),
@@ -232,6 +249,7 @@ CXFA_LayoutPageMgr::CXFA_LayoutPageMgr(CXFA_LayoutProcessor* pLayoutProcessor)
m_nCurPageCount(0),
m_ePageSetMode(XFA_ATTRIBUTEENUM_OrderedOccurrence),
m_bCreateOverFlowPage(FALSE) {}
+
CXFA_LayoutPageMgr::~CXFA_LayoutPageMgr() {
ClearData();
CXFA_LayoutItem* pLayoutItem = GetRootLayoutItem();
@@ -241,12 +259,13 @@ CXFA_LayoutPageMgr::~CXFA_LayoutPageMgr() {
XFA_ReleaseLayoutItem(pLayoutItem);
}
}
+
FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
PrepareLayout();
CXFA_Node* pTemplateNode = pFormNode->GetTemplateNode();
- if (!pTemplateNode) {
+ if (!pTemplateNode)
return FALSE;
- }
+
m_pTemplatePageSetRoot = pTemplateNode->GetProperty(0, XFA_Element::PageSet);
ASSERT(m_pTemplatePageSetRoot);
if (m_pPageSetLayoutItemRoot) {
@@ -263,9 +282,9 @@ FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
(void*)m_pPageSetLayoutItemRoot);
XFA_ATTRIBUTEENUM eRelation =
m_pTemplatePageSetRoot->GetEnum(XFA_ATTRIBUTE_Relation);
- if (eRelation != XFA_ATTRIBUTEENUM_Unknown) {
+ if (eRelation != XFA_ATTRIBUTEENUM_Unknown)
m_ePageSetMode = eRelation;
- }
+
InitPageSetMap();
CXFA_Node* pPageArea = nullptr;
int32_t iCount = 0;
@@ -274,22 +293,21 @@ FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
pPageArea = pPageArea->GetNodeItem(XFA_NODEITEM_NextSibling)) {
if (pPageArea->GetElementType() == XFA_Element::PageArea) {
iCount++;
- if (pPageArea->GetFirstChildByClass(XFA_Element::ContentArea)) {
+ if (pPageArea->GetFirstChildByClass(XFA_Element::ContentArea))
return TRUE;
- }
}
}
- if (iCount > 0) {
+ if (iCount > 0)
return FALSE;
- }
+
CXFA_Document* pDocument = pTemplateNode->GetDocument();
pPageArea = m_pTemplatePageSetRoot->GetChild(0, XFA_Element::PageArea);
if (!pPageArea) {
pPageArea = pDocument->CreateNode(m_pTemplatePageSetRoot->GetPacketID(),
XFA_Element::PageArea);
- if (!pPageArea) {
+ if (!pPageArea)
return FALSE;
- }
+
m_pTemplatePageSetRoot->InsertChild(pPageArea, nullptr);
pPageArea->SetFlag(XFA_NodeFlag_Initialized, true);
}
@@ -297,9 +315,9 @@ FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
if (!pContentArea) {
pContentArea = pDocument->CreateNode(pPageArea->GetPacketID(),
XFA_Element::ContentArea);
- if (!pContentArea) {
+ if (!pContentArea)
return FALSE;
- }
+
pPageArea->InsertChild(pContentArea, nullptr);
pContentArea->SetFlag(XFA_NodeFlag_Initialized, true);
pContentArea->SetMeasure(XFA_ATTRIBUTE_X,
@@ -315,9 +333,9 @@ FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
if (!pMedium) {
pMedium =
pDocument->CreateNode(pPageArea->GetPacketID(), XFA_Element::Medium);
- if (!pContentArea) {
+ if (!pContentArea)
return FALSE;
- }
+
pPageArea->InsertChild(pMedium, nullptr);
pMedium->SetFlag(XFA_NodeFlag_Initialized, true);
pMedium->SetMeasure(XFA_ATTRIBUTE_Short,
@@ -327,6 +345,7 @@ FX_BOOL CXFA_LayoutPageMgr::InitLayoutPage(CXFA_Node* pFormNode) {
}
return TRUE;
}
+
FX_BOOL CXFA_LayoutPageMgr::PrepareFirstPage(CXFA_Node* pRootSubform) {
FX_BOOL bProBreakBefore = FALSE;
CXFA_Node* pBreakBeforeNode = nullptr;
@@ -345,9 +364,9 @@ FX_BOOL CXFA_LayoutPageMgr::PrepareFirstPage(CXFA_Node* pRootSubform) {
break;
}
}
- if (bProBreakBefore) {
+ if (bProBreakBefore)
break;
- }
+
bProBreakBefore = TRUE;
pRootSubform = pRootSubform->GetFirstChildByClass(XFA_Element::Subform);
while (pRootSubform &&
@@ -364,26 +383,24 @@ FX_BOOL CXFA_LayoutPageMgr::PrepareFirstPage(CXFA_Node* pRootSubform) {
}
return AppendNewPage(TRUE);
}
+
FX_BOOL CXFA_LayoutPageMgr::AppendNewPage(FX_BOOL bFirstTemPage) {
if (m_pCurrentContainerRecord !=
m_rgProposedContainerRecord.GetTailPosition()) {
return TRUE;
}
CXFA_Node* pPageNode = GetNextAvailPageArea(nullptr);
- if (!pPageNode) {
+ if (!pPageNode)
return FALSE;
- }
- if (bFirstTemPage && !m_pCurrentContainerRecord) {
+ if (bFirstTemPage && !m_pCurrentContainerRecord)
m_pCurrentContainerRecord = m_rgProposedContainerRecord.GetHeadPosition();
- }
return !bFirstTemPage || m_pCurrentContainerRecord;
}
void CXFA_LayoutPageMgr::RemoveLayoutRecord(CXFA_ContainerRecord* pNewRecord,
CXFA_ContainerRecord* pPrevRecord) {
- if (!pNewRecord || !pPrevRecord) {
+ if (!pNewRecord || !pPrevRecord)
return;
- }
if (pNewRecord->pCurPageSet != pPrevRecord->pCurPageSet) {
RemoveLayoutItem(pNewRecord->pCurPageSet);
return;
@@ -397,12 +414,12 @@ void CXFA_LayoutPageMgr::RemoveLayoutRecord(CXFA_ContainerRecord* pNewRecord,
return;
}
}
+
void CXFA_LayoutPageMgr::ReorderPendingLayoutRecordToTail(
CXFA_ContainerRecord* pNewRecord,
CXFA_ContainerRecord* pPrevRecord) {
- if (!pNewRecord || !pPrevRecord) {
+ if (!pNewRecord || !pPrevRecord)
return;
- }
if (pNewRecord->pCurPageSet != pPrevRecord->pCurPageSet) {
ReorderLayoutItemToTail(pNewRecord->pCurPageSet);
return;
@@ -416,6 +433,7 @@ void CXFA_LayoutPageMgr::ReorderPendingLayoutRecordToTail(
return;
}
}
+
void CXFA_LayoutPageMgr::SubmitContentItem(
CXFA_ContentLayoutItem* pContentLayoutItem,
XFA_ItemLayoutProcessorResult eStatus) {
@@ -423,6 +441,7 @@ void CXFA_LayoutPageMgr::SubmitContentItem(
GetCurrentContainerRecord()->pCurContentArea->AddChild(pContentLayoutItem);
m_bCreateOverFlowPage = FALSE;
}
+
if (eStatus != XFA_ItemLayoutProcessorResult_Done) {
if (eStatus == XFA_ItemLayoutProcessorResult_PageFullBreak &&
m_pCurrentContainerRecord ==
@@ -433,11 +452,13 @@ void CXFA_LayoutPageMgr::SubmitContentItem(
m_pCurPageArea = GetCurrentContainerRecord()->pCurPageArea->m_pFormNode;
}
}
+
FX_FLOAT CXFA_LayoutPageMgr::GetAvailHeight() {
CXFA_ContainerLayoutItem* pLayoutItem =
GetCurrentContainerRecord()->pCurContentArea;
if (!pLayoutItem || !pLayoutItem->m_pFormNode)
return 0.0f;
+
FX_FLOAT fAvailHeight =
pLayoutItem->m_pFormNode->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
if (fAvailHeight >= XFA_LAYOUT_FLOAT_PERCISION)
@@ -452,13 +473,13 @@ FX_FLOAT CXFA_LayoutPageMgr::GetAvailHeight() {
FX_BOOL XFA_LayoutPageMgr_RunBreakTestScript(CXFA_Node* pTestScript) {
CFX_WideString wsExpression;
pTestScript->TryContent(wsExpression);
- if (wsExpression.IsEmpty()) {
+ if (wsExpression.IsEmpty())
return TRUE;
- }
return pTestScript->GetDocument()->GetNotify()->RunScript(
pTestScript, pTestScript->GetNodeItem(XFA_NODEITEM_Parent,
XFA_ObjectType::ContainerNode));
}
+
CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord(
CXFA_Node* pPageNode,
FX_BOOL bCreateNew) {
@@ -475,23 +496,22 @@ CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord(
pNewRecord->pCurPageSet = m_pPageSetCurRoot;
} else {
CXFA_ContainerLayoutItem* pParentLayoutItem =
- (CXFA_ContainerLayoutItem*)pPageSet->GetUserData(XFA_LAYOUTITEMKEY);
- if (!pParentLayoutItem) {
+ static_cast<CXFA_ContainerLayoutItem*>(
+ pPageSet->GetUserData(XFA_LAYOUTITEMKEY));
+ if (!pParentLayoutItem)
pParentLayoutItem = m_pPageSetCurRoot;
- }
+
pNewRecord->pCurPageSet = pParentLayoutItem;
}
} else {
CXFA_ContainerLayoutItem* pParentPageSetLayout = nullptr;
if (pPageSet == GetCurrentContainerRecord()->pCurPageSet->m_pFormNode) {
- pParentPageSetLayout =
- (CXFA_ContainerLayoutItem*)GetCurrentContainerRecord()
- ->pCurPageSet->m_pParent;
+ pParentPageSetLayout = static_cast<CXFA_ContainerLayoutItem*>(
+ GetCurrentContainerRecord()->pCurPageSet->m_pParent);
} else {
- pParentPageSetLayout =
- (CXFA_ContainerLayoutItem*)pPageSet->GetNodeItem(
- XFA_NODEITEM_Parent)
- ->GetUserData(XFA_LAYOUTITEMKEY);
+ pParentPageSetLayout = static_cast<CXFA_ContainerLayoutItem*>(
+ pPageSet->GetNodeItem(XFA_NODEITEM_Parent)
+ ->GetUserData(XFA_LAYOUTITEMKEY));
}
CXFA_ContainerLayoutItem* pPageSetLayoutItem =
new CXFA_ContainerLayoutItem(pPageSet);
@@ -499,8 +519,10 @@ CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord(
if (!pParentPageSetLayout) {
CXFA_ContainerLayoutItem* pPrePageSet = m_pPageSetLayoutItemRoot;
while (pPrePageSet->m_pNextSibling) {
- pPrePageSet = (CXFA_ContainerLayoutItem*)pPrePageSet->m_pNextSibling;
+ pPrePageSet = static_cast<CXFA_ContainerLayoutItem*>(
+ pPrePageSet->m_pNextSibling);
}
+
pPrePageSet->m_pNextSibling = pPageSetLayoutItem;
m_pPageSetCurRoot = pPageSetLayoutItem;
} else {
@@ -527,6 +549,7 @@ CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord(
m_rgProposedContainerRecord.AddTail(pNewRecord);
return pNewRecord;
}
+
void CXFA_LayoutPageMgr::AddPageAreaLayoutItem(CXFA_ContainerRecord* pNewRecord,
CXFA_Node* pNewPageArea) {
CXFA_ContainerLayoutItem* pNewPageAreaLayoutItem = nullptr;
@@ -538,7 +561,8 @@ void CXFA_LayoutPageMgr::AddPageAreaLayoutItem(CXFA_ContainerRecord* pNewRecord,
} else {
CXFA_FFNotify* pNotify = pNewPageArea->GetDocument()->GetNotify();
CXFA_ContainerLayoutItem* pContainerItem =
- (CXFA_ContainerLayoutItem*)pNotify->OnCreateLayoutItem(pNewPageArea);
+ static_cast<CXFA_ContainerLayoutItem*>(
+ pNotify->OnCreateLayoutItem(pNewPageArea));
m_PageArray.Add(pContainerItem);
m_nAvailPages++;
pNotify->OnPageEvent(pContainerItem, XFA_PAGEVIEWEVENT_PostRemoved);
@@ -548,6 +572,7 @@ void CXFA_LayoutPageMgr::AddPageAreaLayoutItem(CXFA_ContainerRecord* pNewRecord,
pNewRecord->pCurPageArea = pNewPageAreaLayoutItem;
pNewRecord->pCurContentArea = nullptr;
}
+
void CXFA_LayoutPageMgr::AddContentAreaLayoutItem(
CXFA_ContainerRecord* pNewRecord,
CXFA_Node* pContentArea) {
@@ -565,8 +590,8 @@ void CXFA_LayoutPageMgr::AddContentAreaLayoutItem(
void CXFA_LayoutPageMgr::FinishPaginatedPageSets() {
CXFA_ContainerLayoutItem* pRootPageSetLayoutItem = m_pPageSetLayoutItemRoot;
for (; pRootPageSetLayoutItem;
- pRootPageSetLayoutItem =
- (CXFA_ContainerLayoutItem*)pRootPageSetLayoutItem->m_pNextSibling) {
+ pRootPageSetLayoutItem = static_cast<CXFA_ContainerLayoutItem*>(
+ pRootPageSetLayoutItem->m_pNextSibling)) {
CXFA_NodeIteratorTemplate<CXFA_ContainerLayoutItem,
PageSetContainerLayoutItem>
sIterator(pRootPageSetLayoutItem);
@@ -592,9 +617,9 @@ void CXFA_LayoutPageMgr::FinishPaginatedPageSets() {
nPageAreaCount++;
pLastPageAreaLayoutItem = pPageAreaLayoutItem;
}
- if (!pLastPageAreaLayoutItem) {
+ if (!pLastPageAreaLayoutItem)
break;
- }
+
if (!FindPageAreaFromPageSet_SimplexDuplex(
pPageSetLayoutItem->m_pFormNode, nullptr, nullptr, nullptr,
TRUE, TRUE, nPageAreaCount == 1 ? XFA_ATTRIBUTEENUM_Only
@@ -697,19 +722,23 @@ void CXFA_LayoutPageMgr::FinishPaginatedPageSets() {
}
}
}
+
int32_t CXFA_LayoutPageMgr::GetPageCount() const {
return m_PageArray.GetSize();
}
+
CXFA_ContainerLayoutItem* CXFA_LayoutPageMgr::GetPage(int32_t index) const {
if (index < 0 || index >= m_PageArray.GetSize())
return nullptr;
return m_PageArray[index];
}
+
int32_t CXFA_LayoutPageMgr::GetPageIndex(
const CXFA_ContainerLayoutItem* pPage) const {
// FIXME: Find() method should take const.
return m_PageArray.Find(const_cast<CXFA_ContainerLayoutItem*>(pPage));
}
+
FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType,
XFA_ATTRIBUTEENUM eTargetType,
CXFA_Node* pTarget,
@@ -717,25 +746,23 @@ FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType,
FX_BOOL bRet = FALSE;
switch (eTargetType) {
case XFA_ATTRIBUTEENUM_ContentArea:
- if (pTarget && pTarget->GetElementType() != XFA_Element::ContentArea) {
+ if (pTarget && pTarget->GetElementType() != XFA_Element::ContentArea)
pTarget = nullptr;
- }
if (!pTarget || !m_pCurrentContainerRecord ||
pTarget !=
GetCurrentContainerRecord()->pCurContentArea->m_pFormNode ||
bStartNew) {
CXFA_Node* pPageArea = nullptr;
- if (pTarget) {
+ if (pTarget)
pPageArea = pTarget->GetNodeItem(XFA_NODEITEM_Parent);
- }
+
pPageArea = GetNextAvailPageArea(pPageArea, pTarget);
bRet = !!pPageArea;
}
break;
case XFA_ATTRIBUTEENUM_PageArea:
- if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea) {
+ if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea)
pTarget = nullptr;
- }
if (!pTarget || !m_pCurrentContainerRecord ||
pTarget != GetCurrentContainerRecord()->pCurPageArea->m_pFormNode ||
bStartNew) {
@@ -744,14 +771,12 @@ FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType,
}
break;
case XFA_ATTRIBUTEENUM_PageOdd:
- if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea) {
+ if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea)
pTarget = nullptr;
- }
break;
case XFA_ATTRIBUTEENUM_PageEven:
- if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea) {
+ if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea)
pTarget = nullptr;
- }
break;
case XFA_ATTRIBUTEENUM_Auto:
default:
@@ -759,6 +784,7 @@ FX_BOOL CXFA_LayoutPageMgr::RunBreak(XFA_Element eBreakType,
}
return bRet;
}
+
FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter(
CXFA_Node* pCurNode,
FX_BOOL bBefore,
@@ -774,9 +800,9 @@ FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter(
CXFA_Node* pContainer = pFormNode->GetTemplateNode();
FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0;
CXFA_Node* pScript = pCurNode->GetFirstChildByClass(XFA_Element::Script);
- if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript)) {
+ if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript))
return FALSE;
- }
+
CFX_WideStringC wsTarget = pCurNode->GetCData(XFA_ATTRIBUTE_Target);
CXFA_Node* pTarget =
ResolveBreakTarget(m_pTemplatePageSetRoot, TRUE, wsTarget);
@@ -789,28 +815,28 @@ FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter(
if (RunBreak(eType, pCurNode->GetEnum(XFA_ATTRIBUTE_TargetType), pTarget,
bStartNew)) {
return TRUE;
- } else {
- if (m_rgProposedContainerRecord.GetCount() > 0 &&
- m_pCurrentContainerRecord ==
- m_rgProposedContainerRecord.GetHeadPosition() &&
- eType == XFA_Element::BreakBefore) {
- CXFA_Node* pParentNode = pFormNode->GetNodeItem(
- XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode);
- if (!pParentNode ||
- pFormNode !=
- pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild,
- XFA_ObjectType::ContainerNode)) {
- break;
- }
- pParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent);
- if (!pParentNode ||
- pParentNode->GetElementType() != XFA_Element::Form) {
- break;
- }
- return TRUE;
+ }
+ if (m_rgProposedContainerRecord.GetCount() > 0 &&
+ m_pCurrentContainerRecord ==
+ m_rgProposedContainerRecord.GetHeadPosition() &&
+ eType == XFA_Element::BreakBefore) {
+ CXFA_Node* pParentNode = pFormNode->GetNodeItem(
+ XFA_NODEITEM_Parent, XFA_ObjectType::ContainerNode);
+ if (!pParentNode ||
+ pFormNode !=
+ pParentNode->GetNodeItem(XFA_NODEITEM_FirstChild,
+ XFA_ObjectType::ContainerNode)) {
+ break;
}
+ pParentNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent);
+ if (!pParentNode ||
+ pParentNode->GetElementType() != XFA_Element::Form) {
+ break;
+ }
+ return TRUE;
}
- } break;
+ break;
+ }
case XFA_Element::Break: {
FX_BOOL bStartNew = pCurNode->GetInteger(XFA_ATTRIBUTE_StartNew) != 0;
CFX_WideStringC wsTarget = pCurNode->GetCData(
@@ -823,7 +849,8 @@ FX_BOOL CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter(
pTarget, bStartNew)) {
return TRUE;
}
- } break;
+ break;
+ }
default:
break;
}
@@ -848,18 +875,18 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBreakBeforeOrAfter(
pFormNode = pFormNode->GetNodeItem(XFA_NODEITEM_Parent,
XFA_ObjectType::ContainerNode);
if (pLeaderTemplate) {
- if (!pDataScope) {
+ if (!pDataScope)
pDataScope = XFA_DataMerge_FindDataScope(pFormNode);
- }
+
pBreakLeaderNode = pDocument->DataMerge_CopyContainer(
pLeaderTemplate, pFormNode, pDataScope, TRUE, TRUE, TRUE);
pDocument->DataMerge_UpdateBindingRelations(pBreakLeaderNode);
SetLayoutGeneratedNodeFlag(pBreakLeaderNode);
}
if (pTrailerTemplate) {
- if (!pDataScope) {
+ if (!pDataScope)
pDataScope = XFA_DataMerge_FindDataScope(pFormNode);
- }
+
pBreakTrailerNode = pDocument->DataMerge_CopyContainer(
pTrailerTemplate, pFormNode, pDataScope, TRUE, TRUE, TRUE);
pDocument->DataMerge_UpdateBindingRelations(pBreakTrailerNode);
@@ -869,6 +896,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBreakBeforeOrAfter(
}
return FALSE;
}
+
FX_BOOL CXFA_LayoutPageMgr::ProcessBookendLeaderOrTrailer(
CXFA_Node* pBookendNode,
FX_BOOL bLeader,
@@ -880,9 +908,9 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBookendLeaderOrTrailer(
CXFA_Document* pDocument = pBookendNode->GetDocument();
CXFA_Node* pDataScope = nullptr;
if (pLeaderTemplate) {
- if (!pDataScope) {
+ if (!pDataScope)
pDataScope = XFA_DataMerge_FindDataScope(pFormNode);
- }
+
pBookendAppendNode = pDocument->DataMerge_CopyContainer(
pLeaderTemplate, pFormNode, pDataScope, TRUE, TRUE, TRUE);
pDocument->DataMerge_UpdateBindingRelations(pBookendAppendNode);
@@ -892,6 +920,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessBookendLeaderOrTrailer(
}
return FALSE;
}
+
CXFA_Node* CXFA_LayoutPageMgr::BreakOverflow(CXFA_Node* pOverflowNode,
CXFA_Node*& pLeaderTemplate,
CXFA_Node*& pTrailerTemplate,
@@ -980,9 +1009,9 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode,
CXFA_Node*& pTrailerNode,
FX_BOOL bDataMerge,
FX_BOOL bCreatePage) {
- if (!pFormNode) {
+ if (!pFormNode)
return FALSE;
- }
+
CXFA_Node* pLeaderTemplate = nullptr;
CXFA_Node* pTrailerTemplate = nullptr;
FX_BOOL bIsOverflowNode = FALSE;
@@ -996,24 +1025,24 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode,
pCurNode; pCurNode = pCurNode->GetNodeItem((XFA_NODEITEM_NextSibling))) {
if (BreakOverflow(pCurNode, pLeaderTemplate, pTrailerTemplate,
bCreatePage)) {
- if (bIsOverflowNode) {
+ if (bIsOverflowNode)
pFormNode = pCurNode->GetNodeItem(XFA_NODEITEM_Parent);
- }
+
CXFA_Document* pDocument = pCurNode->GetDocument();
CXFA_Node* pDataScope = nullptr;
if (pLeaderTemplate) {
- if (!pDataScope) {
+ if (!pDataScope)
pDataScope = XFA_DataMerge_FindDataScope(pFormNode);
- }
+
pLeaderNode = pDocument->DataMerge_CopyContainer(
pLeaderTemplate, pFormNode, pDataScope, TRUE, TRUE, TRUE);
pDocument->DataMerge_UpdateBindingRelations(pLeaderNode);
SetLayoutGeneratedNodeFlag(pLeaderNode);
}
if (pTrailerTemplate) {
- if (!pDataScope) {
+ if (!pDataScope)
pDataScope = XFA_DataMerge_FindDataScope(pFormNode);
- }
+
pTrailerNode = pDocument->DataMerge_CopyContainer(
pTrailerTemplate, pFormNode, pDataScope, TRUE, TRUE, TRUE);
pDocument->DataMerge_UpdateBindingRelations(pTrailerNode);
@@ -1027,6 +1056,7 @@ FX_BOOL CXFA_LayoutPageMgr::ProcessOverflow(CXFA_Node* pFormNode,
}
return FALSE;
}
+
FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer(
CXFA_Node* pBookendNode,
FX_BOOL bLeader,
@@ -1056,6 +1086,7 @@ FX_BOOL CXFA_LayoutPageMgr::ResolveBookendLeaderOrTrailer(
}
return FALSE;
}
+
FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet(
CXFA_Node* pPageSet,
CXFA_Node* pStartChild,
@@ -1063,9 +1094,9 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet(
CXFA_Node* pTargetContentArea,
FX_BOOL bNewPage,
FX_BOOL bQuery) {
- if (!pPageSet && !pStartChild) {
+ if (!pPageSet && !pStartChild)
return FALSE;
- }
+
if (IsPageSetRootOrderedOccurrence()) {
return FindPageAreaFromPageSet_Ordered(pPageSet, pStartChild,
pTargetPageArea, pTargetContentArea,
@@ -1078,6 +1109,7 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet(
pPageSet, pStartChild, pTargetPageArea, pTargetContentArea, bNewPage,
bQuery, ePreferredPosition);
}
+
FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_Ordered(
CXFA_Node* pPageSet,
CXFA_Node* pStartChild,
@@ -1090,13 +1122,12 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_Ordered(
m_pPageSetMap.Lookup(pPageSet, iPageSetCount);
int32_t iMax = -1;
CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_Element::Occur);
- if (pOccurNode) {
+ if (pOccurNode)
pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
- }
- if (iMax >= 0 && iMax <= iPageSetCount) {
+ if (iMax >= 0 && iMax <= iPageSetCount)
return FALSE;
- }
}
+
FX_BOOL bRes = FALSE;
CXFA_Node* pCurrentNode =
pStartChild ? pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling)
@@ -1127,9 +1158,8 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_Ordered(
bRes = TRUE;
break;
}
- if (!bQuery) {
+ if (!bQuery)
CreateMinPageRecord(pCurrentNode, FALSE);
- }
} else if (pCurrentNode->GetElementType() == XFA_Element::PageSet) {
if (FindPageAreaFromPageSet_Ordered(pCurrentNode, nullptr,
pTargetPageArea, pTargetContentArea,
@@ -1137,16 +1167,15 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_Ordered(
bRes = TRUE;
break;
}
- if (!bQuery) {
+ if (!bQuery)
CreateMinPageSetRecord(pCurrentNode, TRUE);
- }
}
}
- if (!pStartChild && bRes && !bQuery) {
+ if (!pStartChild && bRes && !bQuery)
m_pPageSetMap.SetAt(pPageSet, ++iPageSetCount);
- }
return bRes;
}
+
FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex(
CXFA_Node* pPageSet,
CXFA_Node* pStartChild,
@@ -1159,23 +1188,22 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex(
CXFA_Node* pPreferredPageArea = nullptr;
CXFA_Node* pFallbackPageArea = nullptr;
CXFA_Node* pCurrentNode = nullptr;
- if (!pStartChild || pStartChild->GetElementType() == XFA_Element::PageArea) {
+ if (!pStartChild || pStartChild->GetElementType() == XFA_Element::PageArea)
pCurrentNode = pPageSet->GetNodeItem(XFA_NODEITEM_FirstChild);
- } else {
+ else
pCurrentNode = pStartChild->GetNodeItem(XFA_NODEITEM_NextSibling);
- }
+
for (; pCurrentNode;
pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
if (pCurrentNode->GetElementType() == XFA_Element::PageArea) {
- if (!MatchPageAreaOddOrEven(pCurrentNode, FALSE)) {
+ if (!MatchPageAreaOddOrEven(pCurrentNode, FALSE))
continue;
- }
+
XFA_ATTRIBUTEENUM eCurPagePosition =
pCurrentNode->GetEnum(XFA_ATTRIBUTE_PagePosition);
if (ePreferredPosition == XFA_ATTRIBUTEENUM_Last) {
- if (eCurPagePosition != ePreferredPosition) {
+ if (eCurPagePosition != ePreferredPosition)
continue;
- }
if (m_ePageSetMode == XFA_ATTRIBUTEENUM_SimplexPaginated ||
pCurrentNode->GetEnum(XFA_ATTRIBUTE_OddOrEven) ==
XFA_ATTRIBUTEENUM_Any) {
@@ -1188,10 +1216,10 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex(
XFA_Element::ContentArea));
pPreferredPageArea = pCurrentNode;
return FALSE;
- } else if (ePreferredPosition == XFA_ATTRIBUTEENUM_Only) {
- if (eCurPagePosition != ePreferredPosition) {
+ }
+ if (ePreferredPosition == XFA_ATTRIBUTEENUM_Only) {
+ if (eCurPagePosition != ePreferredPosition)
continue;
- }
if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated ||
pCurrentNode->GetEnum(XFA_ATTRIBUTE_OddOrEven) ==
XFA_ATTRIBUTEENUM_Any) {
@@ -1233,15 +1261,16 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex(
}
}
}
+
CXFA_Node* pCurPageArea = nullptr;
- if (pPreferredPageArea) {
+ if (pPreferredPageArea)
pCurPageArea = pPreferredPageArea;
- } else if (pFallbackPageArea) {
+ else if (pFallbackPageArea)
pCurPageArea = pFallbackPageArea;
- }
- if (!pCurPageArea) {
+
+ if (!pCurPageArea)
return FALSE;
- }
+
if (!bQuery) {
CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
AddPageAreaLayoutItem(pNewRecord, pCurPageArea);
@@ -1254,11 +1283,12 @@ FX_BOOL CXFA_LayoutPageMgr::FindPageAreaFromPageSet_SimplexDuplex(
m_pCurPageArea = pCurPageArea;
return TRUE;
}
+
FX_BOOL CXFA_LayoutPageMgr::MatchPageAreaOddOrEven(CXFA_Node* pPageArea,
FX_BOOL bLastMatch) {
- if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated) {
+ if (m_ePageSetMode != XFA_ATTRIBUTEENUM_DuplexPaginated)
return TRUE;
- }
+
XFA_ATTRIBUTEENUM eOddOrEven = XFA_ATTRIBUTEENUM_Any;
pPageArea->TryEnum(XFA_ATTRIBUTE_OddOrEven, eOddOrEven);
if (eOddOrEven != XFA_ATTRIBUTEENUM_Any) {
@@ -1272,6 +1302,7 @@ FX_BOOL CXFA_LayoutPageMgr::MatchPageAreaOddOrEven(CXFA_Node* pPageArea,
}
return TRUE;
}
+
CXFA_Node* CXFA_LayoutPageMgr::GetNextAvailPageArea(
CXFA_Node* pTargetPageArea,
CXFA_Node* pTargetContentArea,
@@ -1283,17 +1314,17 @@ CXFA_Node* CXFA_LayoutPageMgr::GetNextAvailPageArea(
ASSERT(m_pCurPageArea);
return m_pCurPageArea;
}
+
if (!pTargetPageArea || pTargetPageArea == m_pCurPageArea) {
- if (!bNewPage && GetNextContentArea(pTargetContentArea)) {
+ if (!bNewPage && GetNextContentArea(pTargetContentArea))
return m_pCurPageArea;
- }
+
if (IsPageSetRootOrderedOccurrence()) {
int32_t iMax = -1;
CXFA_Node* pOccurNode =
m_pCurPageArea->GetFirstChildByClass(XFA_Element::Occur);
- if (pOccurNode) {
+ if (pOccurNode)
pOccurNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
- }
if ((iMax < 0 || m_nCurPageCount < iMax)) {
if (!bQuery) {
CXFA_ContainerRecord* pNewRecord =
@@ -1310,30 +1341,30 @@ CXFA_Node* CXFA_LayoutPageMgr::GetNextAvailPageArea(
}
}
}
- if (!bQuery && IsPageSetRootOrderedOccurrence()) {
+
+ if (!bQuery && IsPageSetRootOrderedOccurrence())
CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE);
- }
if (FindPageAreaFromPageSet(m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent),
m_pCurPageArea, pTargetPageArea,
pTargetContentArea, bNewPage, bQuery)) {
return m_pCurPageArea;
}
+
CXFA_Node* pPageSet = m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent);
while (TRUE) {
if (FindPageAreaFromPageSet(pPageSet, nullptr, pTargetPageArea,
pTargetContentArea, bNewPage, bQuery)) {
return m_pCurPageArea;
}
- if (!bQuery && IsPageSetRootOrderedOccurrence()) {
+ if (!bQuery && IsPageSetRootOrderedOccurrence())
CreateMinPageSetRecord(pPageSet);
- }
if (FindPageAreaFromPageSet(nullptr, pPageSet, pTargetPageArea,
pTargetContentArea, bNewPage, bQuery)) {
return m_pCurPageArea;
}
- if (pPageSet == m_pTemplatePageSetRoot) {
+ if (pPageSet == m_pTemplatePageSetRoot)
break;
- }
+
pPageSet = pPageSet->GetNodeItem(XFA_NODEITEM_Parent);
}
return nullptr;
@@ -1345,13 +1376,12 @@ FX_BOOL CXFA_LayoutPageMgr::GetNextContentArea(CXFA_Node* pContentArea) {
if (!pContentArea) {
pContentArea =
pCurContentNode->GetNextSameClassSibling(XFA_Element::ContentArea);
- if (!pContentArea) {
+ if (!pContentArea)
return FALSE;
- }
} else {
- if (pContentArea->GetNodeItem(XFA_NODEITEM_Parent) != m_pCurPageArea) {
+ if (pContentArea->GetNodeItem(XFA_NODEITEM_Parent) != m_pCurPageArea)
return FALSE;
- }
+
CXFA_ContainerLayoutItem* pContentAreaLayout = nullptr;
if (!CheckContentAreaNotUsed(GetCurrentContainerRecord()->pCurPageArea,
pContentArea, pContentAreaLayout)) {
@@ -1362,50 +1392,51 @@ FX_BOOL CXFA_LayoutPageMgr::GetNextContentArea(CXFA_Node* pContentArea) {
CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
pNewRecord->pCurContentArea = pContentAreaLayout;
return TRUE;
- } else {
- return FALSE;
}
+ return FALSE;
}
}
+
CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
AddContentAreaLayoutItem(pNewRecord, pContentArea);
return TRUE;
}
+
void CXFA_LayoutPageMgr::InitPageSetMap() {
- if (!IsPageSetRootOrderedOccurrence()) {
+ if (!IsPageSetRootOrderedOccurrence())
return;
- }
+
CXFA_NodeIterator sIterator(m_pTemplatePageSetRoot);
for (CXFA_Node* pPageSetNode = sIterator.GetCurrent(); pPageSetNode;
pPageSetNode = sIterator.MoveToNext()) {
if (pPageSetNode->GetElementType() == XFA_Element::PageSet) {
XFA_ATTRIBUTEENUM eRelation =
pPageSetNode->GetEnum(XFA_ATTRIBUTE_Relation);
- if (eRelation == XFA_ATTRIBUTEENUM_OrderedOccurrence) {
+ if (eRelation == XFA_ATTRIBUTEENUM_OrderedOccurrence)
m_pPageSetMap.SetAt(pPageSetNode, 0);
- }
}
}
}
+
int32_t CXFA_LayoutPageMgr::CreateMinPageRecord(CXFA_Node* pPageArea,
FX_BOOL bTargetPageArea,
FX_BOOL bCreateLast) {
- if (!pPageArea) {
+ if (!pPageArea)
return 0;
- }
+
CXFA_Node* pOccurNode = pPageArea->GetFirstChildByClass(XFA_Element::Occur);
int32_t iMin = 0;
if ((pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) ||
bTargetPageArea) {
CXFA_Node* pContentArea =
pPageArea->GetFirstChildByClass(XFA_Element::ContentArea);
- if (iMin < 1 && bTargetPageArea && !pContentArea) {
+ if (iMin < 1 && bTargetPageArea && !pContentArea)
iMin = 1;
- }
+
int32_t i = 0;
- if (bCreateLast) {
+ if (bCreateLast)
i = m_nCurPageCount;
- }
+
for (; i < iMin; i++) {
CXFA_ContainerRecord* pNewRecord = CreateContainerRecord();
AddPageAreaLayoutItem(pNewRecord, pPageArea);
@@ -1414,18 +1445,18 @@ int32_t CXFA_LayoutPageMgr::CreateMinPageRecord(CXFA_Node* pPageArea,
}
return iMin;
}
+
void CXFA_LayoutPageMgr::CreateMinPageSetRecord(CXFA_Node* pPageSet,
FX_BOOL bCreateAll) {
- if (!pPageSet) {
+ if (!pPageSet)
return;
- }
+
int32_t iCurSetCount = 0;
- if (!m_pPageSetMap.Lookup(pPageSet, iCurSetCount)) {
+ if (!m_pPageSetMap.Lookup(pPageSet, iCurSetCount))
return;
- }
- if (bCreateAll) {
+ if (bCreateAll)
iCurSetCount = 0;
- }
+
CXFA_Node* pOccurNode = pPageSet->GetFirstChildByClass(XFA_Element::Occur);
int32_t iMin = 0;
if (pOccurNode && pOccurNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE)) {
@@ -1447,40 +1478,42 @@ void CXFA_LayoutPageMgr::CreateMinPageSetRecord(CXFA_Node* pPageSet,
}
}
}
+
void CXFA_LayoutPageMgr::CreateNextMinRecord(CXFA_Node* pRecordNode) {
- if (!pRecordNode) {
+ if (!pRecordNode)
return;
- }
+
for (CXFA_Node* pCurrentNode =
pRecordNode->GetNodeItem(XFA_NODEITEM_NextSibling);
pCurrentNode;
pCurrentNode = pCurrentNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
- if (pCurrentNode->GetElementType() == XFA_Element::PageArea) {
+ if (pCurrentNode->GetElementType() == XFA_Element::PageArea)
CreateMinPageRecord(pCurrentNode, FALSE);
- } else if (pCurrentNode->GetElementType() == XFA_Element::PageSet) {
+ else if (pCurrentNode->GetElementType() == XFA_Element::PageSet)
CreateMinPageSetRecord(pCurrentNode, TRUE);
- }
}
}
+
void CXFA_LayoutPageMgr::ProcessLastPageSet() {
CreateMinPageRecord(m_pCurPageArea, FALSE, TRUE);
CreateNextMinRecord(m_pCurPageArea);
CXFA_Node* pPageSet = m_pCurPageArea->GetNodeItem(XFA_NODEITEM_Parent);
while (TRUE) {
CreateMinPageSetRecord(pPageSet);
- if (pPageSet == m_pTemplatePageSetRoot) {
+ if (pPageSet == m_pTemplatePageSetRoot)
break;
- }
+
CreateNextMinRecord(pPageSet);
pPageSet = pPageSet->GetNodeItem(XFA_NODEITEM_Parent);
}
}
+
FX_BOOL CXFA_LayoutPageMgr::GetNextAvailContentHeight(FX_FLOAT fChildHeight) {
CXFA_Node* pCurContentNode =
GetCurrentContainerRecord()->pCurContentArea->m_pFormNode;
- if (!pCurContentNode) {
+ if (!pCurContentNode)
return FALSE;
- }
+
pCurContentNode =
pCurContentNode->GetNextSameClassSibling(XFA_Element::ContentArea);
if (pCurContentNode) {
@@ -1488,6 +1521,7 @@ FX_BOOL CXFA_LayoutPageMgr::GetNextAvailContentHeight(FX_FLOAT fChildHeight) {
pCurContentNode->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
return fNextContentHeight > fChildHeight;
}
+
CXFA_Node* pPageNode = GetCurrentContainerRecord()->pCurPageArea->m_pFormNode;
CXFA_Node* pOccurNode = pPageNode->GetFirstChildByClass(XFA_Element::Occur);
int32_t iMax = 0;
@@ -1500,14 +1534,13 @@ FX_BOOL CXFA_LayoutPageMgr::GetNextAvailContentHeight(FX_FLOAT fChildHeight) {
GetNextAvailPageArea(nullptr, nullptr, FALSE, TRUE);
m_pCurPageArea = pSrcPage;
m_nCurPageCount = nSrcPageCount;
- CXFA_ContainerRecord* pPrevRecord =
- (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext(
- psSrcRecord);
+ CXFA_ContainerRecord* pPrevRecord = static_cast<CXFA_ContainerRecord*>(
+ m_rgProposedContainerRecord.GetNext(psSrcRecord));
while (psSrcRecord) {
FX_POSITION psSaveRecord = psSrcRecord;
CXFA_ContainerRecord* pInsertRecord =
- (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext(
- psSrcRecord);
+ static_cast<CXFA_ContainerRecord*>(
+ m_rgProposedContainerRecord.GetNext(psSrcRecord));
RemoveLayoutRecord(pInsertRecord, pPrevRecord);
delete pInsertRecord;
m_rgProposedContainerRecord.RemoveAt(psSaveRecord);
@@ -1518,39 +1551,38 @@ FX_BOOL CXFA_LayoutPageMgr::GetNextAvailContentHeight(FX_FLOAT fChildHeight) {
if (pContentArea) {
FX_FLOAT fNextContentHeight =
pContentArea->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
- if (fNextContentHeight > fChildHeight) {
+ if (fNextContentHeight > fChildHeight)
return TRUE;
- }
}
}
return FALSE;
}
}
+
CXFA_Node* pContentArea =
pPageNode->GetFirstChildByClass(XFA_Element::ContentArea);
FX_FLOAT fNextContentHeight =
pContentArea->GetMeasure(XFA_ATTRIBUTE_H).ToUnit(XFA_UNIT_Pt);
- if (fNextContentHeight < XFA_LAYOUT_FLOAT_PERCISION) {
+ if (fNextContentHeight < XFA_LAYOUT_FLOAT_PERCISION)
return TRUE;
- }
- if (fNextContentHeight > fChildHeight) {
+ if (fNextContentHeight > fChildHeight)
return TRUE;
- }
return FALSE;
}
+
void CXFA_LayoutPageMgr::ClearData() {
ClearRecordList();
}
+
void CXFA_LayoutPageMgr::ClearRecordList() {
- if (!m_pTemplatePageSetRoot) {
+ if (!m_pTemplatePageSetRoot)
return;
- }
if (m_rgProposedContainerRecord.GetCount() > 0) {
FX_POSITION sPos;
sPos = m_rgProposedContainerRecord.GetHeadPosition();
while (sPos) {
- CXFA_ContainerRecord* pRecord =
- (CXFA_ContainerRecord*)m_rgProposedContainerRecord.GetNext(sPos);
+ CXFA_ContainerRecord* pRecord = static_cast<CXFA_ContainerRecord*>(
+ m_rgProposedContainerRecord.GetNext(sPos));
delete pRecord;
}
m_rgProposedContainerRecord.RemoveAll();
@@ -1561,6 +1593,7 @@ void CXFA_LayoutPageMgr::ClearRecordList() {
m_bCreateOverFlowPage = FALSE;
m_pPageSetMap.RemoveAll();
}
+
CXFA_LayoutItem* CXFA_LayoutPageMgr::FindOrCreateLayoutItem(
CXFA_Node* pFormNode) {
return pFormNode->GetDocument()->GetNotify()->OnCreateLayoutItem(pFormNode);
@@ -1577,14 +1610,15 @@ void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) {
m_pTemplatePageSetRoot->GetDocument()->GetNotify();
CXFA_LayoutProcessor* pDocLayout =
m_pTemplatePageSetRoot->GetDocument()->GetDocLayout();
- if (pCurLayoutItem->m_pFirstChild) {
+ if (pCurLayoutItem->m_pFirstChild)
SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout);
- }
+
pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem);
delete pCurLayoutItem;
pCurLayoutItem = pNextLayoutItem;
continue;
}
+
if (pCurLayoutItem->m_pFormNode->IsLayoutGeneratedNode()) {
CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode>
sIterator(pCurLayoutItem->m_pFormNode);
@@ -1594,9 +1628,10 @@ void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) {
}
}
}
- if (pCurLayoutItem->m_pFirstChild) {
+
+ if (pCurLayoutItem->m_pFirstChild)
SaveLayoutItem(pCurLayoutItem);
- }
+
pCurLayoutItem->m_pParent = nullptr;
pCurLayoutItem->m_pNextSibling = nullptr;
pCurLayoutItem->m_pFirstChild = nullptr;
@@ -1608,6 +1643,7 @@ void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) {
pCurLayoutItem = pNextLayoutItem;
}
}
+
CXFA_Node* CXFA_LayoutPageMgr::QueryOverflow(
CXFA_Node* pFormNode,
CXFA_LayoutContext* pLayoutContext) {
@@ -1625,9 +1661,9 @@ CXFA_Node* CXFA_LayoutPageMgr::QueryOverflow(
return pCurNode;
}
return nullptr;
- } else if (pCurNode->GetElementType() == XFA_Element::Overflow) {
- return pCurNode;
}
+ if (pCurNode->GetElementType() == XFA_Element::Overflow)
+ return pCurNode;
}
return nullptr;
}
@@ -1655,9 +1691,10 @@ void CXFA_LayoutPageMgr::MergePageSetContents() {
}
}
}
+
int32_t iIndex = 0;
- for (; pRootLayout;
- pRootLayout = (CXFA_ContainerLayoutItem*)pRootLayout->m_pNextSibling) {
+ for (; pRootLayout; pRootLayout = static_cast<CXFA_ContainerLayoutItem*>(
+ pRootLayout->m_pNextSibling)) {
CXFA_Node* pPendingPageSet = nullptr;
CXFA_NodeIteratorTemplate<
CXFA_ContainerLayoutItem,
@@ -1689,28 +1726,30 @@ void CXFA_LayoutPageMgr::MergePageSetContents() {
for (CXFA_ContainerLayoutItem* pContainerItem = iterator.MoveToNext();
pContainerItem; pContainerItem = iterator.MoveToNext()) {
CXFA_Node* pNode = pContainerItem->m_pFormNode;
- if (pNode->GetPacketID() != XFA_XDPPACKET_Template) {
+ if (pNode->GetPacketID() != XFA_XDPPACKET_Template)
continue;
- }
+
switch (pNode->GetElementType()) {
case XFA_Element::PageSet: {
CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode;
pContainerItem->m_pFormNode = XFA_NodeMerge_CloneOrMergeContainer(
pDocument, pParentNode, pContainerItem->m_pFormNode, TRUE,
nullptr);
- } break;
+ break;
+ }
case XFA_Element::PageArea: {
CXFA_ContainerLayoutItem* pFormLayout = pContainerItem;
CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode;
FX_BOOL bIsExistForm = TRUE;
for (int32_t iLevel = 0; iLevel < 3; iLevel++) {
- pFormLayout = (CXFA_ContainerLayoutItem*)pFormLayout->m_pFirstChild;
+ pFormLayout = static_cast<CXFA_ContainerLayoutItem*>(
+ pFormLayout->m_pFirstChild);
if (iLevel == 2) {
while (pFormLayout &&
!XFA_ItemLayoutProcessor_IsTakingSpace(
pFormLayout->m_pFormNode)) {
- pFormLayout =
- (CXFA_ContainerLayoutItem*)pFormLayout->m_pNextSibling;
+ pFormLayout = static_cast<CXFA_ContainerLayoutItem*>(
+ pFormLayout->m_pNextSibling);
}
}
if (!pFormLayout) {
@@ -1747,7 +1786,8 @@ void CXFA_LayoutPageMgr::MergePageSetContents() {
pContainerItem->m_pFormNode, pParentNode,
ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)), TRUE, TRUE,
TRUE);
- } break;
+ break;
+ }
case XFA_Element::ContentArea: {
CXFA_Node* pParentNode = pContainerItem->m_pParent->m_pFormNode;
for (CXFA_Node* pChildNode =
@@ -1760,7 +1800,8 @@ void CXFA_LayoutPageMgr::MergePageSetContents() {
pContainerItem->m_pFormNode = pChildNode;
break;
}
- } break;
+ break;
+ }
default:
break;
}
@@ -1775,6 +1816,7 @@ void CXFA_LayoutPageMgr::MergePageSetContents() {
pDocument->DataMerge_UpdateBindingRelations(pPendingPageSet);
pPendingPageSet->SetFlag(XFA_NodeFlag_Initialized, true);
}
+
CXFA_Node* pPageSet = GetRootLayoutItem()->m_pFormNode;
while (pPageSet) {
CXFA_Node* pNextPageSet =
@@ -1825,8 +1867,8 @@ void CXFA_LayoutPageMgr::MergePageSetContents() {
void CXFA_LayoutPageMgr::LayoutPageSetContents() {
CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem();
for (; pRootLayoutItem;
- pRootLayoutItem =
- (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) {
+ pRootLayoutItem = static_cast<CXFA_ContainerLayoutItem*>(
+ pRootLayoutItem->m_pNextSibling)) {
CXFA_NodeIteratorTemplate<
CXFA_ContainerLayoutItem,
CXFA_TraverseStrategy_ContentAreaContainerLayoutItem>
@@ -1853,8 +1895,8 @@ void CXFA_LayoutPageMgr::SyncLayoutData() {
int32_t nPageIdx = -1;
CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem();
for (; pRootLayoutItem;
- pRootLayoutItem =
- (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) {
+ pRootLayoutItem = static_cast<CXFA_ContainerLayoutItem*>(
+ pRootLayoutItem->m_pNextSibling)) {
CXFA_NodeIteratorTemplate<
CXFA_ContainerLayoutItem,
CXFA_TraverseStrategy_ContentAreaContainerLayoutItem>
@@ -1886,12 +1928,14 @@ void CXFA_LayoutPageMgr::SyncLayoutData() {
dwRelevantChild, bVisible, nPageIdx);
pChildLayoutItem = iterator.SkipChildrenAndMoveToNext();
}
- } break;
+ break;
+ }
default:
break;
}
}
}
+
int32_t nPage = m_PageArray.GetSize();
for (int32_t i = nPage - 1; i >= m_nAvailPages; i--) {
CXFA_ContainerLayoutItem* pPage = m_PageArray[i];
@@ -1901,6 +1945,7 @@ void CXFA_LayoutPageMgr::SyncLayoutData() {
}
ClearRecordList();
}
+
void XFA_ReleaseLayoutItem_NoPageArea(CXFA_LayoutItem* pLayoutItem) {
CXFA_LayoutItem *pNext, *pNode = pLayoutItem->m_pFirstChild;
while (pNode) {
@@ -1909,18 +1954,18 @@ void XFA_ReleaseLayoutItem_NoPageArea(CXFA_LayoutItem* pLayoutItem) {
XFA_ReleaseLayoutItem_NoPageArea(pNode);
pNode = pNext;
}
- if (pLayoutItem->m_pFormNode->GetElementType() != XFA_Element::PageArea) {
+ if (pLayoutItem->m_pFormNode->GetElementType() != XFA_Element::PageArea)
delete pLayoutItem;
- }
}
+
void CXFA_LayoutPageMgr::PrepareLayout() {
m_pPageSetCurRoot = nullptr;
m_ePageSetMode = XFA_ATTRIBUTEENUM_OrderedOccurrence;
m_nAvailPages = 0;
ClearRecordList();
- if (!m_pPageSetLayoutItemRoot) {
+ if (!m_pPageSetLayoutItemRoot)
return;
- }
+
CXFA_ContainerLayoutItem* pRootLayoutItem = m_pPageSetLayoutItemRoot;
if (pRootLayoutItem &&
pRootLayoutItem->m_pFormNode->GetPacketID() == XFA_XDPPACKET_Form) {
@@ -1946,7 +1991,8 @@ void CXFA_LayoutPageMgr::PrepareLayout() {
pRootLayoutItem = m_pPageSetLayoutItemRoot;
CXFA_ContainerLayoutItem* pNextLayout = nullptr;
for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) {
- pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling;
+ pNextLayout =
+ static_cast<CXFA_ContainerLayoutItem*>(pRootLayoutItem->m_pNextSibling);
SaveLayoutItem(pRootLayoutItem);
delete pRootLayoutItem;
}
diff --git a/xfa/fxfa/parser/xfa_layout_pagemgr_new.h b/xfa/fxfa/parser/cxfa_layoutpagemgr.h
index f4cc175dcb..0184602de7 100644
--- a/xfa/fxfa/parser/xfa_layout_pagemgr_new.h
+++ b/xfa/fxfa/parser/cxfa_layoutpagemgr.h
@@ -4,26 +4,14 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#ifndef XFA_FXFA_PARSER_XFA_LAYOUT_PAGEMGR_NEW_H_
-#define XFA_FXFA_PARSER_XFA_LAYOUT_PAGEMGR_NEW_H_
+#ifndef XFA_FXFA_PARSER_CXFA_LAYOUTPAGEMGR_H_
+#define XFA_FXFA_PARSER_CXFA_LAYOUTPAGEMGR_H_
#include "xfa/fxfa/parser/xfa_layout_itemlayout.h"
+class CXFA_ContainerRecord;
class CXFA_LayoutItem;
-class CXFA_ContainerRecord {
- public:
- CXFA_ContainerRecord(CXFA_ContainerLayoutItem* pPageSet = nullptr,
- CXFA_ContainerLayoutItem* pPageArea = nullptr,
- CXFA_ContainerLayoutItem* pContentArea = nullptr)
- : pCurPageSet(pPageSet),
- pCurPageArea(pPageArea),
- pCurContentArea(pContentArea) {}
- CXFA_ContainerLayoutItem* pCurPageSet;
- CXFA_ContainerLayoutItem* pCurPageArea;
- CXFA_ContainerLayoutItem* pCurContentArea;
-};
-
class CXFA_LayoutPageMgr {
public:
CXFA_LayoutPageMgr(CXFA_LayoutProcessor* pLayoutProcessor);
@@ -153,4 +141,4 @@ class CXFA_LayoutPageMgr {
CFX_ArrayTemplate<CXFA_ContainerLayoutItem*> m_PageArray;
};
-#endif // XFA_FXFA_PARSER_XFA_LAYOUT_PAGEMGR_NEW_H_
+#endif // XFA_FXFA_PARSER_CXFA_LAYOUTPAGEMGR_H_
diff --git a/xfa/fxfa/parser/cxfa_layoutprocessor.cpp b/xfa/fxfa/parser/cxfa_layoutprocessor.cpp
index 875bcc6542..1f3bc880eb 100644
--- a/xfa/fxfa/parser/cxfa_layoutprocessor.cpp
+++ b/xfa/fxfa/parser/cxfa_layoutprocessor.cpp
@@ -8,10 +8,10 @@
#include "xfa/fxfa/parser/cxfa_contentlayoutitem.h"
#include "xfa/fxfa/parser/cxfa_document.h"
+#include "xfa/fxfa/parser/cxfa_layoutpagemgr.h"
#include "xfa/fxfa/parser/cxfa_measurement.h"
#include "xfa/fxfa/parser/xfa_document_datamerger_imp.h"
#include "xfa/fxfa/parser/xfa_layout_itemlayout.h"
-#include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
#include "xfa/fxfa/parser/xfa_localemgr.h"
#include "xfa/fxfa/parser/xfa_object.h"
#include "xfa/fxfa/parser/xfa_utils.h"
diff --git a/xfa/fxfa/parser/xfa_layout_itemlayout.cpp b/xfa/fxfa/parser/xfa_layout_itemlayout.cpp
index 72a3ff4f18..1f2e1ea089 100644
--- a/xfa/fxfa/parser/xfa_layout_itemlayout.cpp
+++ b/xfa/fxfa/parser/xfa_layout_itemlayout.cpp
@@ -13,9 +13,9 @@
#include "xfa/fxfa/parser/cxfa_containerlayoutitem.h"
#include "xfa/fxfa/parser/cxfa_contentlayoutitem.h"
#include "xfa/fxfa/parser/cxfa_document.h"
+#include "xfa/fxfa/parser/cxfa_layoutpagemgr.h"
#include "xfa/fxfa/parser/cxfa_measurement.h"
#include "xfa/fxfa/parser/cxfa_occur.h"
-#include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h"
#include "xfa/fxfa/parser/xfa_localemgr.h"
#include "xfa/fxfa/parser/xfa_object.h"
#include "xfa/fxfa/parser/xfa_utils.h"