diff options
Diffstat (limited to 'xfa/fde/css/fde_cssstyleselector.h')
-rw-r--r-- | xfa/fde/css/fde_cssstyleselector.h | 276 |
1 files changed, 56 insertions, 220 deletions
diff --git a/xfa/fde/css/fde_cssstyleselector.h b/xfa/fde/css/fde_cssstyleselector.h index 3af75a7b9e..042e989242 100644 --- a/xfa/fde/css/fde_cssstyleselector.h +++ b/xfa/fde/css/fde_cssstyleselector.h @@ -34,12 +34,8 @@ class FDE_CSSRuleData : public CFX_Target { class CFDE_CSSRuleCollection : public CFX_Target { public: - CFDE_CSSRuleCollection() - : m_pStaticStore(nullptr), - m_pUniversalRules(nullptr), - m_pPersudoRules(nullptr), - m_iSelectors(0) {} - ~CFDE_CSSRuleCollection() { Clear(); } + CFDE_CSSRuleCollection(); + ~CFDE_CSSRuleCollection() override; void AddRulesFrom(const CFDE_CSSStyleSheetArray& sheets, uint32_t dwMediaList, @@ -211,33 +207,29 @@ struct FDE_CSSCOUNTERDATA { class CFDE_CSSCounterStyle { public: - CFDE_CSSCounterStyle() : m_pCounterInc(nullptr), m_pCounterReset(nullptr) {} + CFDE_CSSCounterStyle(); + ~CFDE_CSSCounterStyle(); void SetCounterIncrementList(IFDE_CSSValueList* pList) { m_pCounterInc = pList; m_bIndexDirty = TRUE; } - void SetCounterResetList(IFDE_CSSValueList* pList) { m_pCounterReset = pList; m_bIndexDirty = TRUE; } - int32_t CountCounters() { UpdateIndex(); return m_arrCounterData.GetSize(); } - FX_BOOL GetCounterIncrement(int32_t index, int32_t& iValue) { UpdateIndex(); return m_arrCounterData.ElementAt(index).GetCounterIncrement(iValue); } - FX_BOOL GetCounterReset(int32_t index, int32_t& iValue) { UpdateIndex(); return m_arrCounterData.ElementAt(index).GetCounterReset(iValue); } - const FX_WCHAR* GetCounterIdentifier(int32_t index) { UpdateIndex(); return m_arrCounterData.ElementAt(index).m_pszIdent; @@ -256,19 +248,9 @@ class CFDE_CSSCounterStyle { class CFDE_CSSInheritedData { public: - void Reset() { - FXSYS_memset(this, 0, sizeof(CFDE_CSSInheritedData)); - m_LetterSpacing.Set(FDE_CSSLENGTHUNIT_Normal); - m_WordSpacing.Set(FDE_CSSLENGTHUNIT_Normal); - m_TextIndent.Set(FDE_CSSLENGTHUNIT_Point, 0); - m_fFontSize = 12.0f; - m_fLineHeight = 14.0f; - m_wFontWeight = 400; - m_dwFontColor = 0xFF000000; - m_iWidows = 2; - m_bTextEmphasisColorCurrent = TRUE; - m_iOrphans = 2; - } + CFDE_CSSInheritedData(); + + void Reset(); const FX_WCHAR* m_pszListStyleImage; FDE_CSSLENGTH m_LetterSpacing; @@ -306,21 +288,9 @@ class CFDE_CSSInheritedData { class CFDE_CSSNonInheritedData { public: - void Reset() { - FXSYS_memset(this, 0, sizeof(CFDE_CSSNonInheritedData)); - m_MarginWidth = m_BorderWidth = - m_PaddingWidth.Set(FDE_CSSLENGTHUNIT_Point, 0); - m_MinBoxSize.Set(FDE_CSSLENGTHUNIT_Point, 0); - m_MaxBoxSize.Set(FDE_CSSLENGTHUNIT_None); - m_eDisplay = FDE_CSSDISPLAY_Inline; - m_fVerticalAlign = 0.0f; - m_ColumnCount.Set(FDE_CSSLENGTHUNIT_Auto); - m_ColumnGap.Set(FDE_CSSLENGTHUNIT_Normal); - m_bColumnRuleColorSame = TRUE; - m_ColumnWidth.Set(FDE_CSSLENGTHUNIT_Auto); - m_ColumnRuleWidth.Set(FDE_CSSLENGTHUNIT_Auto); - m_eTextCombine = FDE_CSSTEXTCOMBINE_None; - } + CFDE_CSSNonInheritedData(); + + void Reset(); IFDE_CSSValueList* m_pContentList; CFDE_CSSCounterStyle* m_pCounterStyle; @@ -385,196 +355,62 @@ class CFDE_CSSComputedStyle : public IFDE_CSSComputedStyle, public IFDE_CSSParagraphStyle, public CFX_Target { public: - CFDE_CSSComputedStyle(IFX_MemoryAllocator* pAlloc) - : m_dwRefCount(1), m_pAllocator(pAlloc) {} - - ~CFDE_CSSComputedStyle() override {} - - // IFX_Retainable: - uint32_t Retain() override { return ++m_dwRefCount; } - uint32_t Release() override { - uint32_t dwRefCount = --m_dwRefCount; - if (dwRefCount == 0) { - delete m_NonInheritedData.m_pCounterStyle; - FXTARGET_DeleteWith(CFDE_CSSComputedStyle, m_pAllocator, this); - } - return dwRefCount; - } - - // IFDE_CSSComputedStyle: - void Reset() override { - m_InheritedData.Reset(); - m_NonInheritedData.Reset(); - } - - IFDE_CSSFontStyle* GetFontStyles() override { - return static_cast<IFDE_CSSFontStyle*>(this); - } - - IFDE_CSSBoundaryStyle* GetBoundaryStyles() override { - return static_cast<IFDE_CSSBoundaryStyle*>(this); - } - - IFDE_CSSPositionStyle* GetPositionStyles() override { - return static_cast<IFDE_CSSPositionStyle*>(this); - } - - IFDE_CSSParagraphStyle* GetParagraphStyles() override { - return static_cast<IFDE_CSSParagraphStyle*>(this); - } - + CFDE_CSSComputedStyle(IFX_MemoryAllocator* pAlloc); + ~CFDE_CSSComputedStyle() override; + + // IFX_Retainable + uint32_t Retain() override; + uint32_t Release() override; + + // IFDE_CSSComputedStyle + void Reset() override; + IFDE_CSSFontStyle* GetFontStyles() override; + IFDE_CSSBoundaryStyle* GetBoundaryStyles() override; + IFDE_CSSPositionStyle* GetPositionStyles() override; + IFDE_CSSParagraphStyle* GetParagraphStyles() override; FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName, - CFX_WideString& wsValue) const override { - for (int32_t i = m_CustomProperties.GetSize() - 2; i > -1; i -= 2) { - if (wsName == m_CustomProperties[i]) { - wsValue = m_CustomProperties[i + 1]; - return TRUE; - } - } - return FALSE; - } + CFX_WideString& wsValue) const override; // IFDE_CSSFontStyle: - int32_t CountFontFamilies() const override { - return m_InheritedData.m_pFontFamily - ? m_InheritedData.m_pFontFamily->CountValues() - : 0; - } - - const FX_WCHAR* GetFontFamily(int32_t index) const override { - return (static_cast<IFDE_CSSPrimitiveValue*>( - m_InheritedData.m_pFontFamily->GetValue(index))) - ->GetString(index); - } - - uint16_t GetFontWeight() const override { - return m_InheritedData.m_wFontWeight; - } - - FDE_CSSFONTVARIANT GetFontVariant() const override { - return static_cast<FDE_CSSFONTVARIANT>(m_InheritedData.m_eFontVariant); - } - - FDE_CSSFONTSTYLE GetFontStyle() const override { - return static_cast<FDE_CSSFONTSTYLE>(m_InheritedData.m_eFontStyle); - } - - FX_FLOAT GetFontSize() const override { return m_InheritedData.m_fFontSize; } - - FX_ARGB GetColor() const override { return m_InheritedData.m_dwFontColor; } - - void SetFontWeight(uint16_t wFontWeight) override { - m_InheritedData.m_wFontWeight = wFontWeight; - } - - void SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) override { - m_InheritedData.m_eFontVariant = eFontVariant; - } - - void SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) override { - m_InheritedData.m_eFontStyle = eFontStyle; - } - - void SetFontSize(FX_FLOAT fFontSize) override { - m_InheritedData.m_fFontSize = fFontSize; - } - - void SetColor(FX_ARGB dwFontColor) override { - m_InheritedData.m_dwFontColor = dwFontColor; - } + int32_t CountFontFamilies() const override; + const FX_WCHAR* GetFontFamily(int32_t index) const override; + uint16_t GetFontWeight() const override; + FDE_CSSFONTVARIANT GetFontVariant() const override; + FDE_CSSFONTSTYLE GetFontStyle() const override; + FX_FLOAT GetFontSize() const override; + FX_ARGB GetColor() const override; + void SetFontWeight(uint16_t wFontWeight) override; + void SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) override; + void SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) override; + void SetFontSize(FX_FLOAT fFontSize) override; + void SetColor(FX_ARGB dwFontColor) override; // IFDE_CSSBoundaryStyle: - const FDE_CSSRECT* GetBorderWidth() const override { - return m_NonInheritedData.m_bHasBorder ? &(m_NonInheritedData.m_BorderWidth) - : nullptr; - } - - const FDE_CSSRECT* GetMarginWidth() const override { - return m_NonInheritedData.m_bHasMargin ? &(m_NonInheritedData.m_MarginWidth) - : nullptr; - } - - const FDE_CSSRECT* GetPaddingWidth() const override { - return m_NonInheritedData.m_bHasPadding - ? &(m_NonInheritedData.m_PaddingWidth) - : nullptr; - } - - void SetMarginWidth(const FDE_CSSRECT& rect) override { - m_NonInheritedData.m_MarginWidth = rect; - m_NonInheritedData.m_bHasMargin = TRUE; - } - - void SetPaddingWidth(const FDE_CSSRECT& rect) override { - m_NonInheritedData.m_PaddingWidth = rect; - m_NonInheritedData.m_bHasPadding = TRUE; - } + const FDE_CSSRECT* GetBorderWidth() const override; + const FDE_CSSRECT* GetMarginWidth() const override; + const FDE_CSSRECT* GetPaddingWidth() const override; + void SetMarginWidth(const FDE_CSSRECT& rect) override; + void SetPaddingWidth(const FDE_CSSRECT& rect) override; // IFDE_CSSPositionStyle: - FDE_CSSDISPLAY GetDisplay() const override { - return static_cast<FDE_CSSDISPLAY>(m_NonInheritedData.m_eDisplay); - } + FDE_CSSDISPLAY GetDisplay() const override; // IFDE_CSSParagraphStyle: - FX_FLOAT GetLineHeight() const override { - return m_InheritedData.m_fLineHeight; - } - - const FDE_CSSLENGTH& GetTextIndent() const override { - return m_InheritedData.m_TextIndent; - } - - FDE_CSSTEXTALIGN GetTextAlign() const override { - return static_cast<FDE_CSSTEXTALIGN>(m_InheritedData.m_eTextAligh); - } - - FDE_CSSVERTICALALIGN GetVerticalAlign() const override { - return static_cast<FDE_CSSVERTICALALIGN>( - m_NonInheritedData.m_eVerticalAlign); - } - - FX_FLOAT GetNumberVerticalAlign() const override { - return m_NonInheritedData.m_fVerticalAlign; - } - - uint32_t GetTextDecoration() const override { - return m_NonInheritedData.m_dwTextDecoration; - } - - const FDE_CSSLENGTH& GetLetterSpacing() const override { - return m_InheritedData.m_LetterSpacing; - } - - void SetLineHeight(FX_FLOAT fLineHeight) override { - m_InheritedData.m_fLineHeight = fLineHeight; - } - - void SetTextIndent(const FDE_CSSLENGTH& textIndent) override { - m_InheritedData.m_TextIndent = textIndent; - } - - void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) override { - m_InheritedData.m_eTextAligh = eTextAlign; - } - - void SetNumberVerticalAlign(FX_FLOAT fAlign) override { - m_NonInheritedData.m_eVerticalAlign = FDE_CSSVERTICALALIGN_Number, - m_NonInheritedData.m_fVerticalAlign = fAlign; - } - - void SetTextDecoration(uint32_t dwTextDecoration) override { - m_NonInheritedData.m_dwTextDecoration = dwTextDecoration; - } - - void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) override { - m_InheritedData.m_LetterSpacing = letterSpacing; - } - + FX_FLOAT GetLineHeight() const override; + const FDE_CSSLENGTH& GetTextIndent() const override; + FDE_CSSTEXTALIGN GetTextAlign() const override; + FDE_CSSVERTICALALIGN GetVerticalAlign() const override; + FX_FLOAT GetNumberVerticalAlign() const override; + uint32_t GetTextDecoration() const override; + const FDE_CSSLENGTH& GetLetterSpacing() const override; + void SetLineHeight(FX_FLOAT fLineHeight) override; + void SetTextIndent(const FDE_CSSLENGTH& textIndent) override; + void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) override; + void SetNumberVerticalAlign(FX_FLOAT fAlign) override; + void SetTextDecoration(uint32_t dwTextDecoration) override; + void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) override; void AddCustomStyle(const CFX_WideString& wsName, - const CFX_WideString& wsValue) { - m_CustomProperties.Add(wsName); - m_CustomProperties.Add(wsValue); - } + const CFX_WideString& wsValue); uint32_t m_dwRefCount; IFX_MemoryAllocator* m_pAllocator; |