| // Copyright 2017 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 CORE_FXCRT_CSS_CFX_CSSCOMPUTEDSTYLE_H_ |
| #define CORE_FXCRT_CSS_CFX_CSSCOMPUTEDSTYLE_H_ |
| |
| #include <vector> |
| |
| #include "core/fxcrt/css/cfx_css.h" |
| #include "core/fxcrt/css/cfx_csscustomproperty.h" |
| #include "core/fxcrt/fx_string.h" |
| |
| class CFX_CSSValueList; |
| |
| class CFX_CSSComputedStyle final : public Retainable { |
| public: |
| class InheritedData { |
| public: |
| InheritedData(); |
| ~InheritedData(); |
| |
| CFX_CSSLength m_LetterSpacing; |
| CFX_CSSLength m_WordSpacing; |
| CFX_CSSLength m_TextIndent; |
| RetainPtr<CFX_CSSValueList> m_pFontFamily; |
| float m_fFontSize; |
| float m_fLineHeight; |
| FX_ARGB m_dwFontColor; |
| uint16_t m_wFontWeight; |
| CFX_CSSFontVariant m_eFontVariant; |
| CFX_CSSFontStyle m_eFontStyle; |
| CFX_CSSTextAlign m_eTextAlign; |
| }; |
| |
| class NonInheritedData { |
| public: |
| NonInheritedData(); |
| |
| CFX_CSSRect m_MarginWidth; |
| CFX_CSSRect m_BorderWidth; |
| CFX_CSSRect m_PaddingWidth; |
| CFX_CSSLength m_Top; |
| CFX_CSSLength m_Bottom; |
| CFX_CSSLength m_Left; |
| CFX_CSSLength m_Right; |
| float m_fVerticalAlign; |
| CFX_CSSDisplay m_eDisplay; |
| CFX_CSSVerticalAlign m_eVerticalAlign; |
| uint8_t m_dwTextDecoration; |
| bool m_bHasMargin; |
| bool m_bHasBorder; |
| bool m_bHasPadding; |
| }; |
| |
| template <typename T, typename... Args> |
| friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); |
| |
| int32_t CountFontFamilies() const; |
| const WideString GetFontFamily(int32_t index) const; |
| uint16_t GetFontWeight() const; |
| CFX_CSSFontVariant GetFontVariant() const; |
| CFX_CSSFontStyle GetFontStyle() const; |
| float GetFontSize() const; |
| FX_ARGB GetColor() const; |
| void SetFontWeight(uint16_t wFontWeight); |
| void SetFontVariant(CFX_CSSFontVariant eFontVariant); |
| void SetFontStyle(CFX_CSSFontStyle eFontStyle); |
| void SetFontSize(float fFontSize); |
| void SetColor(FX_ARGB dwFontColor); |
| |
| const CFX_CSSRect* GetBorderWidth() const; |
| const CFX_CSSRect* GetMarginWidth() const; |
| const CFX_CSSRect* GetPaddingWidth() const; |
| void SetMarginWidth(const CFX_CSSRect& rect); |
| void SetPaddingWidth(const CFX_CSSRect& rect); |
| |
| CFX_CSSDisplay GetDisplay() const; |
| |
| float GetLineHeight() const; |
| const CFX_CSSLength& GetTextIndent() const; |
| CFX_CSSTextAlign GetTextAlign() const; |
| CFX_CSSVerticalAlign GetVerticalAlign() const; |
| float GetNumberVerticalAlign() const; |
| uint32_t GetTextDecoration() const; |
| const CFX_CSSLength& GetLetterSpacing() const; |
| void SetLineHeight(float fLineHeight); |
| void SetTextIndent(const CFX_CSSLength& textIndent); |
| void SetTextAlign(CFX_CSSTextAlign eTextAlign); |
| void SetNumberVerticalAlign(float fAlign); |
| void SetTextDecoration(uint32_t dwTextDecoration); |
| void SetLetterSpacing(const CFX_CSSLength& letterSpacing); |
| void AddCustomStyle(const CFX_CSSCustomProperty& prop); |
| |
| bool GetCustomStyle(const WideString& wsName, WideString& wsValue) const; |
| |
| InheritedData m_InheritedData; |
| NonInheritedData m_NonInheritedData; |
| |
| private: |
| CFX_CSSComputedStyle(); |
| ~CFX_CSSComputedStyle() override; |
| |
| std::vector<CFX_CSSCustomProperty> m_CustomProperties; |
| }; |
| |
| #endif // CORE_FXCRT_CSS_CFX_CSSCOMPUTEDSTYLE_H_ |