Add CJX_Object::GetMeasureInUnit(); GetMeasureInUnit(attr, unit) is syntactic sugar for GetMeasure(attr).ToUnit(unit) that auto-formats better. Change-Id: I0630797c3561d7e62ac180c4e4bb5dc8c5018bd7 Reviewed-on: https://pdfium-review.googlesource.com/c/50411 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp index f8e1c95..5cec0c7 100644 --- a/fxjs/xfa/cjx_object.cpp +++ b/fxjs/xfa/cjx_object.cpp
@@ -426,6 +426,11 @@ return TryMeasure(eAttr, true).value_or(CXFA_Measurement()); } +float CJX_Object::GetMeasureInUnit(XFA_Attribute eAttr, XFA_Unit unit) const { + auto measure = TryMeasure(eAttr, true).value_or(CXFA_Measurement()); + return measure.ToUnit(unit); +} + WideString CJX_Object::GetCData(XFA_Attribute eAttr) { return TryCData(eAttr, true).value_or(WideString()); }
diff --git a/fxjs/xfa/cjx_object.h b/fxjs/xfa/cjx_object.h index d94dcea..48a1361 100644 --- a/fxjs/xfa/cjx_object.h +++ b/fxjs/xfa/cjx_object.h
@@ -217,6 +217,7 @@ Optional<float> TryMeasureAsFloat(XFA_Attribute attr) const; void SetMeasure(XFA_Attribute eAttr, CXFA_Measurement mValue, bool bNotify); CXFA_Measurement GetMeasure(XFA_Attribute eAttr) const; + float GetMeasureInUnit(XFA_Attribute eAttr, XFA_Unit unit) const; void MergeAllData(CXFA_Object* pDstModule);
diff --git a/xfa/fxfa/layout/cxfa_containerlayoutitem.cpp b/xfa/fxfa/layout/cxfa_containerlayoutitem.cpp index 88b6e35..6d5e313 100644 --- a/xfa/fxfa/layout/cxfa_containerlayoutitem.cpp +++ b/xfa/fxfa/layout/cxfa_containerlayoutitem.cpp
@@ -36,12 +36,9 @@ if (!pMedium) return size; - size = CFX_SizeF(pMedium->JSObject() - ->GetMeasure(XFA_Attribute::Short) - .ToUnit(XFA_Unit::Pt), - pMedium->JSObject() - ->GetMeasure(XFA_Attribute::Long) - .ToUnit(XFA_Unit::Pt)); + size = CFX_SizeF( + pMedium->JSObject()->GetMeasureInUnit(XFA_Attribute::Short, XFA_Unit::Pt), + pMedium->JSObject()->GetMeasureInUnit(XFA_Attribute::Long, XFA_Unit::Pt)); if (pMedium->JSObject()->GetEnum(XFA_Attribute::Orientation) == XFA_AttributeValue::Landscape) { size = CFX_SizeF(size.height, size.width);
diff --git a/xfa/fxfa/layout/cxfa_contentlayoutitem.cpp b/xfa/fxfa/layout/cxfa_contentlayoutitem.cpp index 600d1b9..bc97674 100644 --- a/xfa/fxfa/layout/cxfa_contentlayoutitem.cpp +++ b/xfa/fxfa/layout/cxfa_contentlayoutitem.cpp
@@ -69,26 +69,21 @@ pContent->m_pFormNode->GetFirstChildByClass<CXFA_Margin>( XFA_Element::Margin); if (pMarginNode) { - sPos += CFX_PointF(pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::LeftInset) - .ToUnit(XFA_Unit::Pt), - pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::TopInset) - .ToUnit(XFA_Unit::Pt)); + sPos += CFX_PointF(pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::LeftInset, XFA_Unit::Pt), + pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::TopInset, XFA_Unit::Pt)); } continue; } if (pLayoutItem->GetFormNode()->GetElementType() == XFA_Element::ContentArea) { - sPos += CFX_PointF(pLayoutItem->GetFormNode() - ->JSObject() - ->GetMeasure(XFA_Attribute::X) - .ToUnit(XFA_Unit::Pt), - pLayoutItem->GetFormNode() - ->JSObject() - ->GetMeasure(XFA_Attribute::Y) - .ToUnit(XFA_Unit::Pt)); + sPos += + CFX_PointF(pLayoutItem->GetFormNode()->JSObject()->GetMeasureInUnit( + XFA_Attribute::X, XFA_Unit::Pt), + pLayoutItem->GetFormNode()->JSObject()->GetMeasureInUnit( + XFA_Attribute::Y, XFA_Unit::Pt)); break; } if (pLayoutItem->GetFormNode()->GetElementType() == XFA_Element::PageArea)
diff --git a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp index 007481a..7271930 100644 --- a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp +++ b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
@@ -187,18 +187,14 @@ float fRightInset = 0; float fBottomInset = 0; if (pMarginNode) { - fLeftInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::LeftInset) - .ToUnit(XFA_Unit::Pt); - fTopInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::TopInset) - .ToUnit(XFA_Unit::Pt); - fRightInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::RightInset) - .ToUnit(XFA_Unit::Pt); - fBottomInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::BottomInset) - .ToUnit(XFA_Unit::Pt); + fLeftInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::LeftInset, XFA_Unit::Pt); + fTopInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::TopInset, XFA_Unit::Pt); + fRightInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::RightInset, XFA_Unit::Pt); + fBottomInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::BottomInset, XFA_Unit::Pt); } float fContentWidthLimit = @@ -486,12 +482,10 @@ CXFA_Margin* pMarginNode = pFormNode->GetFirstChildByClass<CXFA_Margin>(XFA_Element::Margin); if (pMarginNode && bCalculateMargin) { - fCurTopMargin = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::TopInset) - .ToUnit(XFA_Unit::Pt); - fCurBottomMargin = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::BottomInset) - .ToUnit(XFA_Unit::Pt); + fCurTopMargin = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::TopInset, XFA_Unit::Pt); + fCurBottomMargin = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::BottomInset, XFA_Unit::Pt); } bool bChanged = true; while (bChanged) { @@ -592,8 +586,8 @@ {2, 5, 8, 1, 4, 7, 0, 3, 6}}; CFX_PointF pos( - pNode->JSObject()->GetMeasure(XFA_Attribute::X).ToUnit(XFA_Unit::Pt), - pNode->JSObject()->GetMeasure(XFA_Attribute::Y).ToUnit(XFA_Unit::Pt)); + pNode->JSObject()->GetMeasureInUnit(XFA_Attribute::X, XFA_Unit::Pt), + pNode->JSObject()->GetMeasureInUnit(XFA_Attribute::Y, XFA_Unit::Pt)); int32_t nRotate = XFA_MapRotation(pNode->JSObject()->GetInteger(XFA_Attribute::Rotate)) / 90; @@ -691,12 +685,10 @@ pLayoutItem->GetFormNode()->GetFirstChildByClass<CXFA_Margin>( XFA_Element::Margin); if (pMarginNode && bCalculateMargin) { - fCurTopMargin = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::TopInset) - .ToUnit(XFA_Unit::Pt); - fCurBottomMargin = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::BottomInset) - .ToUnit(XFA_Unit::Pt); + fCurTopMargin = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::TopInset, XFA_Unit::Pt); + fCurBottomMargin = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::BottomInset, XFA_Unit::Pt); } CXFA_ContentLayoutItem* pSecondLayoutItem = nullptr; @@ -1188,12 +1180,10 @@ float fLeftInset = 0; float fRightInset = 0; if (pMarginNode) { - fLeftInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::LeftInset) - .ToUnit(XFA_Unit::Pt); - fRightInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::RightInset) - .ToUnit(XFA_Unit::Pt); + fLeftInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::LeftInset, XFA_Unit::Pt); + fRightInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::RightInset, XFA_Unit::Pt); } float fContentWidthLimit = @@ -1587,18 +1577,14 @@ float fRightInset = 0; float fBottomInset = 0; if (pMarginNode) { - fLeftInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::LeftInset) - .ToUnit(XFA_Unit::Pt); - fTopInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::TopInset) - .ToUnit(XFA_Unit::Pt); - fRightInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::RightInset) - .ToUnit(XFA_Unit::Pt); - fBottomInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::BottomInset) - .ToUnit(XFA_Unit::Pt); + fLeftInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::LeftInset, XFA_Unit::Pt); + fTopInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::TopInset, XFA_Unit::Pt); + fRightInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::RightInset, XFA_Unit::Pt); + fBottomInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::BottomInset, XFA_Unit::Pt); } float fContentWidthLimit = bContainerWidthAutoSize ? FLT_MAX @@ -2285,18 +2271,14 @@ float fRightInset = 0; float fBottomInset = 0; if (pMarginNode) { - fLeftInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::LeftInset) - .ToUnit(XFA_Unit::Pt); - fTopInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::TopInset) - .ToUnit(XFA_Unit::Pt); - fRightInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::RightInset) - .ToUnit(XFA_Unit::Pt); - fBottomInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::BottomInset) - .ToUnit(XFA_Unit::Pt); + fLeftInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::LeftInset, XFA_Unit::Pt); + fTopInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::TopInset, XFA_Unit::Pt); + fRightInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::RightInset, XFA_Unit::Pt); + fBottomInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::BottomInset, XFA_Unit::Pt); } if (!IsAddNewRowForTrailer(pTrailerLayoutItem)) { @@ -2349,12 +2331,10 @@ float fLeftInset = 0; float fRightInset = 0; if (pMarginNode) { - fLeftInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::LeftInset) - .ToUnit(XFA_Unit::Pt); - fRightInset = pMarginNode->JSObject() - ->GetMeasure(XFA_Attribute::RightInset) - .ToUnit(XFA_Unit::Pt); + fLeftInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::LeftInset, XFA_Unit::Pt); + fRightInset = pMarginNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::RightInset, XFA_Unit::Pt); } float fHeight = pLeaderLayoutItem->m_sSize.height;
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp index 04688b8..967f377 100644 --- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp +++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -495,10 +495,8 @@ if (!pLayoutItem || !pLayoutItem->GetFormNode()) return 0.0f; - float fAvailHeight = pLayoutItem->GetFormNode() - ->JSObject() - ->GetMeasure(XFA_Attribute::H) - .ToUnit(XFA_Unit::Pt); + float fAvailHeight = pLayoutItem->GetFormNode()->JSObject()->GetMeasureInUnit( + XFA_Attribute::H, XFA_Unit::Pt); if (fAvailHeight >= kXFALayoutPrecision) return fAvailHeight; if (m_CurrentContainerRecordIter == m_ProposedContainerRecords.begin()) @@ -702,10 +700,10 @@ continue; } iCurContentAreaIndex++; - const float fHeight = pContentAreaNode->JSObject() - ->GetMeasure(XFA_Attribute::H) - .ToUnit(XFA_Unit::Pt) + - kXFALayoutPrecision; + const float fHeight = + pContentAreaNode->JSObject()->GetMeasureInUnit(XFA_Attribute::H, + XFA_Unit::Pt) + + kXFALayoutPrecision; if (rgUsedHeights[iCurContentAreaIndex] > fHeight) { bUsable = false; break; @@ -1548,9 +1546,8 @@ pCurContentNode = pCurContentNode->GetNextSameClassSibling<CXFA_ContentArea>( XFA_Element::ContentArea); if (pCurContentNode) { - float fNextContentHeight = pCurContentNode->JSObject() - ->GetMeasure(XFA_Attribute::H) - .ToUnit(XFA_Unit::Pt); + float fNextContentHeight = pCurContentNode->JSObject()->GetMeasureInUnit( + XFA_Attribute::H, XFA_Unit::Pt); return fNextContentHeight > fChildHeight; } @@ -1587,9 +1584,8 @@ pNextPage->GetFirstChildByClass<CXFA_ContentArea>( XFA_Element::ContentArea); if (pContentArea) { - float fNextContentHeight = pContentArea->JSObject() - ->GetMeasure(XFA_Attribute::H) - .ToUnit(XFA_Unit::Pt); + float fNextContentHeight = pContentArea->JSObject()->GetMeasureInUnit( + XFA_Attribute::H, XFA_Unit::Pt); if (fNextContentHeight > fChildHeight) return true; } @@ -1603,9 +1599,8 @@ if (!pContentArea) return false; - float fNextContentHeight = pContentArea->JSObject() - ->GetMeasure(XFA_Attribute::H) - .ToUnit(XFA_Unit::Pt); + float fNextContentHeight = pContentArea->JSObject()->GetMeasureInUnit( + XFA_Attribute::H, XFA_Unit::Pt); if (fNextContentHeight < kXFALayoutPrecision) return true; if (fNextContentHeight > fChildHeight)
diff --git a/xfa/fxfa/layout/cxfa_layoutprocessor.cpp b/xfa/fxfa/layout/cxfa_layoutprocessor.cpp index dd6c11c..45b54d6 100644 --- a/xfa/fxfa/layout/cxfa_layoutprocessor.cpp +++ b/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
@@ -66,9 +66,9 @@ XFA_ItemLayoutProcessorResult eStatus; CXFA_Node* pFormNode = m_pRootItemLayoutProcessor->GetFormNode(); float fPosX = - pFormNode->JSObject()->GetMeasure(XFA_Attribute::X).ToUnit(XFA_Unit::Pt); + pFormNode->JSObject()->GetMeasureInUnit(XFA_Attribute::X, XFA_Unit::Pt); float fPosY = - pFormNode->JSObject()->GetMeasure(XFA_Attribute::Y).ToUnit(XFA_Unit::Pt); + pFormNode->JSObject()->GetMeasureInUnit(XFA_Attribute::Y, XFA_Unit::Pt); do { float fAvailHeight = m_pLayoutPageMgr->GetAvailHeight(); eStatus = m_pRootItemLayoutProcessor->DoLayout(true, fAvailHeight,
diff --git a/xfa/fxfa/parser/cxfa_caption.cpp b/xfa/fxfa/parser/cxfa_caption.cpp index 7ee88e6..1fadb8d 100644 --- a/xfa/fxfa/parser/cxfa_caption.cpp +++ b/xfa/fxfa/parser/cxfa_caption.cpp
@@ -62,7 +62,7 @@ } float CXFA_Caption::GetReserve() const { - return JSObject()->GetMeasure(XFA_Attribute::Reserve).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::Reserve, XFA_Unit::Pt); } CXFA_Margin* CXFA_Caption::GetMarginIfExists() {
diff --git a/xfa/fxfa/parser/cxfa_font.cpp b/xfa/fxfa/parser/cxfa_font.cpp index 20d8cc8..70e8426 100644 --- a/xfa/fxfa/parser/cxfa_font.cpp +++ b/xfa/fxfa/parser/cxfa_font.cpp
@@ -66,9 +66,8 @@ CXFA_Font::~CXFA_Font() = default; float CXFA_Font::GetBaselineShift() const { - return JSObject() - ->GetMeasure(XFA_Attribute::BaselineShift) - .ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::BaselineShift, + XFA_Unit::Pt); } float CXFA_Font::GetHorizontalScale() { @@ -106,7 +105,7 @@ } float CXFA_Font::GetFontSize() const { - return JSObject()->GetMeasure(XFA_Attribute::Size).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::Size, XFA_Unit::Pt); } WideString CXFA_Font::GetTypeface() {
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp index 9ebd303..90acafb 100644 --- a/xfa/fxfa/parser/cxfa_node.cpp +++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -3833,9 +3833,8 @@ float CXFA_Node::GetCheckButtonSize() { CXFA_Node* pUIChild = GetUIChildNode(); if (pUIChild) { - return pUIChild->JSObject() - ->GetMeasure(XFA_Attribute::Size) - .ToUnit(XFA_Unit::Pt); + return pUIChild->JSObject()->GetMeasureInUnit(XFA_Attribute::Size, + XFA_Unit::Pt); } return CXFA_Measurement(10, XFA_Unit::Pt).ToUnit(XFA_Unit::Pt); }
diff --git a/xfa/fxfa/parser/cxfa_para.cpp b/xfa/fxfa/parser/cxfa_para.cpp index af873d3..6907baf 100644 --- a/xfa/fxfa/parser/cxfa_para.cpp +++ b/xfa/fxfa/parser/cxfa_para.cpp
@@ -65,27 +65,25 @@ } float CXFA_Para::GetLineHeight() { - return JSObject()->GetMeasure(XFA_Attribute::LineHeight).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::LineHeight, XFA_Unit::Pt); } float CXFA_Para::GetMarginLeft() { - return JSObject()->GetMeasure(XFA_Attribute::MarginLeft).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::MarginLeft, XFA_Unit::Pt); } float CXFA_Para::GetMarginRight() { - return JSObject() - ->GetMeasure(XFA_Attribute::MarginRight) - .ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::MarginRight, XFA_Unit::Pt); } float CXFA_Para::GetSpaceAbove() { - return JSObject()->GetMeasure(XFA_Attribute::SpaceAbove).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::SpaceAbove, XFA_Unit::Pt); } float CXFA_Para::GetSpaceBelow() { - return JSObject()->GetMeasure(XFA_Attribute::SpaceBelow).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::SpaceBelow, XFA_Unit::Pt); } float CXFA_Para::GetTextIndent() { - return JSObject()->GetMeasure(XFA_Attribute::TextIndent).ToUnit(XFA_Unit::Pt); + return JSObject()->GetMeasureInUnit(XFA_Attribute::TextIndent, XFA_Unit::Pt); }