From 1fdde02d90963f774e7d1b6b0353d23aefe0a357 Mon Sep 17 00:00:00 2001 From: dsinclair Date: Mon, 11 Apr 2016 14:09:49 -0700 Subject: Cleaning up FDE_CSS Classes. This Cl removes the IFDE_CSSAccelerator header and replaces the usage with the concrete class. The interfaces and methods in the CSSComputedStyle class are cleanedup to remove any unused methods. BUG=pdfium:468 Review URL: https://codereview.chromium.org/1876253002 --- xfa/fde/css/fde_css.h | 195 ++----------- xfa/fde/css/fde_csscache.h | 8 +- xfa/fde/css/fde_cssstyleselector.cpp | 14 +- xfa/fde/css/fde_cssstyleselector.h | 552 ++++++++--------------------------- xfa/fxfa/app/xfa_textlayout.cpp | 5 +- 5 files changed, 157 insertions(+), 617 deletions(-) diff --git a/xfa/fde/css/fde_css.h b/xfa/fde/css/fde_css.h index 0856accca6..f1a8ee93c9 100644 --- a/xfa/fde/css/fde_css.h +++ b/xfa/fde/css/fde_css.h @@ -12,29 +12,22 @@ #include "xfa/fgas/crt/fgas_utils.h" #include "xfa/fgas/font/fgas_font.h" -class IFDE_CSSValue; -class IFDE_CSSValueList; +class CFDE_CSSAccelerator; +class IFDE_CSSBoundaryStyle; +class IFDE_CSSComputedStyle; class IFDE_CSSDeclaration; -class IFDE_CSSSelector; +class IFDE_CSSFontStyle; +class IFDE_CSSParagraphStyle; +class IFDE_CSSPositionStyle; class IFDE_CSSRule; +class IFDE_CSSSelector; +class IFDE_CSSStyleSelector; class IFDE_CSSStyleSheet; class IFDE_CSSStyleSheetCache; class IFDE_CSSSyntaxParser; -class IFDE_CSSRubyStyle; -class IFDE_CSSMultiColumnStyle; -class IFDE_CSSGeneratedContentStyle; -class IFDE_CSSFontStyle; -class IFDE_CSSBoundaryStyle; -class IFDE_CSSPositionStyle; -class IFDE_CSSParagraphStyle; -class IFDE_CSSBackgroundStyle; -class IFDE_CSSListStyle; -class IFDE_CSSTableStyle; -class IFDE_CSSVisualStyle; -class IFDE_CSSComputedStyle; class IFDE_CSSTagProvider; -class IFDE_CSSAccelerator; -class IFDE_CSSStyleSelector; +class IFDE_CSSValue; +class IFDE_CSSValueList; enum FDE_CSSVALUETYPE { FDE_CSSVALUETYPE_Primitive = 1, @@ -824,45 +817,11 @@ enum FDE_CSSTEXTDECORATION { FDE_CSSTEXTDECORATION_Blink = 8, FDE_CSSTEXTDECORATION_Double = 16, }; -class IFDE_CSSRubyStyle { - public: - virtual ~IFDE_CSSRubyStyle() {} - virtual FDE_CSSRUBYALIGN GetRubyAlign() const = 0; - virtual FDE_CSSRUBYOVERHANG GetRubyOverhang() const = 0; - virtual FDE_CSSRUBYPOSITION GetRubyPosition() const = 0; - virtual FDE_CSSRUBYSPAN GetRubySpanType() const = 0; - virtual IFDE_CSSValue* GetRubySpanAttr() const = 0; -}; -class IFDE_CSSMultiColumnStyle { - public: - virtual ~IFDE_CSSMultiColumnStyle() {} - virtual const FDE_CSSLENGTH& GetColumnCount() const = 0; - virtual const FDE_CSSLENGTH& GetColumnGap() const = 0; - virtual FX_ARGB GetColumnRuleColor() const = 0; - virtual FDE_CSSBORDERSTYLE GetColumnRuleStyle() const = 0; - virtual const FDE_CSSLENGTH& GetColumnRuleWidth() const = 0; - virtual const FDE_CSSLENGTH& GetColumnWidth() const = 0; - virtual void SetColumnCount(const FDE_CSSLENGTH& columnCount) = 0; - virtual void SetColumnGap(const FDE_CSSLENGTH& columnGap) = 0; - virtual void SetColumnRuleColor(FX_ARGB dwColumnRuleColor) = 0; - virtual void SetColumnRuleStyle(FDE_CSSBORDERSTYLE eColumnRuleStyle) = 0; - virtual void SetColumnRuleWidth(const FDE_CSSLENGTH& columnRuleWidth) = 0; - virtual void SetColumnWidth(const FDE_CSSLENGTH& columnWidth) = 0; -}; -class IFDE_CSSGeneratedContentStyle { - public: - virtual ~IFDE_CSSGeneratedContentStyle() {} - virtual int32_t CountCounters() = 0; - virtual const FX_WCHAR* GetCounterIdentifier(int32_t index) = 0; - virtual FX_BOOL GetCounterReset(int32_t index, int32_t& iValue) = 0; - virtual FX_BOOL GetCounterIncrement(int32_t index, int32_t& iValue) = 0; - virtual IFDE_CSSValueList* GetContent() const = 0; - virtual int32_t CountQuotes() const = 0; - virtual const FX_WCHAR* GetQuotes(int32_t index) const = 0; -}; + class IFDE_CSSFontStyle { public: virtual ~IFDE_CSSFontStyle() {} + virtual int32_t CountFontFamilies() const = 0; virtual const FX_WCHAR* GetFontFamily(int32_t index) const = 0; virtual uint16_t GetFontWeight() const = 0; @@ -876,151 +835,50 @@ class IFDE_CSSFontStyle { virtual void SetFontSize(FX_FLOAT fFontSize) = 0; virtual void SetColor(FX_ARGB dwFontColor) = 0; }; + class IFDE_CSSBoundaryStyle { public: virtual ~IFDE_CSSBoundaryStyle() {} - virtual FX_ARGB GetBorderLeftColor() const = 0; - virtual FX_ARGB GetBorderTopColor() const = 0; - virtual FX_ARGB GetBorderRightColor() const = 0; - virtual FX_ARGB GetBorderBottomColor() const = 0; - virtual FDE_CSSBORDERSTYLE GetBorderLeftStyle() const = 0; - virtual FDE_CSSBORDERSTYLE GetBorderTopStyle() const = 0; - virtual FDE_CSSBORDERSTYLE GetBorderRightStyle() const = 0; - virtual FDE_CSSBORDERSTYLE GetBorderBottomStyle() const = 0; + virtual const FDE_CSSRECT* GetBorderWidth() const = 0; virtual const FDE_CSSRECT* GetMarginWidth() const = 0; virtual const FDE_CSSRECT* GetPaddingWidth() const = 0; - virtual void SetBorderLeftColor(FX_ARGB dwBorderColor) = 0; - virtual void SetBorderTopColor(FX_ARGB dwBorderColor) = 0; - virtual void SetBorderRightColor(FX_ARGB dwBorderColor) = 0; - virtual void SetBorderBottomColor(FX_ARGB dwBorderColor) = 0; - - virtual void SetBorderLeftStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; - virtual void SetBorderTopStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; - virtual void SetBorderRightStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; - virtual void SetBorderBottomStyle(FDE_CSSBORDERSTYLE eBorderStyle) = 0; - - virtual void SetBorderWidth(const FDE_CSSRECT& rect) = 0; virtual void SetMarginWidth(const FDE_CSSRECT& rect) = 0; virtual void SetPaddingWidth(const FDE_CSSRECT& rect) = 0; }; + class IFDE_CSSPositionStyle { public: virtual ~IFDE_CSSPositionStyle() {} virtual FDE_CSSDISPLAY GetDisplay() const = 0; - virtual const FDE_CSSSIZE& GetBoxSize() const = 0; - virtual const FDE_CSSSIZE& GetMinBoxSize() const = 0; - virtual const FDE_CSSSIZE& GetMaxBoxSize() const = 0; - virtual FDE_CSSFLOAT GetFloat() const = 0; - virtual FDE_CSSCLEAR GetClear() const = 0; - virtual FDE_CSSPOSITION GetPosition() const = 0; - virtual FDE_CSSLENGTH GetTop() const = 0; - virtual FDE_CSSLENGTH GetBottom() const = 0; - virtual FDE_CSSLENGTH GetLeft() const = 0; - virtual FDE_CSSLENGTH GetRight() const = 0; - virtual void SetDisplay(FDE_CSSDISPLAY eDisplay) = 0; - virtual void SetBoxSize(const FDE_CSSSIZE& boxSize) = 0; - virtual void SetMinBoxSize(const FDE_CSSSIZE& minBoxSize) = 0; - virtual void SetMaxBoxSize(const FDE_CSSSIZE& maxBoxSize) = 0; - virtual void SetFloat(FDE_CSSFLOAT eFloat) = 0; - virtual void SetClear(FDE_CSSCLEAR eClear) = 0; }; + class IFDE_CSSParagraphStyle { public: virtual ~IFDE_CSSParagraphStyle() {} + virtual FX_FLOAT GetLineHeight() const = 0; - virtual FDE_CSSWHITESPACE GetWhiteSpace() const = 0; virtual const FDE_CSSLENGTH& GetTextIndent() const = 0; virtual FDE_CSSTEXTALIGN GetTextAlign() const = 0; virtual FDE_CSSVERTICALALIGN GetVerticalAlign() const = 0; virtual FX_FLOAT GetNumberVerticalAlign() const = 0; - virtual FDE_CSSTEXTTRANSFORM GetTextTransform() const = 0; virtual uint32_t GetTextDecoration() const = 0; virtual const FDE_CSSLENGTH& GetLetterSpacing() const = 0; - virtual const FDE_CSSLENGTH& GetWordSpacing() const = 0; - virtual FDE_CSSWRITINGMODE GetWritingMode() const = 0; - virtual FDE_CSSWORDBREAK GetWordBreak() const = 0; - virtual int32_t GetWidows() const = 0; - virtual FX_ARGB GetTextEmphasisColor() const = 0; - virtual FDE_CSSPAGEBREAK GetPageBreakBefore() const = 0; - virtual FDE_CSSPAGEBREAK GetPageBreakAfter() const = 0; - virtual FDE_CSSPAGEBREAK GetPageBreakInside() const = 0; - virtual int32_t GetOrphans() const = 0; - virtual FDE_CSSLINEBREAK GetLineBreak() const = 0; - virtual FDE_CSSTEXTEMPHASISMARK GetTextEmphasisMark() const = 0; - virtual FDE_CSSTEXTEMPHASISFILL GetTextEmphasisFill() const = 0; - virtual const FX_WCHAR* GetTextEmphasisCustom() const = 0; - virtual FDE_CSSTEXTCOMBINE GetTextCombineType() const = 0; - virtual FX_BOOL HasTextCombineNumber() const = 0; - virtual FX_FLOAT GetTextCombineNumber() const = 0; virtual void SetLineHeight(FX_FLOAT fLineHeight) = 0; - virtual void SetWhiteSpace(FDE_CSSWHITESPACE eWhiteSpace) = 0; virtual void SetTextIndent(const FDE_CSSLENGTH& textIndent) = 0; virtual void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) = 0; - virtual void SetVerticalAlign(FDE_CSSVERTICALALIGN eVerticalAlign) = 0; virtual void SetNumberVerticalAlign(FX_FLOAT fAlign) = 0; - virtual void SetTextTransform(FDE_CSSTEXTTRANSFORM eTextTransform) = 0; virtual void SetTextDecoration(uint32_t dwTextDecoration) = 0; virtual void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) = 0; - virtual void SetWordSpacing(const FDE_CSSLENGTH& wordSpacing) = 0; - virtual void SetWritingMode(FDE_CSSWRITINGMODE eWritingMode) = 0; - virtual void SetWordBreak(FDE_CSSWORDBREAK eWordBreak) = 0; - virtual void SetWidows(int32_t iWidows) = 0; - virtual void SetTextEmphasisColor(FX_ARGB dwTextEmphasisColor) = 0; - virtual void SetPageBreakBefore(FDE_CSSPAGEBREAK ePageBreakBefore) = 0; - virtual void SetPageBreakAfter(FDE_CSSPAGEBREAK ePageBreakAfter) = 0; - virtual void SetPageBreakInside(FDE_CSSPAGEBREAK ePageBreakInside) = 0; - virtual void SetOrphans(int32_t iOrphans) = 0; - virtual void SetLineBreak(FDE_CSSLINEBREAK eLineBreak) = 0; -}; -class IFDE_CSSBackgroundStyle { - public: - virtual ~IFDE_CSSBackgroundStyle() {} - virtual FX_ARGB GetBKGColor() const = 0; - virtual const FX_WCHAR* GetBKGImage() const = 0; - virtual FDE_CSSBKGREPEAT GetBKGRepeat() const = 0; - virtual FDE_CSSBKGATTACHMENT GetBKGAttachment() const = 0; - virtual const FDE_CSSPOINT& GetBKGPosition() const = 0; - virtual void SetBKGColor(FX_ARGB dwBKGColor) = 0; - virtual void SetBKGPosition(const FDE_CSSPOINT& bkgPosition) = 0; -}; -class IFDE_CSSListStyle { - public: - virtual ~IFDE_CSSListStyle() {} - virtual FDE_CSSLISTSTYLETYPE GetListStyleType() const = 0; - virtual FDE_CSSLISTSTYLEPOSITION GetListStylePosition() const = 0; - virtual const FX_WCHAR* GetListStyleImage() const = 0; - virtual void SetListStyleType(FDE_CSSLISTSTYLETYPE eListStyleType) = 0; - virtual void SetListStylePosition( - FDE_CSSLISTSTYLEPOSITION eListStylePosition) = 0; -}; -class IFDE_CSSTableStyle { - public: - virtual ~IFDE_CSSTableStyle() {} - virtual FDE_CSSCAPTIONSIDE GetCaptionSide() const = 0; -}; -class IFDE_CSSVisualStyle { - public: - virtual ~IFDE_CSSVisualStyle() {} - virtual FDE_CSSVISIBILITY GetVisibility() const = 0; - virtual FDE_CSSOVERFLOW GetOverflowX() const = 0; - virtual FDE_CSSOVERFLOW GetOverflowY() const = 0; - virtual void SetVisibility(FDE_CSSVISIBILITY eVisibility) = 0; }; + class IFDE_CSSComputedStyle : public IFX_Unknown { public: virtual void Reset() = 0; - virtual IFDE_CSSFontStyle* GetFontStyles() const = 0; - virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() const = 0; - virtual IFDE_CSSPositionStyle* GetPositionStyles() const = 0; - virtual IFDE_CSSParagraphStyle* GetParagraphStyles() const = 0; - virtual IFDE_CSSBackgroundStyle* GetBackgroundStyles() const = 0; - virtual IFDE_CSSVisualStyle* GetVisualStyles() const = 0; - virtual IFDE_CSSListStyle* GetListStyles() const = 0; - virtual IFDE_CSSMultiColumnStyle* GetMultiColumnStyle() const = 0; - virtual IFDE_CSSTableStyle* GetTableStyle() const = 0; - virtual IFDE_CSSGeneratedContentStyle* GetGeneratedContentStyle() const = 0; - virtual IFDE_CSSRubyStyle* GetRubyStyle() const = 0; + virtual IFDE_CSSFontStyle* GetFontStyles() = 0; + virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() = 0; + virtual IFDE_CSSPositionStyle* GetPositionStyles() = 0; + virtual IFDE_CSSParagraphStyle* GetParagraphStyles() = 0; virtual FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName, CFX_WideString& wsValue) const = 0; }; @@ -1045,12 +903,7 @@ class IFDE_CSSTagProvider { CFX_WideStringC& wsAttr, CFX_WideStringC& wsValue) = 0; }; -class IFDE_CSSAccelerator { - public: - virtual ~IFDE_CSSAccelerator() {} - virtual void OnEnterTag(IFDE_CSSTagProvider* pTag) = 0; - virtual void OnLeaveTag(IFDE_CSSTagProvider* pTag) = 0; -}; + class IFDE_CSSStyleSelector { public: static IFDE_CSSStyleSelector* Create(); @@ -1065,7 +918,7 @@ class IFDE_CSSStyleSelector { virtual void SetStylePriority(FDE_CSSSTYLESHEETGROUP eType, FDE_CSSSTYLESHEETPRIORITY ePriority) = 0; virtual void UpdateStyleIndex(uint32_t dwMediaList) = 0; - virtual IFDE_CSSAccelerator* InitAccelerator() = 0; + virtual CFDE_CSSAccelerator* InitAccelerator() = 0; virtual IFDE_CSSComputedStyle* CreateComputedStyle( IFDE_CSSComputedStyle* pParentStyle) = 0; virtual int32_t MatchDeclarations( diff --git a/xfa/fde/css/fde_csscache.h b/xfa/fde/css/fde_csscache.h index 20158b5371..7d1ace8ac1 100644 --- a/xfa/fde/css/fde_csscache.h +++ b/xfa/fde/css/fde_csscache.h @@ -71,11 +71,13 @@ class FDE_CSSTagCache : public CFX_Target { }; typedef CFX_ObjectStackTemplate CFDE_CSSTagStack; -class CFDE_CSSAccelerator : public IFDE_CSSAccelerator, public CFX_Target { +class CFDE_CSSAccelerator : public CFX_Target { public: - virtual void OnEnterTag(IFDE_CSSTagProvider* pTag); - virtual void OnLeaveTag(IFDE_CSSTagProvider* pTag); + void OnEnterTag(IFDE_CSSTagProvider* pTag); + void OnLeaveTag(IFDE_CSSTagProvider* pTag); + void Clear() { m_Stack.RemoveAll(); } + FDE_CSSTagCache* GetTopElement() const { return m_Stack.GetTopElement(); } protected: diff --git a/xfa/fde/css/fde_cssstyleselector.cpp b/xfa/fde/css/fde_cssstyleselector.cpp index f1e73dd5d1..d93a756b3b 100644 --- a/xfa/fde/css/fde_cssstyleselector.cpp +++ b/xfa/fde/css/fde_cssstyleselector.cpp @@ -11,6 +11,8 @@ #include "xfa/fde/css/fde_csscache.h" #include "xfa/fde/css/fde_cssdeclaration.h" +#define FDE_CSSUNIVERSALHASH ('*') + int32_t CFDE_CSSCounterStyle::FindIndex(const FX_WCHAR* pszIdentifier) { int32_t iCount = m_arrCounterData.GetSize(); for (int32_t i = 0; i < iCount; i++) { @@ -74,15 +76,7 @@ void CFDE_CSSCounterStyle::UpdateIndex() { DoUpdateIndex(m_pCounterReset); m_bIndexDirty = FALSE; } -FDE_CSSTEXTEMPHASISMARK CFDE_CSSComputedStyle::GetTextEmphasisMark() const { - if (m_InheritedData.m_eTextEmphasisMark != FDE_CSSTEXTEMPHASISMARK_Auto) { - return (FDE_CSSTEXTEMPHASISMARK)m_InheritedData.m_eTextEmphasisMark; - } - if (m_InheritedData.m_eWritingMode == FDE_CSSWRITINGMODE_HorizontalTb) { - return FDE_CSSTEXTEMPHASISMARK_Dot; - } - return FDE_CSSTEXTEMPHASISMARK_Sesame; -} + FDE_CSSRuleData::FDE_CSSRuleData(IFDE_CSSSelector* pSel, IFDE_CSSDeclaration* pDecl, uint32_t dwPos) @@ -245,7 +239,7 @@ void CFDE_CSSStyleSelector::SetDefFontSize(FX_FLOAT fFontSize) { FXSYS_assert(fFontSize > 0); m_fDefFontSize = fFontSize; } -IFDE_CSSAccelerator* CFDE_CSSStyleSelector::InitAccelerator() { +CFDE_CSSAccelerator* CFDE_CSSStyleSelector::InitAccelerator() { if (m_pAccelerator == NULL) { m_pAccelerator = new CFDE_CSSAccelerator; FXSYS_assert(m_pAccelerator != NULL); diff --git a/xfa/fde/css/fde_cssstyleselector.h b/xfa/fde/css/fde_cssstyleselector.h index 2652e3f8ea..93ea1f6057 100644 --- a/xfa/fde/css/fde_cssstyleselector.h +++ b/xfa/fde/css/fde_cssstyleselector.h @@ -16,7 +16,8 @@ #include "xfa/fgas/crt/fgas_memory.h" #include "xfa/fgas/crt/fgas_system.h" -#define FDE_CSSUNIVERSALHASH ('*') +class CFDE_CSSAccelerator; +class CFDE_CSSComputedStyle; class FDE_CSSRuleData : public CFX_Target { public: @@ -38,6 +39,7 @@ class CFDE_CSSRuleCollection : public CFX_Target { m_pPersudoRules(nullptr), m_iSelectors(0) {} ~CFDE_CSSRuleCollection() { Clear(); } + void AddRulesFrom(const CFDE_CSSStyleSheetArray& sheets, uint32_t dwMediaList, IFX_FontMgr* pFontMgr); @@ -64,6 +66,7 @@ class CFDE_CSSRuleCollection : public CFX_Target { } FDE_CSSRuleData* GetUniversalRuleData() { return m_pUniversalRules; } FDE_CSSRuleData* GetPersudoRuleData() { return m_pPersudoRules; } + IFX_MEMAllocator* m_pStaticStore; protected: @@ -85,8 +88,7 @@ class CFDE_CSSRuleCollection : public CFX_Target { FDE_CSSRuleData* m_pPersudoRules; int32_t m_iSelectors; }; -class CFDE_CSSAccelerator; -class CFDE_CSSComputedStyle; + class CFDE_CSSStyleSelector : public IFDE_CSSStyleSelector, public CFX_Target { public: CFDE_CSSStyleSelector(); @@ -103,7 +105,7 @@ class CFDE_CSSStyleSelector : public IFDE_CSSStyleSelector, public CFX_Target { virtual void SetStylePriority(FDE_CSSSTYLESHEETGROUP eType, FDE_CSSSTYLESHEETPRIORITY ePriority); virtual void UpdateStyleIndex(uint32_t dwMediaList); - virtual IFDE_CSSAccelerator* InitAccelerator(); + virtual CFDE_CSSAccelerator* InitAccelerator(); virtual IFDE_CSSComputedStyle* CreateComputedStyle( IFDE_CSSComputedStyle* pParentStyle); virtual int32_t MatchDeclarations( @@ -176,6 +178,7 @@ class CFDE_CSSStyleSelector : public IFDE_CSSStyleSelector, public CFX_Target { FDE_CSSRUBYOVERHANG ToRubyOverhang(FDE_CSSPROPERTYVALUE eValue); FDE_CSSRUBYPOSITION ToRubyPosition(FDE_CSSPROPERTYVALUE eValue); FDE_CSSRUBYSPAN ToRubySpan(FDE_CSSPROPERTYVALUE eValue); + IFX_FontMgr* m_pFontMgr; FX_FLOAT m_fDefFontSize; IFX_MEMAllocator* m_pRuleDataStore; @@ -209,27 +212,33 @@ struct FDE_CSSCOUNTERDATA { class CFDE_CSSCounterStyle { public: - CFDE_CSSCounterStyle() : m_pCounterInc(NULL), m_pCounterReset(NULL) {} + CFDE_CSSCounterStyle() : m_pCounterInc(nullptr), m_pCounterReset(nullptr) {} + 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; @@ -239,11 +248,13 @@ class CFDE_CSSCounterStyle { void UpdateIndex(); void DoUpdateIndex(IFDE_CSSValueList* pList); int32_t FindIndex(const FX_WCHAR* pszIdentifier); + IFDE_CSSValueList* m_pCounterInc; IFDE_CSSValueList* m_pCounterReset; CFX_ArrayTemplate m_arrCounterData; FX_BOOL m_bIndexDirty; }; + class CFDE_CSSInheritedData { public: void Reset() { @@ -259,6 +270,7 @@ class CFDE_CSSInheritedData { m_bTextEmphasisColorCurrent = TRUE; m_iOrphans = 2; } + const FX_WCHAR* m_pszListStyleImage; FDE_CSSLENGTH m_LetterSpacing; FDE_CSSLENGTH m_WordSpacing; @@ -292,6 +304,7 @@ class CFDE_CSSInheritedData { uint8_t m_eRubyOverhang : 2; uint8_t m_eRubyPosition : 2; }; + class CFDE_CSSNonInheritedData { public: void Reset() { @@ -365,74 +378,57 @@ class CFDE_CSSNonInheritedData { uint32_t m_bColumnRuleColorSame : 1; uint32_t m_bHasTextCombineNumber : 1; }; + class CFDE_CSSComputedStyle : public IFDE_CSSComputedStyle, - public IFDE_CSSFontStyle, public IFDE_CSSBoundaryStyle, + public IFDE_CSSFontStyle, public IFDE_CSSPositionStyle, public IFDE_CSSParagraphStyle, - public IFDE_CSSBackgroundStyle, - public IFDE_CSSVisualStyle, - public IFDE_CSSListStyle, - public IFDE_CSSMultiColumnStyle, - public IFDE_CSSGeneratedContentStyle, - public IFDE_CSSTableStyle, - public IFDE_CSSRubyStyle, public CFX_Target { public: CFDE_CSSComputedStyle(IFX_MEMAllocator* pAlloc) : m_dwRefCount(1), m_pAllocator(pAlloc) {} + ~CFDE_CSSComputedStyle() {} - virtual uint32_t AddRef() { return ++m_dwRefCount; } - virtual uint32_t Release() { + + // IFX_Unknown: + uint32_t AddRef() override { return ++m_dwRefCount; } + + uint32_t Release() override { uint32_t dwRefCount = --m_dwRefCount; if (dwRefCount == 0) { - if (m_NonInheritedData.m_pCounterStyle != NULL) { + if (m_NonInheritedData.m_pCounterStyle) delete m_NonInheritedData.m_pCounterStyle; - } + FXTARGET_DeleteWith(CFDE_CSSComputedStyle, m_pAllocator, this); } return dwRefCount; } - virtual void Reset() { + // IFDE_CSSComputedStyle: + void Reset() override { m_InheritedData.Reset(); m_NonInheritedData.Reset(); } - virtual IFDE_CSSFontStyle* GetFontStyles() const { - return (IFDE_CSSFontStyle * const) this; - } - virtual IFDE_CSSBoundaryStyle* GetBoundaryStyles() const { - return (IFDE_CSSBoundaryStyle * const) this; - } - virtual IFDE_CSSPositionStyle* GetPositionStyles() const { - return (IFDE_CSSPositionStyle * const) this; - } - virtual IFDE_CSSParagraphStyle* GetParagraphStyles() const { - return (IFDE_CSSParagraphStyle * const) this; - } - virtual IFDE_CSSBackgroundStyle* GetBackgroundStyles() const { - return (IFDE_CSSBackgroundStyle * const) this; - } - virtual IFDE_CSSVisualStyle* GetVisualStyles() const { - return (IFDE_CSSVisualStyle * const) this; - } - virtual IFDE_CSSListStyle* GetListStyles() const { - return (IFDE_CSSListStyle * const) this; - } - virtual IFDE_CSSTableStyle* GetTableStyle() const { - return (IFDE_CSSTableStyle * const) this; + + IFDE_CSSFontStyle* GetFontStyles() override { + return static_cast(this); } - virtual IFDE_CSSMultiColumnStyle* GetMultiColumnStyle() const { - return (IFDE_CSSMultiColumnStyle * const) this; + + IFDE_CSSBoundaryStyle* GetBoundaryStyles() override { + return static_cast(this); } - virtual IFDE_CSSGeneratedContentStyle* GetGeneratedContentStyle() const { - return (IFDE_CSSGeneratedContentStyle * const) this; + + IFDE_CSSPositionStyle* GetPositionStyles() override { + return static_cast(this); } - virtual IFDE_CSSRubyStyle* GetRubyStyle() const { - return (IFDE_CSSRubyStyle * const) this; + + IFDE_CSSParagraphStyle* GetParagraphStyles() override { + return static_cast(this); } - virtual FX_BOOL GetCustomStyle(const CFX_WideStringC& wsName, - CFX_WideString& wsValue) const { + + 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]; @@ -441,455 +437,149 @@ class CFDE_CSSComputedStyle : public IFDE_CSSComputedStyle, } return FALSE; } - virtual FDE_CSSRUBYALIGN GetRubyAlign() const { - return (FDE_CSSRUBYALIGN)m_InheritedData.m_eRubyAlign; - } - virtual FDE_CSSRUBYPOSITION GetRubyPosition() const { - return (FDE_CSSRUBYPOSITION)m_InheritedData.m_eRubyPosition; - } - virtual FDE_CSSRUBYOVERHANG GetRubyOverhang() const { - return (FDE_CSSRUBYOVERHANG)m_InheritedData.m_eRubyOverhang; - } - virtual FDE_CSSRUBYSPAN GetRubySpanType() const { - return m_NonInheritedData.m_pRubySpan == NULL ? FDE_CSSRUBYSPAN_None - : FDE_CSSRUBYSPAN_Attr; - } - virtual IFDE_CSSValue* GetRubySpanAttr() const { - return m_NonInheritedData.m_pRubySpan; - } - virtual FDE_CSSCAPTIONSIDE GetCaptionSide() const { - return (FDE_CSSCAPTIONSIDE)m_InheritedData.m_eCaptionSide; - } - virtual int32_t CountCounters() { - return (m_NonInheritedData.m_pCounterStyle == NULL) - ? 0 - : m_NonInheritedData.m_pCounterStyle->CountCounters(); - } - virtual const FX_WCHAR* GetCounterIdentifier(int32_t index) { - return m_NonInheritedData.m_pCounterStyle->GetCounterIdentifier(index); - } - virtual FX_BOOL GetCounterReset(int32_t index, int32_t& iValue) { - return m_NonInheritedData.m_pCounterStyle->GetCounterReset(index, iValue); - } - virtual FX_BOOL GetCounterIncrement(int32_t index, int32_t& iValue) { - return m_NonInheritedData.m_pCounterStyle->GetCounterIncrement(index, - iValue); - } - virtual IFDE_CSSValueList* GetContent() const { - return m_NonInheritedData.m_pContentList; - } - virtual int32_t CountQuotes() const { - return m_InheritedData.m_pQuotes == NULL - ? 0 - : m_InheritedData.m_pQuotes->CountValues(); - } - virtual const FX_WCHAR* GetQuotes(int32_t index) const { - FXSYS_assert(m_InheritedData.m_pQuotes != NULL && - m_InheritedData.m_pQuotes->CountValues() > index); - return ((IFDE_CSSPrimitiveValue*)(m_InheritedData.m_pQuotes->GetValue( - index))) - ->GetString(index); - } - virtual const FDE_CSSLENGTH& GetColumnCount() const { - return m_NonInheritedData.m_ColumnCount; - } - virtual const FDE_CSSLENGTH& GetColumnGap() const { - return m_NonInheritedData.m_ColumnGap; - } - virtual FX_ARGB GetColumnRuleColor() const { - return m_NonInheritedData.m_bColumnRuleColorSame - ? m_InheritedData.m_dwFontColor - : m_NonInheritedData.m_dwColumnRuleColor; - } - virtual FDE_CSSBORDERSTYLE GetColumnRuleStyle() const { - return (FDE_CSSBORDERSTYLE)m_NonInheritedData.m_eColumnRuleStyle; - } - virtual const FDE_CSSLENGTH& GetColumnRuleWidth() const { - return m_NonInheritedData.m_ColumnRuleWidth; - } - virtual const FDE_CSSLENGTH& GetColumnWidth() const { - return m_NonInheritedData.m_ColumnWidth; - } - virtual void SetColumnCount(const FDE_CSSLENGTH& columnCount) { - m_NonInheritedData.m_ColumnCount = columnCount; - } - virtual void SetColumnGap(const FDE_CSSLENGTH& columnGap) { - m_NonInheritedData.m_ColumnGap = columnGap; - } - virtual void SetColumnRuleColor(FX_ARGB dwColumnRuleColor) { - m_NonInheritedData.m_dwColumnRuleColor = dwColumnRuleColor, - m_NonInheritedData.m_bColumnRuleColorSame = FALSE; - } - virtual void SetColumnRuleStyle(FDE_CSSBORDERSTYLE eColumnRuleStyle) { - m_NonInheritedData.m_eColumnRuleStyle = eColumnRuleStyle; - } - virtual void SetColumnRuleWidth(const FDE_CSSLENGTH& columnRuleWidth) { - m_NonInheritedData.m_ColumnRuleWidth = columnRuleWidth; - } - virtual void SetColumnWidth(const FDE_CSSLENGTH& columnWidth) { - m_NonInheritedData.m_ColumnWidth = columnWidth; - } - virtual int32_t CountFontFamilies() const { + + // IFDE_CSSFontStyle: + int32_t CountFontFamilies() const override { return m_InheritedData.m_pFontFamily ? m_InheritedData.m_pFontFamily->CountValues() : 0; } - virtual const FX_WCHAR* GetFontFamily(int32_t index) const { - return ((IFDE_CSSPrimitiveValue*)(m_InheritedData.m_pFontFamily->GetValue( - index))) + + const FX_WCHAR* GetFontFamily(int32_t index) const override { + return (static_cast( + m_InheritedData.m_pFontFamily->GetValue(index))) ->GetString(index); } - virtual uint16_t GetFontWeight() const { + + uint16_t GetFontWeight() const override { return m_InheritedData.m_wFontWeight; } - virtual FDE_CSSFONTVARIANT GetFontVariant() const { - return (FDE_CSSFONTVARIANT)m_InheritedData.m_eFontVariant; + + FDE_CSSFONTVARIANT GetFontVariant() const override { + return static_cast(m_InheritedData.m_eFontVariant); } - virtual FDE_CSSFONTSTYLE GetFontStyle() const { - return (FDE_CSSFONTSTYLE)m_InheritedData.m_eFontStyle; + + FDE_CSSFONTSTYLE GetFontStyle() const override { + return static_cast(m_InheritedData.m_eFontStyle); } - virtual FX_FLOAT GetFontSize() const { return m_InheritedData.m_fFontSize; } - virtual FX_ARGB GetColor() const { return m_InheritedData.m_dwFontColor; } - virtual void SetFontWeight(uint16_t wFontWeight) { + + 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; } - virtual void SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) { + + void SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) override { m_InheritedData.m_eFontVariant = eFontVariant; } - virtual void SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) { + + void SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) override { m_InheritedData.m_eFontStyle = eFontStyle; } - virtual void SetFontSize(FX_FLOAT fFontSize) { + + void SetFontSize(FX_FLOAT fFontSize) override { m_InheritedData.m_fFontSize = fFontSize; } - virtual void SetColor(FX_ARGB dwFontColor) { - m_InheritedData.m_dwFontColor = dwFontColor; - } - virtual FX_ARGB GetBorderLeftColor() const { - return m_NonInheritedData.m_dwBDRLeftColor; - } - virtual FX_ARGB GetBorderTopColor() const { - return m_NonInheritedData.m_dwBDRTopColor; - } - virtual FX_ARGB GetBorderRightColor() const { - return m_NonInheritedData.m_dwBDRRightColor; - } - virtual FX_ARGB GetBorderBottomColor() const { - return m_NonInheritedData.m_dwBDRBottomColor; - } - virtual FDE_CSSBORDERSTYLE GetBorderLeftStyle() const { - return (FDE_CSSBORDERSTYLE)m_NonInheritedData.m_eBDRLeftStyle; - } - virtual FDE_CSSBORDERSTYLE GetBorderTopStyle() const { - return (FDE_CSSBORDERSTYLE)m_NonInheritedData.m_eBDRTopStyle; - } - virtual FDE_CSSBORDERSTYLE GetBorderRightStyle() const { - return (FDE_CSSBORDERSTYLE)m_NonInheritedData.m_eBDRRightStyle; - } - virtual FDE_CSSBORDERSTYLE GetBorderBottomStyle() const { - return (FDE_CSSBORDERSTYLE)m_NonInheritedData.m_eBDRBottomStyle; + void SetColor(FX_ARGB dwFontColor) override { + m_InheritedData.m_dwFontColor = dwFontColor; } - virtual const FDE_CSSRECT* GetBorderWidth() const { + // IFDE_CSSBoundaryStyle: + const FDE_CSSRECT* GetBorderWidth() const override { return m_NonInheritedData.m_bHasBorder ? &(m_NonInheritedData.m_BorderWidth) - : NULL; + : nullptr; } - virtual const FDE_CSSRECT* GetMarginWidth() const { + + const FDE_CSSRECT* GetMarginWidth() const override { return m_NonInheritedData.m_bHasMargin ? &(m_NonInheritedData.m_MarginWidth) - : NULL; + : nullptr; } - virtual const FDE_CSSRECT* GetPaddingWidth() const { + + const FDE_CSSRECT* GetPaddingWidth() const override { return m_NonInheritedData.m_bHasPadding ? &(m_NonInheritedData.m_PaddingWidth) - : NULL; - } - virtual void SetBorderLeftColor(FX_ARGB dwBorderColor) { - m_NonInheritedData.m_dwBDRLeftColor = dwBorderColor; - } - virtual void SetBorderTopColor(FX_ARGB dwBorderColor) { - m_NonInheritedData.m_dwBDRTopColor = dwBorderColor; - } - virtual void SetBorderRightColor(FX_ARGB dwBorderColor) { - m_NonInheritedData.m_dwBDRRightColor = dwBorderColor; - } - virtual void SetBorderBottomColor(FX_ARGB dwBorderColor) { - m_NonInheritedData.m_dwBDRBottomColor = dwBorderColor; + : nullptr; } - virtual void SetBorderLeftStyle(FDE_CSSBORDERSTYLE eBorderStyle) { - m_NonInheritedData.m_eBDRLeftStyle = eBorderStyle; - } - virtual void SetBorderTopStyle(FDE_CSSBORDERSTYLE eBorderStyle) { - m_NonInheritedData.m_eBDRTopStyle = eBorderStyle; - } - virtual void SetBorderRightStyle(FDE_CSSBORDERSTYLE eBorderStyle) { - m_NonInheritedData.m_eBDRRightStyle = eBorderStyle; - } - virtual void SetBorderBottomStyle(FDE_CSSBORDERSTYLE eBorderStyle) { - m_NonInheritedData.m_eBDRBottomStyle = eBorderStyle; - } - - virtual void SetBorderWidth(const FDE_CSSRECT& rect) { - m_NonInheritedData.m_BorderWidth = rect; - m_NonInheritedData.m_bHasBorder = TRUE; - } - virtual void SetMarginWidth(const FDE_CSSRECT& rect) { + void SetMarginWidth(const FDE_CSSRECT& rect) override { m_NonInheritedData.m_MarginWidth = rect; m_NonInheritedData.m_bHasMargin = TRUE; } - virtual void SetPaddingWidth(const FDE_CSSRECT& rect) { + + void SetPaddingWidth(const FDE_CSSRECT& rect) override { m_NonInheritedData.m_PaddingWidth = rect; m_NonInheritedData.m_bHasPadding = TRUE; } - virtual FDE_CSSDISPLAY GetDisplay() const { - return (FDE_CSSDISPLAY)m_NonInheritedData.m_eDisplay; - } - virtual const FDE_CSSSIZE& GetBoxSize() const { - return m_NonInheritedData.m_BoxSize; - } - virtual const FDE_CSSSIZE& GetMinBoxSize() const { - return m_NonInheritedData.m_MinBoxSize; - } - virtual const FDE_CSSSIZE& GetMaxBoxSize() const { - return m_NonInheritedData.m_MaxBoxSize; - } - virtual FDE_CSSFLOAT GetFloat() const { - return (FDE_CSSFLOAT)m_NonInheritedData.m_eFloat; - } - virtual FDE_CSSCLEAR GetClear() const { - return (FDE_CSSCLEAR)m_NonInheritedData.m_eClear; - } - virtual FDE_CSSPOSITION GetPosition() const { - return (FDE_CSSPOSITION)m_NonInheritedData.m_ePosition; - } - virtual FDE_CSSLENGTH GetTop() const { return m_NonInheritedData.m_Top; } - virtual FDE_CSSLENGTH GetBottom() const { - return m_NonInheritedData.m_Bottom; - } - virtual FDE_CSSLENGTH GetLeft() const { return m_NonInheritedData.m_Left; } - virtual FDE_CSSLENGTH GetRight() const { return m_NonInheritedData.m_Right; } - virtual void SetDisplay(FDE_CSSDISPLAY eDisplay) { - m_NonInheritedData.m_eDisplay = eDisplay; - } - virtual void SetBoxSize(const FDE_CSSSIZE& size) { - m_NonInheritedData.m_BoxSize = size; - } - virtual void SetMinBoxSize(const FDE_CSSSIZE& size) { - m_NonInheritedData.m_MinBoxSize = size; - } - virtual void SetMaxBoxSize(const FDE_CSSSIZE& size) { - m_NonInheritedData.m_MaxBoxSize = size; + // IFDE_CSSPositionStyle: + FDE_CSSDISPLAY GetDisplay() const override { + return static_cast(m_NonInheritedData.m_eDisplay); } - virtual void SetFloat(FDE_CSSFLOAT eFloat) { - m_NonInheritedData.m_eFloat = eFloat; - } - virtual void SetClear(FDE_CSSCLEAR eClear) { - m_NonInheritedData.m_eClear = eClear; - } - virtual FX_FLOAT GetLineHeight() const { + + // IFDE_CSSParagraphStyle: + FX_FLOAT GetLineHeight() const override { return m_InheritedData.m_fLineHeight; } - virtual FDE_CSSWHITESPACE GetWhiteSpace() const { - return (FDE_CSSWHITESPACE)m_InheritedData.m_eWhiteSpace; - } - virtual const FDE_CSSLENGTH& GetTextIndent() const { + + const FDE_CSSLENGTH& GetTextIndent() const override { return m_InheritedData.m_TextIndent; } - virtual FDE_CSSTEXTALIGN GetTextAlign() const { - return (FDE_CSSTEXTALIGN)m_InheritedData.m_eTextAligh; + + FDE_CSSTEXTALIGN GetTextAlign() const override { + return static_cast(m_InheritedData.m_eTextAligh); } - virtual FDE_CSSVERTICALALIGN GetVerticalAlign() const { - return (FDE_CSSVERTICALALIGN)m_NonInheritedData.m_eVerticalAlign; + + FDE_CSSVERTICALALIGN GetVerticalAlign() const override { + return static_cast( + m_NonInheritedData.m_eVerticalAlign); } - virtual FX_FLOAT GetNumberVerticalAlign() const { + + FX_FLOAT GetNumberVerticalAlign() const override { return m_NonInheritedData.m_fVerticalAlign; } - virtual FDE_CSSTEXTTRANSFORM GetTextTransform() const { - return (FDE_CSSTEXTTRANSFORM)m_InheritedData.m_eTextTransform; - } - virtual uint32_t GetTextDecoration() const { + + uint32_t GetTextDecoration() const override { return m_NonInheritedData.m_dwTextDecoration; } - virtual const FDE_CSSLENGTH& GetLetterSpacing() const { + + const FDE_CSSLENGTH& GetLetterSpacing() const override { return m_InheritedData.m_LetterSpacing; } - virtual const FDE_CSSLENGTH& GetWordSpacing() const { - return m_InheritedData.m_WordSpacing; - } - virtual FDE_CSSWRITINGMODE GetWritingMode() const { - return (FDE_CSSWRITINGMODE)m_InheritedData.m_eWritingMode; - } - virtual FDE_CSSWORDBREAK GetWordBreak() const { - return (FDE_CSSWORDBREAK)m_InheritedData.m_eWordBreak; - } - virtual int32_t GetWidows() const { return m_InheritedData.m_iWidows; } - virtual FX_ARGB GetTextEmphasisColor() const { - return m_InheritedData.m_bTextEmphasisColorCurrent - ? m_InheritedData.m_dwFontColor - : m_InheritedData.m_dwTextEmphasisColor; - } - virtual FDE_CSSPAGEBREAK GetPageBreakBefore() const { - return (FDE_CSSPAGEBREAK)m_NonInheritedData.m_ePageBreakBefore; - } - virtual FDE_CSSPAGEBREAK GetPageBreakAfter() const { - return (FDE_CSSPAGEBREAK)m_NonInheritedData.m_ePageBreakAfter; - } - virtual FDE_CSSPAGEBREAK GetPageBreakInside() const { - return (FDE_CSSPAGEBREAK)m_NonInheritedData.m_ePageBreakInside; - } - virtual int32_t GetOrphans() const { return m_InheritedData.m_iOrphans; } - virtual FDE_CSSLINEBREAK GetLineBreak() const { - return (FDE_CSSLINEBREAK)m_InheritedData.m_eLineBreak; - } - virtual FDE_CSSTEXTEMPHASISMARK GetTextEmphasisMark() const; - virtual FDE_CSSTEXTEMPHASISFILL GetTextEmphasisFill() const { - return (FDE_CSSTEXTEMPHASISFILL)m_InheritedData.m_eTextEmphasisFill; - } - virtual const FX_WCHAR* GetTextEmphasisCustom() const { - FXSYS_assert(m_InheritedData.m_eTextEmphasisMark == - FDE_CSSTEXTEMPHASISMARK_Custom); - return m_InheritedData.m_pszTextEmphasisCustomMark; - } - virtual FDE_CSSTEXTCOMBINE GetTextCombineType() const { - return (FDE_CSSTEXTCOMBINE)m_NonInheritedData.m_eTextCombine; - } - virtual FX_BOOL HasTextCombineNumber() const { - return m_NonInheritedData.m_bHasTextCombineNumber; - } - virtual FX_FLOAT GetTextCombineNumber() const { - FXSYS_assert(m_NonInheritedData.m_eTextCombine == - FDE_CSSTEXTCOMBINE_Horizontal); - return m_NonInheritedData.m_fTextCombineNumber; - } - virtual void SetLineHeight(FX_FLOAT fLineHeight) { + + void SetLineHeight(FX_FLOAT fLineHeight) override { m_InheritedData.m_fLineHeight = fLineHeight; } - virtual void SetWhiteSpace(FDE_CSSWHITESPACE eWhiteSpace) { - m_InheritedData.m_eWhiteSpace = eWhiteSpace; - } - virtual void SetTextIndent(const FDE_CSSLENGTH& textIndent) { + + void SetTextIndent(const FDE_CSSLENGTH& textIndent) override { m_InheritedData.m_TextIndent = textIndent; } - virtual void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) { + + void SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) override { m_InheritedData.m_eTextAligh = eTextAlign; } - virtual void SetVerticalAlign(FDE_CSSVERTICALALIGN eVerticalAlign) { - m_NonInheritedData.m_eVerticalAlign = eVerticalAlign; - } - virtual void SetNumberVerticalAlign(FX_FLOAT fAlign) { + + void SetNumberVerticalAlign(FX_FLOAT fAlign) override { m_NonInheritedData.m_eVerticalAlign = FDE_CSSVERTICALALIGN_Number, m_NonInheritedData.m_fVerticalAlign = fAlign; } - virtual void SetTextTransform(FDE_CSSTEXTTRANSFORM eTextTransform) { - m_InheritedData.m_eTextTransform = eTextTransform; - } - virtual void SetTextDecoration(uint32_t dwTextDecoration) { + + void SetTextDecoration(uint32_t dwTextDecoration) override { m_NonInheritedData.m_dwTextDecoration = dwTextDecoration; } - virtual void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) { + + void SetLetterSpacing(const FDE_CSSLENGTH& letterSpacing) override { m_InheritedData.m_LetterSpacing = letterSpacing; } - virtual void SetWordSpacing(const FDE_CSSLENGTH& wordSpacing) { - m_InheritedData.m_WordSpacing = wordSpacing; - } - virtual void SetWritingMode(FDE_CSSWRITINGMODE eWritingMode) { - m_InheritedData.m_eWritingMode = eWritingMode; - } - virtual void SetWordBreak(FDE_CSSWORDBREAK eWordBreak) { - m_InheritedData.m_eWordBreak = eWordBreak; - } - virtual void SetWidows(int32_t iWidows) { - m_InheritedData.m_iWidows = iWidows; - } - virtual void SetTextEmphasisColor(FX_ARGB dwTextEmphasisColor) { - m_InheritedData.m_dwTextEmphasisColor = dwTextEmphasisColor, - m_InheritedData.m_bTextEmphasisColorCurrent = FALSE; - } - virtual void SetPageBreakBefore(FDE_CSSPAGEBREAK ePageBreakBefore) { - m_NonInheritedData.m_ePageBreakBefore = ePageBreakBefore; - } - virtual void SetPageBreakAfter(FDE_CSSPAGEBREAK ePageBreakAfter) { - m_NonInheritedData.m_ePageBreakAfter = ePageBreakAfter; - } - virtual void SetPageBreakInside(FDE_CSSPAGEBREAK ePageBreakInside) { - m_NonInheritedData.m_ePageBreakInside = ePageBreakInside; - } - virtual void SetOrphans(int32_t iOrphans) { - m_InheritedData.m_iOrphans = iOrphans; - } - virtual void SetLineBreak(FDE_CSSLINEBREAK eLineBreak) { - m_InheritedData.m_eLineBreak = eLineBreak; - } - virtual FX_ARGB GetBKGColor() const { - return m_NonInheritedData.m_dwBKGColor; - } - virtual const FX_WCHAR* GetBKGImage() const { - return m_NonInheritedData.m_pszBKGImage; - } - virtual const FDE_CSSPOINT& GetBKGPosition() const { - return m_NonInheritedData.m_BKGPosition; - } - virtual FDE_CSSBKGREPEAT GetBKGRepeat() const { - return (FDE_CSSBKGREPEAT)m_NonInheritedData.m_eBKGRepeat; - } - virtual FDE_CSSBKGATTACHMENT GetBKGAttachment() const { - return (FDE_CSSBKGATTACHMENT)m_NonInheritedData.m_eBKGAttachment; - } - virtual void SetBKGColor(FX_ARGB dwBKGColor) { - m_NonInheritedData.m_dwBKGColor = dwBKGColor; - } - virtual void SetBKGPosition(const FDE_CSSPOINT& bkgPosition) { - m_NonInheritedData.m_BKGPosition = bkgPosition; - } - virtual FDE_CSSVISIBILITY GetVisibility() const { - return (FDE_CSSVISIBILITY)m_InheritedData.m_eVisibility; - } - virtual FDE_CSSOVERFLOW GetOverflowX() const { - return (FDE_CSSOVERFLOW)m_NonInheritedData.m_eOverflowX; - } - virtual FDE_CSSOVERFLOW GetOverflowY() const { - return (FDE_CSSOVERFLOW)m_NonInheritedData.m_eOverflowY; - } - virtual int32_t CountCursorUrls() const { - return m_InheritedData.m_pCursorUris == NULL - ? 0 - : m_InheritedData.m_pCursorUris->CountValues(); - } - virtual const FX_WCHAR* GetCursorUrl(int32_t index) const { - FXSYS_assert(m_InheritedData.m_pCursorUris != NULL); - return ((IFDE_CSSPrimitiveValue*)(m_InheritedData.m_pCursorUris->GetValue( - index))) - ->GetString(index); - } - virtual FDE_CSSCURSOR GetCursorType() const { - return m_InheritedData.m_eCursor; - } - virtual void SetVisibility(FDE_CSSVISIBILITY eVisibility) { - m_InheritedData.m_eVisibility = eVisibility; - } - virtual FDE_CSSLISTSTYLETYPE GetListStyleType() const { - return (FDE_CSSLISTSTYLETYPE)m_NonInheritedData.m_eListStyleType; - } - virtual FDE_CSSLISTSTYLEPOSITION GetListStylePosition() const { - return (FDE_CSSLISTSTYLEPOSITION)m_NonInheritedData.m_eListStylePosition; - } - virtual const FX_WCHAR* GetListStyleImage() const { - return m_InheritedData.m_pszListStyleImage; - } - virtual void SetListStyleType(FDE_CSSLISTSTYLETYPE eListStyleType) { - m_NonInheritedData.m_eListStyleType = eListStyleType; - } - virtual void SetListStylePosition( - FDE_CSSLISTSTYLEPOSITION eListStylePosition) { - m_NonInheritedData.m_eListStylePosition = eListStylePosition; - } + void AddCustomStyle(const CFX_WideString& wsName, const CFX_WideString& wsValue) { m_CustomProperties.Add(wsName); m_CustomProperties.Add(wsValue); } + uint32_t m_dwRefCount; IFX_MEMAllocator* m_pAllocator; CFDE_CSSInheritedData m_InheritedData; diff --git a/xfa/fxfa/app/xfa_textlayout.cpp b/xfa/fxfa/app/xfa_textlayout.cpp index 55220e2f5a..15625f2998 100644 --- a/xfa/fxfa/app/xfa_textlayout.cpp +++ b/xfa/fxfa/app/xfa_textlayout.cpp @@ -9,6 +9,7 @@ #include #include "core/fxcrt/include/fx_ext.h" +#include "xfa/fde/css/fde_csscache.h" #include "xfa/fde/fde_pen.h" #include "xfa/fde/xml/fde_xml_imp.h" #include "xfa/fgas/crt/fgas_algorithm.h" @@ -225,7 +226,7 @@ IFDE_CSSComputedStyle* CXFA_TextParser::ComputeStyle( if (tagProvider.m_bContent) return nullptr; IFDE_CSSComputedStyle* pStyle = CreateStyle(pParentStyle); - IFDE_CSSAccelerator* pCSSAccel = m_pSelector->InitAccelerator(); + CFDE_CSSAccelerator* pCSSAccel = m_pSelector->InitAccelerator(); pCSSAccel->OnEnterTag(&tagProvider); m_pSelector->ComputeStyle(&tagProvider, pContext->GetDecls(), pContext->CountDecls(), pStyle); @@ -262,7 +263,7 @@ void CXFA_TextParser::ParseRichText(CFDE_XMLNode* pXMLNode, FDE_CSSDISPLAY eDisplay = FDE_CSSDISPLAY_Inline; if (!tagProvider.m_bContent) { pNewStyle = CreateStyle(pParentStyle); - IFDE_CSSAccelerator* pCSSAccel = m_pSelector->InitAccelerator(); + CFDE_CSSAccelerator* pCSSAccel = m_pSelector->InitAccelerator(); pCSSAccel->OnEnterTag(&tagProvider); CFDE_CSSDeclarationArray DeclArray; int32_t iMatchedDecls = -- cgit v1.2.3