| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #ifndef XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_ | 7 #ifndef XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_ |
| 8 #define XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_ | 8 #define XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_ |
| 9 | 9 |
| 10 #include "core/fxcrt/include/fx_ext.h" | 10 #include "core/fxcrt/include/fx_ext.h" |
| 11 #include "xfa/fde/css/fde_cssdeclaration.h" | 11 #include "xfa/fde/css/fde_cssdeclaration.h" |
| 12 | 12 |
| 13 class CFDE_CSSSelector : public IFDE_CSSSelector, public CFX_Target { | 13 class CFDE_CSSSelector : public IFDE_CSSSelector, public CFX_Target { |
| 14 public: | 14 public: |
| 15 CFDE_CSSSelector(FDE_CSSSELECTORTYPE eType, | 15 CFDE_CSSSelector(FDE_CSSSELECTORTYPE eType, |
| 16 const FX_WCHAR* psz, | 16 const FX_WCHAR* psz, |
| 17 int32_t iLen, | 17 int32_t iLen, |
| 18 FX_BOOL bIgnoreCase) | 18 FX_BOOL bIgnoreCase) |
| 19 : m_eType(eType), | 19 : m_eType(eType), |
| 20 m_dwHash(FX_HashCode_String_GetW(psz, iLen, bIgnoreCase)), | 20 m_dwHash(FX_HashCode_String_GetW(psz, iLen, bIgnoreCase)), |
| 21 m_pNext(NULL) {} | 21 m_pNext(NULL) {} |
| 22 virtual FDE_CSSSELECTORTYPE GetType() const { return m_eType; } | 22 virtual FDE_CSSSELECTORTYPE GetType() const { return m_eType; } |
| 23 | 23 |
| 24 virtual FX_DWORD GetNameHash() const { return m_dwHash; } | 24 virtual uint32_t GetNameHash() const { return m_dwHash; } |
| 25 | 25 |
| 26 virtual IFDE_CSSSelector* GetNextSelector() const { return m_pNext; } | 26 virtual IFDE_CSSSelector* GetNextSelector() const { return m_pNext; } |
| 27 static IFDE_CSSSelector* FromString(IFX_MEMAllocator* pStaticStore, | 27 static IFDE_CSSSelector* FromString(IFX_MEMAllocator* pStaticStore, |
| 28 const FX_WCHAR* psz, | 28 const FX_WCHAR* psz, |
| 29 int32_t iLen); | 29 int32_t iLen); |
| 30 void SetNext(IFDE_CSSSelector* pNext) { m_pNext = pNext; } | 30 void SetNext(IFDE_CSSSelector* pNext) { m_pNext = pNext; } |
| 31 | 31 |
| 32 protected: | 32 protected: |
| 33 static CFDE_CSSSelector* ParseSelector(IFX_MEMAllocator* pStaticStore, | 33 static CFDE_CSSSelector* ParseSelector(IFX_MEMAllocator* pStaticStore, |
| 34 const FX_WCHAR* psz, | 34 const FX_WCHAR* psz, |
| 35 int32_t& iOff, | 35 int32_t& iOff, |
| 36 int32_t iLen, | 36 int32_t iLen, |
| 37 FDE_CSSSELECTORTYPE eType); | 37 FDE_CSSSELECTORTYPE eType); |
| 38 void SetType(FDE_CSSSELECTORTYPE eType) { m_eType = eType; } | 38 void SetType(FDE_CSSSELECTORTYPE eType) { m_eType = eType; } |
| 39 FDE_CSSSELECTORTYPE m_eType; | 39 FDE_CSSSELECTORTYPE m_eType; |
| 40 FX_DWORD m_dwHash; | 40 uint32_t m_dwHash; |
| 41 IFDE_CSSSelector* m_pNext; | 41 IFDE_CSSSelector* m_pNext; |
| 42 }; | 42 }; |
| 43 typedef CFX_ArrayTemplate<IFDE_CSSSelector*> CFDE_CSSSelectorArray; | 43 typedef CFX_ArrayTemplate<IFDE_CSSSelector*> CFDE_CSSSelectorArray; |
| 44 class CFDE_CSSStyleRule : public IFDE_CSSStyleRule, public CFX_Target { | 44 class CFDE_CSSStyleRule : public IFDE_CSSStyleRule, public CFX_Target { |
| 45 public: | 45 public: |
| 46 CFDE_CSSStyleRule() : m_ppSelector(NULL), m_iSelectors(0) {} | 46 CFDE_CSSStyleRule() : m_ppSelector(NULL), m_iSelectors(0) {} |
| 47 virtual int32_t CountSelectorLists() const { return m_iSelectors; } | 47 virtual int32_t CountSelectorLists() const { return m_iSelectors; } |
| 48 virtual IFDE_CSSSelector* GetSelectorList(int32_t index) const { | 48 virtual IFDE_CSSSelector* GetSelectorList(int32_t index) const { |
| 49 return m_ppSelector[index]; | 49 return m_ppSelector[index]; |
| 50 } | 50 } |
| 51 | 51 |
| 52 virtual IFDE_CSSDeclaration* GetDeclaration() const { | 52 virtual IFDE_CSSDeclaration* GetDeclaration() const { |
| 53 return (IFDE_CSSDeclaration*)&m_Declaration; | 53 return (IFDE_CSSDeclaration*)&m_Declaration; |
| 54 } | 54 } |
| 55 CFDE_CSSDeclaration& GetDeclImp() { return m_Declaration; } | 55 CFDE_CSSDeclaration& GetDeclImp() { return m_Declaration; } |
| 56 void SetSelector(IFX_MEMAllocator* pStaticStore, | 56 void SetSelector(IFX_MEMAllocator* pStaticStore, |
| 57 const CFDE_CSSSelectorArray& list); | 57 const CFDE_CSSSelectorArray& list); |
| 58 | 58 |
| 59 protected: | 59 protected: |
| 60 CFDE_CSSDeclaration m_Declaration; | 60 CFDE_CSSDeclaration m_Declaration; |
| 61 IFDE_CSSSelector** m_ppSelector; | 61 IFDE_CSSSelector** m_ppSelector; |
| 62 int32_t m_iSelectors; | 62 int32_t m_iSelectors; |
| 63 }; | 63 }; |
| 64 class CFDE_CSSMediaRule : public IFDE_CSSMediaRule, public CFX_Target { | 64 class CFDE_CSSMediaRule : public IFDE_CSSMediaRule, public CFX_Target { |
| 65 public: | 65 public: |
| 66 CFDE_CSSMediaRule(FX_DWORD dwMediaList) : m_dwMediaList(dwMediaList) {} | 66 CFDE_CSSMediaRule(uint32_t dwMediaList) : m_dwMediaList(dwMediaList) {} |
| 67 ~CFDE_CSSMediaRule(); | 67 ~CFDE_CSSMediaRule(); |
| 68 | 68 |
| 69 virtual FX_DWORD GetMediaList() const { return m_dwMediaList; } | 69 virtual uint32_t GetMediaList() const { return m_dwMediaList; } |
| 70 | 70 |
| 71 virtual int32_t CountRules() const { return m_RuleArray.GetSize(); } | 71 virtual int32_t CountRules() const { return m_RuleArray.GetSize(); } |
| 72 virtual IFDE_CSSRule* GetRule(int32_t index) { | 72 virtual IFDE_CSSRule* GetRule(int32_t index) { |
| 73 return m_RuleArray.GetAt(index); | 73 return m_RuleArray.GetAt(index); |
| 74 } | 74 } |
| 75 CFDE_CSSRuleArray& GetArray() { return m_RuleArray; } | 75 CFDE_CSSRuleArray& GetArray() { return m_RuleArray; } |
| 76 | 76 |
| 77 protected: | 77 protected: |
| 78 FX_DWORD m_dwMediaList; | 78 uint32_t m_dwMediaList; |
| 79 CFDE_CSSRuleArray m_RuleArray; | 79 CFDE_CSSRuleArray m_RuleArray; |
| 80 }; | 80 }; |
| 81 class CFDE_CSSFontFaceRule : public IFDE_CSSFontFaceRule, public CFX_Target { | 81 class CFDE_CSSFontFaceRule : public IFDE_CSSFontFaceRule, public CFX_Target { |
| 82 public: | 82 public: |
| 83 virtual IFDE_CSSDeclaration* GetDeclaration() const { | 83 virtual IFDE_CSSDeclaration* GetDeclaration() const { |
| 84 return (IFDE_CSSDeclaration*)&m_Declaration; | 84 return (IFDE_CSSDeclaration*)&m_Declaration; |
| 85 } | 85 } |
| 86 CFDE_CSSDeclaration& GetDeclImp() { return m_Declaration; } | 86 CFDE_CSSDeclaration& GetDeclImp() { return m_Declaration; } |
| 87 | 87 |
| 88 protected: | 88 protected: |
| 89 CFDE_CSSDeclaration m_Declaration; | 89 CFDE_CSSDeclaration m_Declaration; |
| 90 }; | 90 }; |
| 91 #define FDE_CSSSWITCHDEFAULTS() \ | 91 #define FDE_CSSSWITCHDEFAULTS() \ |
| 92 case FDE_CSSSYNTAXSTATUS_EOS: \ | 92 case FDE_CSSSYNTAXSTATUS_EOS: \ |
| 93 return FDE_CSSSYNTAXSTATUS_EOS; \ | 93 return FDE_CSSSYNTAXSTATUS_EOS; \ |
| 94 case FDE_CSSSYNTAXSTATUS_Error: \ | 94 case FDE_CSSSYNTAXSTATUS_Error: \ |
| 95 default: \ | 95 default: \ |
| 96 return FDE_CSSSYNTAXSTATUS_Error; | 96 return FDE_CSSSYNTAXSTATUS_Error; |
| 97 class CFDE_CSSStyleSheet : public IFDE_CSSStyleSheet, public CFX_Target { | 97 class CFDE_CSSStyleSheet : public IFDE_CSSStyleSheet, public CFX_Target { |
| 98 public: | 98 public: |
| 99 CFDE_CSSStyleSheet(FX_DWORD dwMediaList); | 99 CFDE_CSSStyleSheet(uint32_t dwMediaList); |
| 100 ~CFDE_CSSStyleSheet(); | 100 ~CFDE_CSSStyleSheet(); |
| 101 virtual FX_DWORD AddRef(); | 101 virtual uint32_t AddRef(); |
| 102 virtual FX_DWORD Release(); | 102 virtual uint32_t Release(); |
| 103 | 103 |
| 104 virtual FX_BOOL GetUrl(CFX_WideString& szUrl) { | 104 virtual FX_BOOL GetUrl(CFX_WideString& szUrl) { |
| 105 szUrl = m_szUrl; | 105 szUrl = m_szUrl; |
| 106 return szUrl.GetLength() > 0; | 106 return szUrl.GetLength() > 0; |
| 107 } | 107 } |
| 108 virtual FX_DWORD GetMediaList() const { return m_dwMediaList; } | 108 virtual uint32_t GetMediaList() const { return m_dwMediaList; } |
| 109 virtual uint16_t GetCodePage() const { return m_wCodePage; } | 109 virtual uint16_t GetCodePage() const { return m_wCodePage; } |
| 110 virtual int32_t CountRules() const; | 110 virtual int32_t CountRules() const; |
| 111 virtual IFDE_CSSRule* GetRule(int32_t index); | 111 virtual IFDE_CSSRule* GetRule(int32_t index); |
| 112 FX_BOOL LoadFromStream(const CFX_WideString& szUrl, | 112 FX_BOOL LoadFromStream(const CFX_WideString& szUrl, |
| 113 IFX_Stream* pStream, | 113 IFX_Stream* pStream, |
| 114 uint16_t wCodePage); | 114 uint16_t wCodePage); |
| 115 FX_BOOL LoadFromBuffer(const CFX_WideString& szUrl, | 115 FX_BOOL LoadFromBuffer(const CFX_WideString& szUrl, |
| 116 const FX_WCHAR* pBuffer, | 116 const FX_WCHAR* pBuffer, |
| 117 int32_t iBufSize, | 117 int32_t iBufSize, |
| 118 uint16_t wCodePage); | 118 uint16_t wCodePage); |
| 119 | 119 |
| 120 protected: | 120 protected: |
| 121 void Reset(); | 121 void Reset(); |
| 122 FX_BOOL LoadFromSyntax(IFDE_CSSSyntaxParser* pSyntax); | 122 FX_BOOL LoadFromSyntax(IFDE_CSSSyntaxParser* pSyntax); |
| 123 FDE_CSSSYNTAXSTATUS LoadStyleRule(IFDE_CSSSyntaxParser* pSyntax, | 123 FDE_CSSSYNTAXSTATUS LoadStyleRule(IFDE_CSSSyntaxParser* pSyntax, |
| 124 CFDE_CSSRuleArray& ruleArray); | 124 CFDE_CSSRuleArray& ruleArray); |
| 125 FDE_CSSSYNTAXSTATUS LoadImportRule(IFDE_CSSSyntaxParser* pSyntax); | 125 FDE_CSSSYNTAXSTATUS LoadImportRule(IFDE_CSSSyntaxParser* pSyntax); |
| 126 FDE_CSSSYNTAXSTATUS LoadPageRule(IFDE_CSSSyntaxParser* pSyntax); | 126 FDE_CSSSYNTAXSTATUS LoadPageRule(IFDE_CSSSyntaxParser* pSyntax); |
| 127 FDE_CSSSYNTAXSTATUS LoadMediaRule(IFDE_CSSSyntaxParser* pSyntax); | 127 FDE_CSSSYNTAXSTATUS LoadMediaRule(IFDE_CSSSyntaxParser* pSyntax); |
| 128 FDE_CSSSYNTAXSTATUS LoadFontFaceRule(IFDE_CSSSyntaxParser* pSyntax, | 128 FDE_CSSSYNTAXSTATUS LoadFontFaceRule(IFDE_CSSSyntaxParser* pSyntax, |
| 129 CFDE_CSSRuleArray& ruleArray); | 129 CFDE_CSSRuleArray& ruleArray); |
| 130 FDE_CSSSYNTAXSTATUS SkipRuleSet(IFDE_CSSSyntaxParser* pSyntax); | 130 FDE_CSSSYNTAXSTATUS SkipRuleSet(IFDE_CSSSyntaxParser* pSyntax); |
| 131 uint16_t m_wCodePage; | 131 uint16_t m_wCodePage; |
| 132 uint16_t m_wRefCount; | 132 uint16_t m_wRefCount; |
| 133 FX_DWORD m_dwMediaList; | 133 uint32_t m_dwMediaList; |
| 134 IFX_MEMAllocator* m_pAllocator; | 134 IFX_MEMAllocator* m_pAllocator; |
| 135 CFDE_CSSRuleArray m_RuleArray; | 135 CFDE_CSSRuleArray m_RuleArray; |
| 136 CFX_WideString m_szUrl; | 136 CFX_WideString m_szUrl; |
| 137 CFDE_CSSSelectorArray m_Selectors; | 137 CFDE_CSSSelectorArray m_Selectors; |
| 138 CFX_MapPtrToPtr m_StringCache; | 138 CFX_MapPtrToPtr m_StringCache; |
| 139 }; | 139 }; |
| 140 | 140 |
| 141 #endif // XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_ | 141 #endif // XFA_FDE_CSS_FDE_CSSSTYLESHEET_H_ |
| OLD | NEW |