diff options
Diffstat (limited to 'xfa/fxfa/parser')
-rw-r--r-- | xfa/fxfa/parser/cxfa_boxdata.cpp | 35 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_boxdata.h | 27 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widgetdata.cpp | 3 |
3 files changed, 26 insertions, 39 deletions
diff --git a/xfa/fxfa/parser/cxfa_boxdata.cpp b/xfa/fxfa/parser/cxfa_boxdata.cpp index 813a0a6229..5545494aac 100644 --- a/xfa/fxfa/parser/cxfa_boxdata.cpp +++ b/xfa/fxfa/parser/cxfa_boxdata.cpp @@ -108,32 +108,26 @@ bool CXFA_BoxData::IsCircular() const { return m_pNode->JSNode()->GetBoolean(XFA_Attribute::Circular); } -bool CXFA_BoxData::GetStartAngle(float& fStartAngle) const { - fStartAngle = 0; +pdfium::Optional<float> CXFA_BoxData::GetStartAngle() const { if (!m_pNode) - return false; + return {}; pdfium::Optional<CXFA_Measurement> measure = m_pNode->JSNode()->TryMeasure(XFA_Attribute::StartAngle, false); if (!measure) - return false; - - fStartAngle = measure->GetValue(); - return true; + return {}; + return {measure->GetValue()}; } -bool CXFA_BoxData::GetSweepAngle(float& fSweepAngle) const { - fSweepAngle = 360; +pdfium::Optional<float> CXFA_BoxData::GetSweepAngle() const { if (!m_pNode) - return false; + return {}; pdfium::Optional<CXFA_Measurement> measure = m_pNode->JSNode()->TryMeasure(XFA_Attribute::SweepAngle, false); if (!measure) - return false; - - fSweepAngle = measure->GetValue(); - return true; + return {}; + return {measure->GetValue()}; } CXFA_FillData CXFA_BoxData::GetFillData(bool bModified) const { @@ -150,16 +144,15 @@ CXFA_MarginData CXFA_BoxData::GetMarginData() const { m_pNode ? m_pNode->GetChild(0, XFA_Element::Margin, false) : nullptr); } -int32_t CXFA_BoxData::Get3DStyle(bool& bVisible, float& fThickness) const { +std::tuple<int32_t, bool, float> CXFA_BoxData::Get3DStyle() const { if (IsArc()) - return 0; + return {0, false, 0.0f}; std::vector<CXFA_StrokeData> strokes = GetStrokesInternal(m_pNode, true); CXFA_StrokeData strokeData(nullptr); int32_t iType = Style3D(strokes, strokeData); - if (iType) { - bVisible = strokeData.IsVisible(); - fThickness = strokeData.GetThickness(); - } - return iType; + if (iType == 0) + return {0, false, 0.0f}; + + return {iType, strokeData.IsVisible(), strokeData.GetThickness()}; } diff --git a/xfa/fxfa/parser/cxfa_boxdata.h b/xfa/fxfa/parser/cxfa_boxdata.h index 14f8b35235..d3d1887719 100644 --- a/xfa/fxfa/parser/cxfa_boxdata.h +++ b/xfa/fxfa/parser/cxfa_boxdata.h @@ -7,6 +7,7 @@ #ifndef XFA_FXFA_PARSER_CXFA_BOXDATA_H_ #define XFA_FXFA_PARSER_CXFA_BOXDATA_H_ +#include <tuple> #include <vector> #include "core/fxcrt/fx_system.h" @@ -26,29 +27,21 @@ class CXFA_BoxData : public CXFA_DataData { bool IsRectangle() const { return GetElementType() == XFA_Element::Rectangle; } + bool IsCircular() const; + int32_t GetHand() const; int32_t GetPresence() const; + std::tuple<int32_t, bool, float> Get3DStyle() const; + int32_t CountEdges() const; CXFA_EdgeData GetEdgeData(int32_t nIndex) const; - std::vector<CXFA_StrokeData> GetStrokes() const; - bool IsCircular() const; - bool GetStartAngle(float& fStartAngle) const; - float GetStartAngle() const { - float fStartAngle; - GetStartAngle(fStartAngle); - return fStartAngle; - } - - bool GetSweepAngle(float& fSweepAngle) const; - float GetSweepAngle() const { - float fSweepAngle; - GetSweepAngle(fSweepAngle); - return fSweepAngle; - } - CXFA_FillData GetFillData(bool bModified) const; CXFA_MarginData GetMarginData() const; - int32_t Get3DStyle(bool& bVisible, float& fThickness) const; + + std::vector<CXFA_StrokeData> GetStrokes() const; + + pdfium::Optional<float> GetStartAngle() const; + pdfium::Optional<float> GetSweepAngle() const; }; #endif // XFA_FXFA_PARSER_CXFA_BOXDATA_H_ diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp index 894411760c..cff2d6b004 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.cpp +++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp @@ -379,7 +379,8 @@ CFX_RectF CXFA_WidgetData::GetUIMargin() { if (borderData) { bool bVisible = false; float fThickness = 0; - borderData.Get3DStyle(bVisible, fThickness); + int32_t iType = 0; + std::tie(iType, bVisible, fThickness) = borderData.Get3DStyle(); if (!bLeft || !bTop || !bRight || !bBottom) { std::vector<CXFA_StrokeData> strokes = borderData.GetStrokes(); if (!bTop) |