summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-11-30 20:21:00 +0000
committerChromium commit bot <commit-bot@chromium.org>2017-11-30 20:21:00 +0000
commit5fda35f2b0a658e310f778c2dc40ef24e6d05975 (patch)
tree3daddbde21cef2a9aa3aa2827a1c34ef06ad6a85 /xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
parent0be087619a60b8bc6e2ed2e14c54f67aa8e963e4 (diff)
downloadpdfium-5fda35f2b0a658e310f778c2dc40ef24e6d05975.tar.xz
Generate XFA node attribute information
This CL moves the attribute information out of the xfa basic data array and stores in the generated nodes. Change-Id: Id8e280324bf0f75a1da9c937c2734d161324242d Reviewed-on: https://pdfium-review.googlesource.com/19271 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp')
-rw-r--r--xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp b/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
index 8fe36b0bbf..d6ed0ccf0c 100644
--- a/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
+++ b/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
@@ -1191,8 +1191,9 @@ CXFA_ContentLayoutItem* CXFA_ItemLayoutProcessor::CreateContentLayoutItem(
float CXFA_ItemLayoutProcessor::FindSplitPos(float fProposedSplitPos) {
ASSERT(m_pLayoutItem);
- XFA_ATTRIBUTEENUM eLayout =
- m_pFormNode->JSNode()->GetEnum(XFA_Attribute::Layout);
+ XFA_ATTRIBUTEENUM eLayout = m_pFormNode->JSNode()
+ ->TryEnum(XFA_Attribute::Layout, true)
+ .value_or(XFA_ATTRIBUTEENUM_Position);
bool bCalculateMargin = eLayout != XFA_ATTRIBUTEENUM_Position;
while (fProposedSplitPos > XFA_LAYOUT_FLOAT_PERCISION) {
bool bAppChange = false;
@@ -1209,8 +1210,9 @@ void CXFA_ItemLayoutProcessor::SplitLayoutItem(
CXFA_ContentLayoutItem* pSecondParent,
float fSplitPos) {
float fCurTopMargin = 0, fCurBottomMargin = 0;
- XFA_ATTRIBUTEENUM eLayout =
- m_pFormNode->JSNode()->GetEnum(XFA_Attribute::Layout);
+ XFA_ATTRIBUTEENUM eLayout = m_pFormNode->JSNode()
+ ->TryEnum(XFA_Attribute::Layout, true)
+ .value_or(XFA_ATTRIBUTEENUM_Position);
bool bCalculateMargin = true;
if (eLayout == XFA_ATTRIBUTEENUM_Position)
bCalculateMargin = false;
@@ -1582,8 +1584,9 @@ bool CXFA_ItemLayoutProcessor::ProcessKeepNodesForBreakBefore(
}
bool XFA_ItemLayoutProcessor_IsTakingSpace(CXFA_Node* pNode) {
- XFA_ATTRIBUTEENUM ePresence =
- pNode->JSNode()->GetEnum(XFA_Attribute::Presence);
+ XFA_ATTRIBUTEENUM ePresence = pNode->JSNode()
+ ->TryEnum(XFA_Attribute::Presence, true)
+ .value_or(XFA_ATTRIBUTEENUM_Visible);
return ePresence == XFA_ATTRIBUTEENUM_Visible ||
ePresence == XFA_ATTRIBUTEENUM_Invisible;
}
@@ -1657,8 +1660,10 @@ void CXFA_ItemLayoutProcessor::DoLayoutPositionedContainer(
return;
m_pLayoutItem = CreateContentLayoutItem(m_pFormNode);
- bool bIgnoreXY = (m_pFormNode->JSNode()->GetEnum(XFA_Attribute::Layout) !=
- XFA_ATTRIBUTEENUM_Position);
+ bool bIgnoreXY =
+ (m_pFormNode->JSNode()
+ ->TryEnum(XFA_Attribute::Layout, true)
+ .value_or(XFA_ATTRIBUTEENUM_Position) != XFA_ATTRIBUTEENUM_Position);
bool bContainerWidthAutoSize = true;
bool bContainerHeightAutoSize = true;
CFX_SizeF containerSize = CalculateContainerSpecifiedSize(