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);
}