Fold CXFA_MarginData into CXFA_Margin This CL removes the CXFA_MarginData wrapper and moves the methods directly to CXFA_Margin. Change-Id: I7c9e979fb78d0d356605f1318489daabcb8c32cd Reviewed-on: https://pdfium-review.googlesource.com/22110 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn index b6482c7..4533544 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -2432,8 +2432,6 @@ "xfa/fxfa/parser/cxfa_map.h", "xfa/fxfa/parser/cxfa_margin.cpp", "xfa/fxfa/parser/cxfa_margin.h", - "xfa/fxfa/parser/cxfa_margindata.cpp", - "xfa/fxfa/parser/cxfa_margindata.h", "xfa/fxfa/parser/cxfa_mdp.cpp", "xfa/fxfa/parser/cxfa_mdp.h", "xfa/fxfa/parser/cxfa_measurement.cpp",
diff --git a/fxjs/xfa/cjx_object.cpp b/fxjs/xfa/cjx_object.cpp index 304b861..b1e3030 100644 --- a/fxjs/xfa/cjx_object.cpp +++ b/fxjs/xfa/cjx_object.cpp
@@ -431,6 +431,14 @@ return ToNode(GetXFAObject())->GetDefaultMeasurement(eAttr); } +pdfium::Optional<float> CJX_Object::TryMeasureAsFloat( + XFA_Attribute attr) const { + pdfium::Optional<CXFA_Measurement> measure = TryMeasure(attr, false); + if (measure) + return {measure->ToUnit(XFA_Unit::Pt)}; + return {}; +} + CXFA_Measurement CJX_Object::GetMeasure(XFA_Attribute eAttr) const { return TryMeasure(eAttr, true).value_or(CXFA_Measurement()); }
diff --git a/fxjs/xfa/cjx_object.h b/fxjs/xfa/cjx_object.h index f6ce3cc..32bb01f 100644 --- a/fxjs/xfa/cjx_object.h +++ b/fxjs/xfa/cjx_object.h
@@ -197,6 +197,7 @@ pdfium::Optional<CXFA_Measurement> TryMeasure(XFA_Attribute eAttr, bool bUseDefault) const; + pdfium::Optional<float> TryMeasureAsFloat(XFA_Attribute attr) const; bool SetMeasure(XFA_Attribute eAttr, CXFA_Measurement mValue, bool bNotify); CXFA_Measurement GetMeasure(XFA_Attribute eAttr) const;
diff --git a/xfa/fxfa/cxfa_ffarc.cpp b/xfa/fxfa/cxfa_ffarc.cpp index 7f9e938..e670ba9 100644 --- a/xfa/fxfa/cxfa_ffarc.cpp +++ b/xfa/fxfa/cxfa_ffarc.cpp
@@ -23,9 +23,9 @@ return; CFX_RectF rtArc = GetRectWithoutRotate(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rtArc, marginData); + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) + XFA_RectWidthoutMargin(rtArc, margin); CFX_Matrix mtRotate = GetRotateMatrix(); mtRotate.Concat(matrix);
diff --git a/xfa/fxfa/cxfa_ffcheckbutton.cpp b/xfa/fxfa/cxfa_ffcheckbutton.cpp index 8dc2882..0036978 100644 --- a/xfa/fxfa/cxfa_ffcheckbutton.cpp +++ b/xfa/fxfa/cxfa_ffcheckbutton.cpp
@@ -89,10 +89,10 @@ CXFA_FFWidget::PerformLayout(); float fCheckSize = m_pDataAcc->GetCheckButtonSize(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); + CXFA_Margin* margin = m_pDataAcc->GetMargin(); CFX_RectF rtWidget = GetRectWithoutRotate(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rtWidget, marginData); + if (margin) + XFA_RectWidthoutMargin(rtWidget, margin); XFA_AttributeEnum iCapPlacement = XFA_AttributeEnum::Unknown; float fCapReserve = 0; @@ -120,18 +120,18 @@ } m_rtUI = rtWidget; - CXFA_MarginData captionMarginData = captionData.GetMarginData(); + CXFA_Margin* captionMargin = captionData.GetMargin(); switch (iCapPlacement) { case XFA_AttributeEnum::Left: { m_rtCaption.width = fCapReserve; - CapLeftRightPlacement(captionMarginData); + CapLeftRightPlacement(captionMargin); m_rtUI.width -= fCapReserve; m_rtUI.left += fCapReserve; break; } case XFA_AttributeEnum::Top: { m_rtCaption.height = fCapReserve; - XFA_RectWidthoutMargin(m_rtCaption, captionMarginData); + XFA_RectWidthoutMargin(m_rtCaption, captionMargin); m_rtUI.height -= fCapReserve; m_rtUI.top += fCapReserve; break; @@ -139,14 +139,14 @@ case XFA_AttributeEnum::Right: { m_rtCaption.left = m_rtCaption.right() - fCapReserve; m_rtCaption.width = fCapReserve; - CapLeftRightPlacement(captionMarginData); + CapLeftRightPlacement(captionMargin); m_rtUI.width -= fCapReserve; break; } case XFA_AttributeEnum::Bottom: { m_rtCaption.top = m_rtCaption.bottom() - fCapReserve; m_rtCaption.height = fCapReserve; - XFA_RectWidthoutMargin(m_rtCaption, captionMarginData); + XFA_RectWidthoutMargin(m_rtCaption, captionMargin); m_rtUI.height -= fCapReserve; break; } @@ -173,9 +173,9 @@ m_rtCheckBox = m_rtUI; CXFA_BorderData borderUIData = m_pDataAcc->GetUIBorderData(); if (borderUIData.HasValidNode()) { - CXFA_MarginData borderMarginData = borderUIData.GetMarginData(); - if (borderMarginData.HasValidNode()) - XFA_RectWidthoutMargin(m_rtUI, borderMarginData); + CXFA_Margin* borderMargin = borderUIData.GetMargin(); + if (borderMargin) + XFA_RectWidthoutMargin(m_rtUI, borderMargin); } m_rtUI.Normalize(); @@ -188,8 +188,8 @@ } void CXFA_FFCheckButton::CapLeftRightPlacement( - const CXFA_MarginData& captionMarginData) { - XFA_RectWidthoutMargin(m_rtCaption, captionMarginData); + const CXFA_Margin* captionMargin) { + XFA_RectWidthoutMargin(m_rtCaption, captionMargin); if (m_rtCaption.height < 0) m_rtCaption.top += m_rtCaption.height; if (m_rtCaption.width < 0) {
diff --git a/xfa/fxfa/cxfa_ffcheckbutton.h b/xfa/fxfa/cxfa_ffcheckbutton.h index 36d97d7..56fd1c9 100644 --- a/xfa/fxfa/cxfa_ffcheckbutton.h +++ b/xfa/fxfa/cxfa_ffcheckbutton.h
@@ -35,7 +35,7 @@ private: bool CommitData() override; bool IsDataChanged() override; - void CapLeftRightPlacement(const CXFA_MarginData& captionMarginData); + void CapLeftRightPlacement(const CXFA_Margin* captionMargin); void AddUIMargin(XFA_AttributeEnum iCapPlacement); XFA_CHECKSTATE FWLState2XFAState();
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp index 827d38d..75bd064 100644 --- a/xfa/fxfa/cxfa_fffield.cpp +++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -23,6 +23,7 @@ #include "xfa/fxfa/cxfa_fwltheme.h" #include "xfa/fxfa/cxfa_textlayout.h" #include "xfa/fxfa/parser/cxfa_calculate.h" +#include "xfa/fxfa/parser/cxfa_margin.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_script.h" #include "xfa/fxgraphics/cxfa_gecolor.h" @@ -168,13 +169,13 @@ void CXFA_FFField::CapPlacement() { CFX_RectF rtWidget = GetRectWithoutRotate(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) { + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) { CXFA_LayoutItem* pItem = this; - float fLeftInset = marginData.GetLeftInset(); - float fRightInset = marginData.GetRightInset(); - float fTopInset = marginData.GetTopInset(); - float fBottomInset = marginData.GetBottomInset(); + float fLeftInset = margin->GetLeftInset(); + float fRightInset = margin->GetRightInset(); + float fTopInset = margin->GetTopInset(); + float fBottomInset = margin->GetBottomInset(); if (!pItem->GetPrev() && !pItem->GetNext()) { rtWidget.Deflate(fLeftInset, fTopInset, fRightInset, fBottomInset); } else { @@ -209,7 +210,7 @@ m_rtCaption.height += pItem->GetRect(false).Height(); pItem = pItem->GetNext(); } - XFA_RectWidthoutMargin(m_rtCaption, marginData); + XFA_RectWidthoutMargin(m_rtCaption, margin); } CXFA_TextLayout* pCapTextLayout = m_pDataAcc->GetCaptionTextLayout(); @@ -231,16 +232,14 @@ switch (iCapPlacement) { case XFA_AttributeEnum::Left: { m_rtCaption.width = fCapReserve; - CapLeftRightPlacement(captionData.GetMarginData(), rtWidget, - iCapPlacement); + CapLeftRightPlacement(captionData.GetMargin(), rtWidget, iCapPlacement); m_rtUI.width -= fCapReserve; m_rtUI.left += fCapReserve; break; } case XFA_AttributeEnum::Top: { m_rtCaption.height = fCapReserve; - CapTopBottomPlacement(captionData.GetMarginData(), rtWidget, - iCapPlacement); + CapTopBottomPlacement(captionData.GetMargin(), rtWidget, iCapPlacement); m_rtUI.top += fCapReserve; m_rtUI.height -= fCapReserve; break; @@ -248,16 +247,14 @@ case XFA_AttributeEnum::Right: { m_rtCaption.left = m_rtCaption.right() - fCapReserve; m_rtCaption.width = fCapReserve; - CapLeftRightPlacement(captionData.GetMarginData(), rtWidget, - iCapPlacement); + CapLeftRightPlacement(captionData.GetMargin(), rtWidget, iCapPlacement); m_rtUI.width -= fCapReserve; break; } case XFA_AttributeEnum::Bottom: { m_rtCaption.top = m_rtCaption.bottom() - fCapReserve; m_rtCaption.height = fCapReserve; - CapTopBottomPlacement(captionData.GetMarginData(), rtWidget, - iCapPlacement); + CapTopBottomPlacement(captionData.GetMargin(), rtWidget, iCapPlacement); m_rtUI.height -= fCapReserve; break; } @@ -269,20 +266,20 @@ CXFA_BorderData borderUIData = m_pDataAcc->GetUIBorderData(); if (borderUIData.HasValidNode()) { - CXFA_MarginData borderMarginData = borderUIData.GetMarginData(); - if (borderMarginData.HasValidNode()) - XFA_RectWidthoutMargin(m_rtUI, borderMarginData); + CXFA_Margin* borderMargin = borderUIData.GetMargin(); + if (borderMargin) + XFA_RectWidthoutMargin(m_rtUI, borderMargin); } m_rtUI.Normalize(); } -void CXFA_FFField::CapTopBottomPlacement(const CXFA_MarginData& marginData, +void CXFA_FFField::CapTopBottomPlacement(const CXFA_Margin* margin, const CFX_RectF& rtWidget, XFA_AttributeEnum iCapPlacement) { CFX_RectF rtUIMargin = m_pDataAcc->GetUIMargin(); m_rtCaption.left += rtUIMargin.left; - if (marginData.HasValidNode()) { - XFA_RectWidthoutMargin(m_rtCaption, marginData); + if (margin) { + XFA_RectWidthoutMargin(m_rtCaption, margin); if (m_rtCaption.height < 0) m_rtCaption.top += m_rtCaption.height; } @@ -302,14 +299,14 @@ } } -void CXFA_FFField::CapLeftRightPlacement(const CXFA_MarginData& marginData, +void CXFA_FFField::CapLeftRightPlacement(const CXFA_Margin* margin, const CFX_RectF& rtWidget, XFA_AttributeEnum iCapPlacement) { CFX_RectF rtUIMargin = m_pDataAcc->GetUIMargin(); m_rtCaption.top += rtUIMargin.top; m_rtCaption.height -= rtUIMargin.top; - if (marginData.HasValidNode()) { - XFA_RectWidthoutMargin(m_rtCaption, marginData); + if (margin) { + XFA_RectWidthoutMargin(m_rtCaption, margin); if (m_rtCaption.height < 0) m_rtCaption.top += m_rtCaption.height; }
diff --git a/xfa/fxfa/cxfa_fffield.h b/xfa/fxfa/cxfa_fffield.h index b566fe9..f605127 100644 --- a/xfa/fxfa/cxfa_fffield.h +++ b/xfa/fxfa/cxfa_fffield.h
@@ -83,10 +83,10 @@ void DrawFocus(CXFA_Graphics* pGS, CFX_Matrix* pMatrix); void TranslateFWLMessage(CFWL_Message* pMessage); void CapPlacement(); - void CapTopBottomPlacement(const CXFA_MarginData& marginData, + void CapTopBottomPlacement(const CXFA_Margin* margin, const CFX_RectF& rtWidget, XFA_AttributeEnum iCapPlacement); - void CapLeftRightPlacement(const CXFA_MarginData& marginData, + void CapLeftRightPlacement(const CXFA_Margin* margin, const CFX_RectF& rtWidget, XFA_AttributeEnum iCapPlacement); void SetEditScrollOffset();
diff --git a/xfa/fxfa/cxfa_ffimage.cpp b/xfa/fxfa/cxfa_ffimage.cpp index 864d34e..c37234c 100644 --- a/xfa/fxfa/cxfa_ffimage.cpp +++ b/xfa/fxfa/cxfa_ffimage.cpp
@@ -51,9 +51,9 @@ return; CFX_RectF rtImage = GetRectWithoutRotate(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rtImage, marginData); + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) + XFA_RectWidthoutMargin(rtImage, margin); XFA_AttributeEnum iHorzAlign = XFA_AttributeEnum::Left; XFA_AttributeEnum iVertAlign = XFA_AttributeEnum::Top;
diff --git a/xfa/fxfa/cxfa_ffline.cpp b/xfa/fxfa/cxfa_ffline.cpp index fb2c98a..bbe928f 100644 --- a/xfa/fxfa/cxfa_ffline.cpp +++ b/xfa/fxfa/cxfa_ffline.cpp
@@ -109,9 +109,9 @@ mtRotate.Concat(matrix); CFX_RectF rtLine = GetRectWithoutRotate(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rtLine, marginData); + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) + XFA_RectWidthoutMargin(rtLine, margin); GetRectFromHand(rtLine, lineData.GetHand(), fLineWidth); CXFA_GEPath linePath;
diff --git a/xfa/fxfa/cxfa_ffpushbutton.cpp b/xfa/fxfa/cxfa_ffpushbutton.cpp index 615c8ae..914b350 100644 --- a/xfa/fxfa/cxfa_ffpushbutton.cpp +++ b/xfa/fxfa/cxfa_ffpushbutton.cpp
@@ -97,15 +97,15 @@ CFX_RectF rtWidget = GetRectWithoutRotate(); m_rtUI = rtWidget; - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rtWidget, marginData); + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) + XFA_RectWidthoutMargin(rtWidget, margin); CXFA_CaptionData captionData = m_pDataAcc->GetCaptionData(); m_rtCaption = rtWidget; - CXFA_MarginData captionMarginData = captionData.GetMarginData(); - if (captionMarginData.HasValidNode()) - XFA_RectWidthoutMargin(m_rtCaption, captionMarginData); + CXFA_Margin* captionMargin = captionData.GetMargin(); + if (captionMargin) + XFA_RectWidthoutMargin(m_rtCaption, captionMargin); LayoutHighlightCaption(); SetFWLRect();
diff --git a/xfa/fxfa/cxfa_ffrectangle.cpp b/xfa/fxfa/cxfa_ffrectangle.cpp index 063a9e9..0804884 100644 --- a/xfa/fxfa/cxfa_ffrectangle.cpp +++ b/xfa/fxfa/cxfa_ffrectangle.cpp
@@ -24,9 +24,9 @@ return; CFX_RectF rect = GetRectWithoutRotate(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rect, marginData); + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) + XFA_RectWidthoutMargin(rect, margin); CFX_Matrix mtRotate = GetRotateMatrix(); mtRotate.Concat(matrix);
diff --git a/xfa/fxfa/cxfa_fftext.cpp b/xfa/fxfa/cxfa_fftext.cpp index 606c22e..46a58c2 100644 --- a/xfa/fxfa/cxfa_fftext.cpp +++ b/xfa/fxfa/cxfa_fftext.cpp
@@ -17,6 +17,7 @@ #include "xfa/fxfa/cxfa_pieceline.h" #include "xfa/fxfa/cxfa_textlayout.h" #include "xfa/fxfa/cxfa_textpiece.h" +#include "xfa/fxfa/parser/cxfa_margin.h" #include "xfa/fxgraphics/cxfa_graphics.h" CXFA_FFText::CXFA_FFText(CXFA_WidgetAcc* pDataAcc) : CXFA_FFDraw(pDataAcc) {} @@ -40,21 +41,21 @@ CFX_RenderDevice* pRenderDevice = pGS->GetRenderDevice(); CFX_RectF rtText = GetRectWithoutRotate(); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) { + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) { CXFA_LayoutItem* pItem = this; if (!pItem->GetPrev() && !pItem->GetNext()) { - XFA_RectWidthoutMargin(rtText, marginData); + XFA_RectWidthoutMargin(rtText, margin); } else { float fTopInset = 0; float fBottomInset = 0; if (!pItem->GetPrev()) - fTopInset = marginData.GetTopInset(); + fTopInset = margin->GetTopInset(); else if (!pItem->GetNext()) - fBottomInset = marginData.GetBottomInset(); + fBottomInset = margin->GetBottomInset(); - rtText.Deflate(marginData.GetLeftInset(), fTopInset, - marginData.GetRightInset(), fBottomInset); + rtText.Deflate(margin->GetLeftInset(), fTopInset, margin->GetRightInset(), + fBottomInset); } } @@ -85,12 +86,12 @@ pItem = pItem->GetFirst(); while (pItem) { CFX_RectF rtText = pItem->GetRect(false); - CXFA_MarginData marginData = m_pDataAcc->GetMarginData(); - if (marginData.HasValidNode()) { + CXFA_Margin* margin = m_pDataAcc->GetMargin(); + if (margin) { if (!pItem->GetPrev()) - rtText.height -= marginData.GetTopInset(); + rtText.height -= margin->GetTopInset(); else if (!pItem->GetNext()) - rtText.height -= marginData.GetBottomInset(); + rtText.height -= margin->GetBottomInset(); } pTextLayout->ItemBlocks(rtText, pItem->GetIndex()); pItem = pItem->GetNext();
diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp index fdb10a3..9367301 100644 --- a/xfa/fxfa/cxfa_ffwidget.cpp +++ b/xfa/fxfa/cxfa_ffwidget.cpp
@@ -31,6 +31,7 @@ #include "xfa/fxfa/cxfa_textlayout.h" #include "xfa/fxfa/cxfa_widgetacc.h" #include "xfa/fxfa/parser/cxfa_cornerdata.h" +#include "xfa/fxfa/parser/cxfa_margin.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxgraphics/cxfa_gecolor.h" #include "xfa/fxgraphics/cxfa_gepath.h" @@ -989,9 +990,9 @@ return; CFX_RectF rtBorder = GetRectWithoutRotate(); - CXFA_MarginData marginData = borderData.GetMarginData(); - if (marginData.HasValidNode()) - XFA_RectWidthoutMargin(rtBorder, marginData); + CXFA_Margin* margin = borderData.GetMargin(); + if (margin) + XFA_RectWidthoutMargin(rtBorder, margin); rtBorder.Normalize(); DrawBorder(pGS, borderData, rtBorder, matrix); @@ -2016,13 +2017,13 @@ } void XFA_RectWidthoutMargin(CFX_RectF& rt, - const CXFA_MarginData& marginData, + const CXFA_Margin* margin, bool bUI) { - if (!marginData.HasValidNode()) + if (!margin) return; - rt.Deflate(marginData.GetLeftInset(), marginData.GetTopInset(), - marginData.GetRightInset(), marginData.GetBottomInset()); + rt.Deflate(margin->GetLeftInset(), margin->GetTopInset(), + margin->GetRightInset(), margin->GetBottomInset()); } CXFA_FFWidget* XFA_GetWidgetFromLayoutItem(CXFA_LayoutItem* pLayoutItem) {
diff --git a/xfa/fxfa/cxfa_ffwidget.h b/xfa/fxfa/cxfa_ffwidget.h index a258e02..ac3d985 100644 --- a/xfa/fxfa/cxfa_ffwidget.h +++ b/xfa/fxfa/cxfa_ffwidget.h
@@ -63,7 +63,7 @@ FXCODEC_IMAGE_TYPE XFA_GetImageType(const WideString& wsType); char* XFA_Base64Encode(const uint8_t* buf, int32_t buf_len); void XFA_RectWidthoutMargin(CFX_RectF& rt, - const CXFA_MarginData& marginData, + const CXFA_Margin* margin, bool bUI = false); CXFA_FFWidget* XFA_GetWidgetFromLayoutItem(CXFA_LayoutItem* pLayoutItem); bool XFA_IsCreateWidget(XFA_Element iType);
diff --git a/xfa/fxfa/cxfa_widgetacc.cpp b/xfa/fxfa/cxfa_widgetacc.cpp index dcf621f..ec33159 100644 --- a/xfa/fxfa/cxfa_widgetacc.cpp +++ b/xfa/fxfa/cxfa_widgetacc.cpp
@@ -25,6 +25,7 @@ #include "xfa/fxfa/parser/cxfa_items.h" #include "xfa/fxfa/parser/cxfa_layoutprocessor.h" #include "xfa/fxfa/parser/cxfa_localevalue.h" +#include "xfa/fxfa/parser/cxfa_margin.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_para.h" #include "xfa/fxfa/parser/cxfa_script.h" @@ -725,12 +726,12 @@ } } - CXFA_MarginData captionMarginData = captionData.GetMarginData(); - if (captionMarginData.HasValidNode()) { - float fLeftInset = captionMarginData.GetLeftInset(); - float fTopInset = captionMarginData.GetTopInset(); - float fRightInset = captionMarginData.GetRightInset(); - float fBottomInset = captionMarginData.GetBottomInset(); + CXFA_Margin* captionMargin = captionData.GetMargin(); + if (captionMargin) { + float fLeftInset = captionMargin->GetLeftInset(); + float fTopInset = captionMargin->GetTopInset(); + float fRightInset = captionMargin->GetRightInset(); + float fBottomInset = captionMargin->GetBottomInset(); if (bReserveExit) { bVert ? (szCap.width += fLeftInset + fRightInset) : (szCap.height += fTopInset + fBottomInset); @@ -768,10 +769,10 @@ } bool CXFA_WidgetAcc::CalculateWidgetAutoSize(CFX_SizeF& size) { - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) { - size.width += marginData.GetLeftInset() + marginData.GetRightInset(); - size.height += marginData.GetTopInset() + marginData.GetBottomInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) { + size.width += margin->GetLeftInset() + margin->GetRightInset(); + size.height += margin->GetTopInset() + margin->GetBottomInset(); } CXFA_Para* para = GetPara(); @@ -860,9 +861,9 @@ } CFX_RectF rtUIMargin = GetUIMargin(); size.width -= rtUIMargin.left + rtUIMargin.width; - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) - size.width -= marginData.GetLeftInset() + marginData.GetRightInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) + size.width -= margin->GetLeftInset() + margin->GetRightInset(); CalculateTextContentSize(size); size.height += rtUIMargin.top + rtUIMargin.height; @@ -1005,9 +1006,9 @@ } float CXFA_WidgetAcc::CalculateWidgetAutoWidth(float fWidthCalc) { - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) - fWidthCalc += marginData.GetLeftInset() + marginData.GetRightInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) + fWidthCalc += margin->GetLeftInset() + margin->GetRightInset(); pdfium::Optional<float> min = TryMinWidth(); if (min) @@ -1021,16 +1022,16 @@ } float CXFA_WidgetAcc::GetWidthWithoutMargin(float fWidthCalc) { - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) - fWidthCalc -= marginData.GetLeftInset() + marginData.GetRightInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) + fWidthCalc -= margin->GetLeftInset() + margin->GetRightInset(); return fWidthCalc; } float CXFA_WidgetAcc::CalculateWidgetAutoHeight(float fHeightCalc) { - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) - fHeightCalc += marginData.GetTopInset() + marginData.GetBottomInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) + fHeightCalc += margin->GetTopInset() + margin->GetBottomInset(); pdfium::Optional<float> min = TryMinHeight(); if (min) @@ -1044,9 +1045,9 @@ } float CXFA_WidgetAcc::GetHeightWithoutMargin(float fHeightCalc) { - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) - fHeightCalc -= marginData.GetTopInset() + marginData.GetBottomInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) + fHeightCalc -= margin->GetTopInset() + margin->GetBottomInset(); return fHeightCalc; } @@ -1149,10 +1150,10 @@ float fTopInset = 0; float fBottomInset = 0; if (iBlockIndex == 0) { - CXFA_MarginData marginData = GetMarginData(); - if (marginData.HasValidNode()) { - fTopInset = marginData.GetTopInset(); - fBottomInset = marginData.GetBottomInset(); + CXFA_Margin* margin = GetMargin(); + if (margin) { + fTopInset = margin->GetTopInset(); + fBottomInset = margin->GetBottomInset(); } CFX_RectF rtUIMargin = GetUIMargin();
diff --git a/xfa/fxfa/cxfa_widgetacc.h b/xfa/fxfa/cxfa_widgetacc.h index e193bd2..35bed64 100644 --- a/xfa/fxfa/cxfa_widgetacc.h +++ b/xfa/fxfa/cxfa_widgetacc.h
@@ -17,7 +17,6 @@ #include "xfa/fxfa/parser/cxfa_boxdata.h" #include "xfa/fxfa/parser/cxfa_eventdata.h" #include "xfa/fxfa/parser/cxfa_imagedata.h" -#include "xfa/fxfa/parser/cxfa_margindata.h" #include "xfa/fxfa/parser/cxfa_widgetdata.h" class CFGAS_GEFont;
diff --git a/xfa/fxfa/parser/cxfa_boxdata.cpp b/xfa/fxfa/parser/cxfa_boxdata.cpp index 6e27c71..31fefbf 100644 --- a/xfa/fxfa/parser/cxfa_boxdata.cpp +++ b/xfa/fxfa/parser/cxfa_boxdata.cpp
@@ -139,10 +139,9 @@ return CXFA_FillData(pFillNode); } -CXFA_MarginData CXFA_BoxData::GetMarginData() const { - return CXFA_MarginData( - m_pNode ? m_pNode->GetChild<CXFA_Margin>(0, XFA_Element::Margin, false) - : nullptr); +CXFA_Margin* CXFA_BoxData::GetMargin() const { + return m_pNode ? m_pNode->GetChild<CXFA_Margin>(0, XFA_Element::Margin, false) + : nullptr; } std::tuple<XFA_AttributeEnum, bool, float> CXFA_BoxData::Get3DStyle() const {
diff --git a/xfa/fxfa/parser/cxfa_boxdata.h b/xfa/fxfa/parser/cxfa_boxdata.h index 38a7faa..c44065f 100644 --- a/xfa/fxfa/parser/cxfa_boxdata.h +++ b/xfa/fxfa/parser/cxfa_boxdata.h
@@ -14,8 +14,8 @@ #include "xfa/fxfa/parser/cxfa_datadata.h" #include "xfa/fxfa/parser/cxfa_edgedata.h" #include "xfa/fxfa/parser/cxfa_filldata.h" -#include "xfa/fxfa/parser/cxfa_margindata.h" +class CXFA_Margin; class CXFA_Node; class CXFA_BoxData : public CXFA_DataData { @@ -32,7 +32,7 @@ int32_t CountEdges() const; CXFA_EdgeData GetEdgeData(int32_t nIndex) const; CXFA_FillData GetFillData(bool bModified) const; - CXFA_MarginData GetMarginData() const; + CXFA_Margin* GetMargin() const; std::vector<CXFA_StrokeData> GetStrokes() const;
diff --git a/xfa/fxfa/parser/cxfa_captiondata.cpp b/xfa/fxfa/parser/cxfa_captiondata.cpp index 59dbb2b..276d10c 100644 --- a/xfa/fxfa/parser/cxfa_captiondata.cpp +++ b/xfa/fxfa/parser/cxfa_captiondata.cpp
@@ -39,10 +39,9 @@ .ToUnit(XFA_Unit::Pt); } -CXFA_MarginData CXFA_CaptionData::GetMarginData() const { - return CXFA_MarginData( - m_pNode ? m_pNode->GetChild<CXFA_Margin>(0, XFA_Element::Margin, false) - : nullptr); +CXFA_Margin* CXFA_CaptionData::GetMargin() const { + return m_pNode ? m_pNode->GetChild<CXFA_Margin>(0, XFA_Element::Margin, false) + : nullptr; } CXFA_FontData CXFA_CaptionData::GetFontData() const {
diff --git a/xfa/fxfa/parser/cxfa_captiondata.h b/xfa/fxfa/parser/cxfa_captiondata.h index 119c34e..4b526b6 100644 --- a/xfa/fxfa/parser/cxfa_captiondata.h +++ b/xfa/fxfa/parser/cxfa_captiondata.h
@@ -9,8 +9,8 @@ #include "xfa/fxfa/parser/cxfa_datadata.h" #include "xfa/fxfa/parser/cxfa_fontdata.h" -#include "xfa/fxfa/parser/cxfa_margindata.h" +class CXFA_Margin; class CXFA_Node; class CXFA_Value; @@ -22,7 +22,7 @@ bool IsHidden() const; XFA_AttributeEnum GetPlacementType() const; float GetReserve() const; - CXFA_MarginData GetMarginData() const; + CXFA_Margin* GetMargin() const; CXFA_FontData GetFontData() const; CXFA_Value* GetValue() const; };
diff --git a/xfa/fxfa/parser/cxfa_datadata.cpp b/xfa/fxfa/parser/cxfa_datadata.cpp index b2c8119..76a4651 100644 --- a/xfa/fxfa/parser/cxfa_datadata.cpp +++ b/xfa/fxfa/parser/cxfa_datadata.cpp
@@ -71,9 +71,5 @@ pdfium::Optional<float> CXFA_DataData::TryMeasureAsFloat( XFA_Attribute attr) const { - pdfium::Optional<CXFA_Measurement> measure = - m_pNode->JSObject()->TryMeasure(attr, false); - if (measure) - return {measure->ToUnit(XFA_Unit::Pt)}; - return {}; + return m_pNode->JSObject()->TryMeasureAsFloat(attr); }
diff --git a/xfa/fxfa/parser/cxfa_margin.cpp b/xfa/fxfa/parser/cxfa_margin.cpp index 6a50d13..6dd4d39 100644 --- a/xfa/fxfa/parser/cxfa_margin.cpp +++ b/xfa/fxfa/parser/cxfa_margin.cpp
@@ -39,3 +39,35 @@ pdfium::MakeUnique<CJX_Margin>(this)) {} CXFA_Margin::~CXFA_Margin() {} + +float CXFA_Margin::GetLeftInset() const { + return TryLeftInset().value_or(0); +} + +float CXFA_Margin::GetTopInset() const { + return TryTopInset().value_or(0); +} + +float CXFA_Margin::GetRightInset() const { + return TryRightInset().value_or(0); +} + +float CXFA_Margin::GetBottomInset() const { + return TryBottomInset().value_or(0); +} + +pdfium::Optional<float> CXFA_Margin::TryLeftInset() const { + return JSObject()->TryMeasureAsFloat(XFA_Attribute::LeftInset); +} + +pdfium::Optional<float> CXFA_Margin::TryTopInset() const { + return JSObject()->TryMeasureAsFloat(XFA_Attribute::TopInset); +} + +pdfium::Optional<float> CXFA_Margin::TryRightInset() const { + return JSObject()->TryMeasureAsFloat(XFA_Attribute::RightInset); +} + +pdfium::Optional<float> CXFA_Margin::TryBottomInset() const { + return JSObject()->TryMeasureAsFloat(XFA_Attribute::BottomInset); +}
diff --git a/xfa/fxfa/parser/cxfa_margin.h b/xfa/fxfa/parser/cxfa_margin.h index 3ac7657..621704a 100644 --- a/xfa/fxfa/parser/cxfa_margin.h +++ b/xfa/fxfa/parser/cxfa_margin.h
@@ -13,6 +13,16 @@ public: CXFA_Margin(CXFA_Document* doc, XFA_PacketType packet); ~CXFA_Margin() override; + + float GetLeftInset() const; + float GetTopInset() const; + float GetRightInset() const; + float GetBottomInset() const; + + pdfium::Optional<float> TryLeftInset() const; + pdfium::Optional<float> TryTopInset() const; + pdfium::Optional<float> TryRightInset() const; + pdfium::Optional<float> TryBottomInset() const; }; #endif // XFA_FXFA_PARSER_CXFA_MARGIN_H_
diff --git a/xfa/fxfa/parser/cxfa_margindata.cpp b/xfa/fxfa/parser/cxfa_margindata.cpp deleted file mode 100644 index c8baf2d..0000000 --- a/xfa/fxfa/parser/cxfa_margindata.cpp +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "xfa/fxfa/parser/cxfa_margindata.h" - -CXFA_MarginData::CXFA_MarginData(CXFA_Node* pNode) : CXFA_DataData(pNode) {} - -float CXFA_MarginData::GetLeftInset() const { - return TryLeftInset().value_or(0); -} - -float CXFA_MarginData::GetTopInset() const { - return TryTopInset().value_or(0); -} - -float CXFA_MarginData::GetRightInset() const { - return TryRightInset().value_or(0); -} - -float CXFA_MarginData::GetBottomInset() const { - return TryBottomInset().value_or(0); -} - -pdfium::Optional<float> CXFA_MarginData::TryLeftInset() const { - return TryMeasureAsFloat(XFA_Attribute::LeftInset); -} - -pdfium::Optional<float> CXFA_MarginData::TryTopInset() const { - return TryMeasureAsFloat(XFA_Attribute::TopInset); -} - -pdfium::Optional<float> CXFA_MarginData::TryRightInset() const { - return TryMeasureAsFloat(XFA_Attribute::RightInset); -} - -pdfium::Optional<float> CXFA_MarginData::TryBottomInset() const { - return TryMeasureAsFloat(XFA_Attribute::BottomInset); -}
diff --git a/xfa/fxfa/parser/cxfa_margindata.h b/xfa/fxfa/parser/cxfa_margindata.h deleted file mode 100644 index 069aa7c..0000000 --- a/xfa/fxfa/parser/cxfa_margindata.h +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef XFA_FXFA_PARSER_CXFA_MARGINDATA_H_ -#define XFA_FXFA_PARSER_CXFA_MARGINDATA_H_ - -#include "core/fxcrt/fx_system.h" -#include "xfa/fxfa/parser/cxfa_datadata.h" - -class CXFA_Node; - -class CXFA_MarginData : public CXFA_DataData { - public: - explicit CXFA_MarginData(CXFA_Node* pNode); - - float GetLeftInset() const; - float GetTopInset() const; - float GetRightInset() const; - float GetBottomInset() const; - - pdfium::Optional<float> TryLeftInset() const; - pdfium::Optional<float> TryTopInset() const; - pdfium::Optional<float> TryRightInset() const; - pdfium::Optional<float> TryBottomInset() const; -}; - -#endif // XFA_FXFA_PARSER_CXFA_MARGINDATA_H_
diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp index ba10f24..0f31fba 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.cpp +++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp
@@ -275,9 +275,9 @@ 0, XFA_Element::Font, bModified)); } -CXFA_MarginData CXFA_WidgetData::GetMarginData() { - return CXFA_MarginData(m_pNode->JSObject()->GetProperty<CXFA_Margin>( - 0, XFA_Element::Margin, false)); +CXFA_Margin* CXFA_WidgetData::GetMargin() { + return m_pNode->JSObject()->GetProperty<CXFA_Margin>(0, XFA_Element::Margin, + false); } CXFA_Para* CXFA_WidgetData::GetPara() { @@ -373,12 +373,13 @@ CFX_RectF CXFA_WidgetData::GetUIMargin() { CXFA_Node* pUIChild = GetUIChild(); - CXFA_MarginData mgUI = - CXFA_MarginData(pUIChild ? pUIChild->JSObject()->GetProperty<CXFA_Margin>( - 0, XFA_Element::Margin, false) - : nullptr); + CXFA_Margin* mgUI = nullptr; + if (pUIChild) { + mgUI = pUIChild->JSObject()->GetProperty<CXFA_Margin>( + 0, XFA_Element::Margin, false); + } - if (!mgUI.HasValidNode()) + if (!mgUI) return CFX_RectF(); CXFA_BorderData borderData = GetUIBorderData(); @@ -387,10 +388,10 @@ return CFX_RectF(); } - pdfium::Optional<float> left = mgUI.TryLeftInset(); - pdfium::Optional<float> top = mgUI.TryTopInset(); - pdfium::Optional<float> right = mgUI.TryRightInset(); - pdfium::Optional<float> bottom = mgUI.TryBottomInset(); + pdfium::Optional<float> left = mgUI->TryLeftInset(); + pdfium::Optional<float> top = mgUI->TryTopInset(); + pdfium::Optional<float> right = mgUI->TryRightInset(); + pdfium::Optional<float> bottom = mgUI->TryBottomInset(); if (borderData.HasValidNode()) { bool bVisible = false; float fThickness = 0;
diff --git a/xfa/fxfa/parser/cxfa_widgetdata.h b/xfa/fxfa/parser/cxfa_widgetdata.h index e7016bd..e2dbfbf 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.h +++ b/xfa/fxfa/parser/cxfa_widgetdata.h
@@ -19,7 +19,6 @@ #include "xfa/fxfa/parser/cxfa_captiondata.h" #include "xfa/fxfa/parser/cxfa_datadata.h" #include "xfa/fxfa/parser/cxfa_fontdata.h" -#include "xfa/fxfa/parser/cxfa_margindata.h" enum XFA_CHECKSTATE { XFA_CHECKSTATE_On = 0, @@ -35,6 +34,7 @@ }; class CXFA_Calculate; +class CXFA_Margin; class CXFA_Node; class CXFA_Para; class CXFA_Validate; @@ -61,7 +61,7 @@ CXFA_BorderData GetBorderData(bool bModified); CXFA_CaptionData GetCaptionData(); CXFA_FontData GetFontData(bool bModified); - CXFA_MarginData GetMarginData(); + CXFA_Margin* GetMargin(); CXFA_Para* GetPara(); CXFA_Value* GetDefaultValue(); CXFA_Value* GetFormValue();