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_CSSSYNTAX_H_ | 7 #ifndef XFA_FDE_CSS_FDE_CSSSYNTAX_H_ |
8 #define XFA_FDE_CSS_FDE_CSSSYNTAX_H_ | 8 #define XFA_FDE_CSS_FDE_CSSSYNTAX_H_ |
9 | 9 |
| 10 #include "core/fxcrt/cfx_retain_ptr.h" |
10 #include "xfa/fde/css/fde_css.h" | 11 #include "xfa/fde/css/fde_css.h" |
11 #include "xfa/fgas/crt/fgas_memory.h" | 12 #include "xfa/fgas/crt/fgas_memory.h" |
12 #include "xfa/fgas/crt/fgas_stream.h" | 13 #include "xfa/fgas/crt/fgas_stream.h" |
13 | 14 |
14 class CFDE_CSSTextBuf : public CFX_Target { | 15 class CFDE_CSSTextBuf : public CFX_Target { |
15 public: | 16 public: |
16 CFDE_CSSTextBuf(); | 17 CFDE_CSSTextBuf(); |
17 ~CFDE_CSSTextBuf() override; | 18 ~CFDE_CSSTextBuf() override; |
18 | 19 |
19 bool AttachBuffer(const FX_WCHAR* pBuffer, int32_t iBufLen); | 20 bool AttachBuffer(const FX_WCHAR* pBuffer, int32_t iBufLen); |
20 bool EstimateSize(int32_t iAllocSize); | 21 bool EstimateSize(int32_t iAllocSize); |
21 int32_t LoadFromStream(IFGAS_Stream* pTxtStream, | 22 int32_t LoadFromStream(const CFX_RetainPtr<IFGAS_Stream>& pTxtStream, |
22 int32_t iStreamOffset, | 23 int32_t iStreamOffset, |
23 int32_t iMaxChars, | 24 int32_t iMaxChars, |
24 bool& bEOS); | 25 bool& bEOS); |
25 bool AppendChar(FX_WCHAR wch) { | 26 bool AppendChar(FX_WCHAR wch) { |
26 if (m_iDatLen >= m_iBufLen && !ExpandBuf(m_iBufLen * 2)) | 27 if (m_iDatLen >= m_iBufLen && !ExpandBuf(m_iBufLen * 2)) |
27 return false; | 28 return false; |
28 m_pBuffer[m_iDatLen++] = wch; | 29 m_pBuffer[m_iDatLen++] = wch; |
29 return true; | 30 return true; |
30 } | 31 } |
31 void Clear() { m_iDatPos = m_iDatLen = 0; } | 32 void Clear() { m_iDatPos = m_iDatLen = 0; } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 FDE_CSSSYNTAXMODE_Selector, | 74 FDE_CSSSYNTAXMODE_Selector, |
74 FDE_CSSSYNTAXMODE_PropertyName, | 75 FDE_CSSSYNTAXMODE_PropertyName, |
75 FDE_CSSSYNTAXMODE_PropertyValue, | 76 FDE_CSSSYNTAXMODE_PropertyValue, |
76 }; | 77 }; |
77 | 78 |
78 class CFDE_CSSSyntaxParser : public CFX_Target { | 79 class CFDE_CSSSyntaxParser : public CFX_Target { |
79 public: | 80 public: |
80 CFDE_CSSSyntaxParser(); | 81 CFDE_CSSSyntaxParser(); |
81 ~CFDE_CSSSyntaxParser() override; | 82 ~CFDE_CSSSyntaxParser() override; |
82 | 83 |
83 bool Init(IFGAS_Stream* pStream, | 84 bool Init(const CFX_RetainPtr<IFGAS_Stream>& pStream, |
84 int32_t iCSSPlaneSize, | 85 int32_t iCSSPlaneSize, |
85 int32_t iTextDataSize = 32, | 86 int32_t iTextDataSize = 32, |
86 bool bOnlyDeclaration = false); | 87 bool bOnlyDeclaration = false); |
87 bool Init(const FX_WCHAR* pBuffer, | 88 bool Init(const FX_WCHAR* pBuffer, |
88 int32_t iBufferSize, | 89 int32_t iBufferSize, |
89 int32_t iTextDatSize = 32, | 90 int32_t iTextDatSize = 32, |
90 bool bOnlyDeclaration = false); | 91 bool bOnlyDeclaration = false); |
91 FDE_CSSSYNTAXSTATUS DoSyntaxParse(); | 92 FDE_CSSSYNTAXSTATUS DoSyntaxParse(); |
92 const FX_WCHAR* GetCurrentString(int32_t& iLength) const; | 93 const FX_WCHAR* GetCurrentString(int32_t& iLength) const; |
93 | 94 |
94 protected: | 95 protected: |
95 void Reset(bool bOnlyDeclaration); | 96 void Reset(bool bOnlyDeclaration); |
96 void SwitchMode(FDE_CSSSYNTAXMODE eMode); | 97 void SwitchMode(FDE_CSSSYNTAXMODE eMode); |
97 int32_t SwitchToComment(); | 98 int32_t SwitchToComment(); |
98 | 99 |
99 bool RestoreMode(); | 100 bool RestoreMode(); |
100 bool AppendChar(FX_WCHAR wch); | 101 bool AppendChar(FX_WCHAR wch); |
101 int32_t SaveTextData(); | 102 int32_t SaveTextData(); |
102 bool IsCharsetEnabled() const { | 103 bool IsCharsetEnabled() const { |
103 return (m_dwCheck & FDE_CSSSYNTAXCHECK_AllowCharset) != 0; | 104 return (m_dwCheck & FDE_CSSSYNTAXCHECK_AllowCharset) != 0; |
104 } | 105 } |
105 void DisableCharset() { m_dwCheck = FDE_CSSSYNTAXCHECK_AllowImport; } | 106 void DisableCharset() { m_dwCheck = FDE_CSSSYNTAXCHECK_AllowImport; } |
106 bool IsImportEnabled() const; | 107 bool IsImportEnabled() const; |
107 void DisableImport() { m_dwCheck = 0; } | 108 void DisableImport() { m_dwCheck = 0; } |
108 | 109 |
109 IFGAS_Stream* m_pStream; | 110 CFX_RetainPtr<IFGAS_Stream> m_pStream; |
110 int32_t m_iStreamPos; | 111 int32_t m_iStreamPos; |
111 int32_t m_iPlaneSize; | 112 int32_t m_iPlaneSize; |
112 CFDE_CSSTextBuf m_TextData; | 113 CFDE_CSSTextBuf m_TextData; |
113 CFDE_CSSTextBuf m_TextPlane; | 114 CFDE_CSSTextBuf m_TextPlane; |
114 int32_t m_iTextDatLen; | 115 int32_t m_iTextDatLen; |
115 uint32_t m_dwCheck; | 116 uint32_t m_dwCheck; |
116 FDE_CSSSYNTAXMODE m_eMode; | 117 FDE_CSSSYNTAXMODE m_eMode; |
117 FDE_CSSSYNTAXSTATUS m_eStatus; | 118 FDE_CSSSYNTAXSTATUS m_eStatus; |
118 CFX_StackTemplate<FDE_CSSSYNTAXMODE> m_ModeStack; | 119 CFX_StackTemplate<FDE_CSSSYNTAXMODE> m_ModeStack; |
119 }; | 120 }; |
120 | 121 |
121 #endif // XFA_FDE_CSS_FDE_CSSSYNTAX_H_ | 122 #endif // XFA_FDE_CSS_FDE_CSSSYNTAX_H_ |
OLD | NEW |