diff options
Diffstat (limited to 'xfa/fxfa/parser')
-rw-r--r-- | xfa/fxfa/parser/cxfa_caption.cpp | 4 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_caption.h | 4 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_font.cpp | 70 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_font.h | 16 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_fontdata.cpp | 88 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_fontdata.h | 36 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widgetdata.cpp | 6 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widgetdata.h | 4 |
8 files changed, 95 insertions, 133 deletions
diff --git a/xfa/fxfa/parser/cxfa_caption.cpp b/xfa/fxfa/parser/cxfa_caption.cpp index 1af834a277..4d4dde57e9 100644 --- a/xfa/fxfa/parser/cxfa_caption.cpp +++ b/xfa/fxfa/parser/cxfa_caption.cpp @@ -74,8 +74,8 @@ CXFA_Margin* CXFA_Caption::GetMargin() { return GetChild<CXFA_Margin>(0, XFA_Element::Margin, false); } -CXFA_FontData CXFA_Caption::GetFontData() { - return CXFA_FontData(GetChild<CXFA_Font>(0, XFA_Element::Font, false)); +CXFA_Font* CXFA_Caption::GetFont() { + return GetChild<CXFA_Font>(0, XFA_Element::Font, false); } CXFA_Value* CXFA_Caption::GetValue() { diff --git a/xfa/fxfa/parser/cxfa_caption.h b/xfa/fxfa/parser/cxfa_caption.h index 7a52254d77..11c1cec3f4 100644 --- a/xfa/fxfa/parser/cxfa_caption.h +++ b/xfa/fxfa/parser/cxfa_caption.h @@ -7,9 +7,9 @@ #ifndef XFA_FXFA_PARSER_CXFA_CAPTION_H_ #define XFA_FXFA_PARSER_CXFA_CAPTION_H_ -#include "xfa/fxfa/parser/cxfa_fontdata.h" #include "xfa/fxfa/parser/cxfa_node.h" +class CXFA_Font; class CXFA_Margin; class CXFA_Value; @@ -23,7 +23,7 @@ class CXFA_Caption : public CXFA_Node { XFA_AttributeEnum GetPlacementType(); float GetReserve() const; CXFA_Margin* GetMargin(); - CXFA_FontData GetFontData(); + CXFA_Font* GetFont(); CXFA_Value* GetValue(); }; diff --git a/xfa/fxfa/parser/cxfa_font.cpp b/xfa/fxfa/parser/cxfa_font.cpp index eb5c312173..c78cbd14b8 100644 --- a/xfa/fxfa/parser/cxfa_font.cpp +++ b/xfa/fxfa/parser/cxfa_font.cpp @@ -8,6 +8,8 @@ #include "fxjs/xfa/cjx_font.h" #include "third_party/base/ptr_util.h" +#include "xfa/fxfa/parser/cxfa_fill.h" +#include "xfa/fxfa/parser/cxfa_measurement.h" namespace { @@ -63,3 +65,71 @@ CXFA_Font::CXFA_Font(CXFA_Document* doc, XFA_PacketType packet) pdfium::MakeUnique<CJX_Font>(this)) {} CXFA_Font::~CXFA_Font() {} + +float CXFA_Font::GetBaselineShift() const { + return JSObject() + ->GetMeasure(XFA_Attribute::BaselineShift) + .ToUnit(XFA_Unit::Pt); +} + +float CXFA_Font::GetHorizontalScale() { + WideString wsValue = JSObject()->GetCData(XFA_Attribute::FontHorizontalScale); + int32_t iScale = FXSYS_wtoi(wsValue.c_str()); + return iScale > 0 ? (float)iScale : 100.0f; +} + +float CXFA_Font::GetVerticalScale() { + WideString wsValue = JSObject()->GetCData(XFA_Attribute::FontVerticalScale); + int32_t iScale = FXSYS_wtoi(wsValue.c_str()); + return iScale > 0 ? (float)iScale : 100.0f; +} + +float CXFA_Font::GetLetterSpacing() { + WideString wsValue = JSObject()->GetCData(XFA_Attribute::LetterSpacing); + CXFA_Measurement ms(wsValue.AsStringView()); + if (ms.GetUnit() == XFA_Unit::Em) + return ms.GetValue() * GetFontSize(); + return ms.ToUnit(XFA_Unit::Pt); +} + +int32_t CXFA_Font::GetLineThrough() { + return JSObject()->GetInteger(XFA_Attribute::LineThrough); +} + +int32_t CXFA_Font::GetUnderline() { + return JSObject()->GetInteger(XFA_Attribute::Underline); +} + +XFA_AttributeEnum CXFA_Font::GetUnderlinePeriod() { + return JSObject() + ->TryEnum(XFA_Attribute::UnderlinePeriod, true) + .value_or(XFA_AttributeEnum::All); +} + +float CXFA_Font::GetFontSize() const { + return JSObject()->GetMeasure(XFA_Attribute::Size).ToUnit(XFA_Unit::Pt); +} + +WideString CXFA_Font::GetTypeface() { + return JSObject()->GetCData(XFA_Attribute::Typeface); +} + +bool CXFA_Font::IsBold() { + return JSObject()->GetEnum(XFA_Attribute::Weight) == XFA_AttributeEnum::Bold; +} + +bool CXFA_Font::IsItalic() { + return JSObject()->GetEnum(XFA_Attribute::Posture) == + XFA_AttributeEnum::Italic; +} + +void CXFA_Font::SetColor(FX_ARGB color) { + JSObject() + ->GetProperty<CXFA_Fill>(0, XFA_Element::Fill, true) + ->SetColor(color); +} + +FX_ARGB CXFA_Font::GetColor() { + CXFA_Fill* fill = GetChild<CXFA_Fill>(0, XFA_Element::Fill, false); + return fill ? fill->GetColor(true) : 0xFF000000; +} diff --git a/xfa/fxfa/parser/cxfa_font.h b/xfa/fxfa/parser/cxfa_font.h index 59b0c71e8c..833c29a530 100644 --- a/xfa/fxfa/parser/cxfa_font.h +++ b/xfa/fxfa/parser/cxfa_font.h @@ -13,6 +13,22 @@ class CXFA_Font : public CXFA_Node { public: CXFA_Font(CXFA_Document* doc, XFA_PacketType packet); ~CXFA_Font() override; + + float GetBaselineShift() const; + float GetHorizontalScale(); + float GetVerticalScale(); + float GetLetterSpacing(); + int32_t GetLineThrough(); + int32_t GetUnderline(); + XFA_AttributeEnum GetUnderlinePeriod(); + float GetFontSize() const; + WideString GetTypeface(); + + bool IsBold(); + bool IsItalic(); + + FX_ARGB GetColor(); + void SetColor(FX_ARGB color); }; #endif // XFA_FXFA_PARSER_CXFA_FONT_H_ diff --git a/xfa/fxfa/parser/cxfa_fontdata.cpp b/xfa/fxfa/parser/cxfa_fontdata.cpp deleted file mode 100644 index 64b5af0794..0000000000 --- a/xfa/fxfa/parser/cxfa_fontdata.cpp +++ /dev/null @@ -1,88 +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_fontdata.h" - -#include "core/fxge/fx_dib.h" -#include "xfa/fxfa/parser/cxfa_fill.h" -#include "xfa/fxfa/parser/cxfa_measurement.h" -#include "xfa/fxfa/parser/cxfa_node.h" - -CXFA_FontData::CXFA_FontData(CXFA_Node* pNode) : CXFA_DataData(pNode) {} - -float CXFA_FontData::GetBaselineShift() const { - return m_pNode->JSObject() - ->GetMeasure(XFA_Attribute::BaselineShift) - .ToUnit(XFA_Unit::Pt); -} - -float CXFA_FontData::GetHorizontalScale() const { - WideString wsValue = - m_pNode->JSObject()->GetCData(XFA_Attribute::FontHorizontalScale); - int32_t iScale = FXSYS_wtoi(wsValue.c_str()); - return iScale > 0 ? (float)iScale : 100.0f; -} - -float CXFA_FontData::GetVerticalScale() const { - WideString wsValue = - m_pNode->JSObject()->GetCData(XFA_Attribute::FontVerticalScale); - int32_t iScale = FXSYS_wtoi(wsValue.c_str()); - return iScale > 0 ? (float)iScale : 100.0f; -} - -float CXFA_FontData::GetLetterSpacing() const { - WideString wsValue = - m_pNode->JSObject()->GetCData(XFA_Attribute::LetterSpacing); - CXFA_Measurement ms(wsValue.AsStringView()); - if (ms.GetUnit() == XFA_Unit::Em) - return ms.GetValue() * GetFontSize(); - return ms.ToUnit(XFA_Unit::Pt); -} - -int32_t CXFA_FontData::GetLineThrough() const { - return m_pNode->JSObject()->GetInteger(XFA_Attribute::LineThrough); -} - -int32_t CXFA_FontData::GetUnderline() const { - return m_pNode->JSObject()->GetInteger(XFA_Attribute::Underline); -} - -XFA_AttributeEnum CXFA_FontData::GetUnderlinePeriod() const { - return m_pNode->JSObject() - ->TryEnum(XFA_Attribute::UnderlinePeriod, true) - .value_or(XFA_AttributeEnum::All); -} - -float CXFA_FontData::GetFontSize() const { - return m_pNode->JSObject() - ->GetMeasure(XFA_Attribute::Size) - .ToUnit(XFA_Unit::Pt); -} - -WideString CXFA_FontData::GetTypeface() const { - return m_pNode->JSObject()->GetCData(XFA_Attribute::Typeface); -} - -bool CXFA_FontData::IsBold() const { - return m_pNode->JSObject()->GetEnum(XFA_Attribute::Weight) == - XFA_AttributeEnum::Bold; -} - -bool CXFA_FontData::IsItalic() const { - return m_pNode->JSObject()->GetEnum(XFA_Attribute::Posture) == - XFA_AttributeEnum::Italic; -} - -void CXFA_FontData::SetColor(FX_ARGB color) { - m_pNode->JSObject() - ->GetProperty<CXFA_Fill>(0, XFA_Element::Fill, true) - ->SetColor(color); -} - -FX_ARGB CXFA_FontData::GetColor() const { - CXFA_Fill* fill = m_pNode->GetChild<CXFA_Fill>(0, XFA_Element::Fill, false); - return fill ? fill->GetColor(true) : 0xFF000000; -} diff --git a/xfa/fxfa/parser/cxfa_fontdata.h b/xfa/fxfa/parser/cxfa_fontdata.h deleted file mode 100644 index 45fbba6592..0000000000 --- a/xfa/fxfa/parser/cxfa_fontdata.h +++ /dev/null @@ -1,36 +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_FONTDATA_H_ -#define XFA_FXFA_PARSER_CXFA_FONTDATA_H_ - -#include "core/fxge/fx_dib.h" -#include "xfa/fxfa/parser/cxfa_datadata.h" - -class CXFA_Node; - -class CXFA_FontData : public CXFA_DataData { - public: - explicit CXFA_FontData(CXFA_Node* pNode); - - float GetBaselineShift() const; - float GetHorizontalScale() const; - float GetVerticalScale() const; - float GetLetterSpacing() const; - int32_t GetLineThrough() const; - int32_t GetUnderline() const; - XFA_AttributeEnum GetUnderlinePeriod() const; - float GetFontSize() const; - WideString GetTypeface() const; - - bool IsBold() const; - bool IsItalic() const; - - FX_ARGB GetColor() const; - void SetColor(FX_ARGB color); -}; - -#endif // XFA_FXFA_PARSER_CXFA_FONTDATA_H_ diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp index 9c08c1ac43..4a8817812f 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.cpp +++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp @@ -272,9 +272,9 @@ CXFA_Caption* CXFA_WidgetData::GetCaption() { false); } -CXFA_FontData CXFA_WidgetData::GetFontData(bool bModified) { - return CXFA_FontData(m_pNode->JSObject()->GetProperty<CXFA_Font>( - 0, XFA_Element::Font, bModified)); +CXFA_Font* CXFA_WidgetData::GetFont(bool bModified) { + return m_pNode->JSObject()->GetProperty<CXFA_Font>(0, XFA_Element::Font, + bModified); } CXFA_Margin* CXFA_WidgetData::GetMargin() { diff --git a/xfa/fxfa/parser/cxfa_widgetdata.h b/xfa/fxfa/parser/cxfa_widgetdata.h index c75225b5fe..30d64a09c5 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.h +++ b/xfa/fxfa/parser/cxfa_widgetdata.h @@ -15,7 +15,6 @@ #include "core/fxcrt/fx_system.h" #include "fxbarcode/BC_Library.h" #include "xfa/fxfa/parser/cxfa_datadata.h" -#include "xfa/fxfa/parser/cxfa_fontdata.h" enum XFA_CHECKSTATE { XFA_CHECKSTATE_On = 0, @@ -34,6 +33,7 @@ class CXFA_Bind; class CXFA_Border; class CXFA_Calculate; class CXFA_Caption; +class CXFA_Font; class CXFA_Margin; class CXFA_Node; class CXFA_Para; @@ -61,7 +61,7 @@ class CXFA_WidgetData : public CXFA_DataData { CXFA_Border* GetBorder(bool bModified); CXFA_Caption* GetCaption(); - CXFA_FontData GetFontData(bool bModified); + CXFA_Font* GetFont(bool bModified); CXFA_Margin* GetMargin(); CXFA_Para* GetPara(); CXFA_Value* GetDefaultValue(); |