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_FXFA_PARSER_XFA_UTILS_H_ | 7 #ifndef XFA_FXFA_PARSER_XFA_UTILS_H_ |
8 #define XFA_FXFA_PARSER_XFA_UTILS_H_ | 8 #define XFA_FXFA_PARSER_XFA_UTILS_H_ |
9 | 9 |
10 #include "xfa/fde/xml/fde_xml.h" | 10 #include "xfa/fde/xml/fde_xml.h" |
11 #include "xfa/fgas/crt/fgas_stream.h" | 11 #include "xfa/fgas/crt/fgas_stream.h" |
12 #include "xfa/fgas/crt/fgas_utils.h" | 12 #include "xfa/fgas/crt/fgas_utils.h" |
13 #include "xfa/fxfa/fxfa_basic.h" | 13 #include "xfa/fxfa/fxfa_basic.h" |
14 | 14 |
15 class CFDE_XMLElement; | 15 class CFDE_XMLElement; |
16 class CFDE_XMLNode; | 16 class CFDE_XMLNode; |
17 class CXFA_LocaleValue; | 17 class CXFA_LocaleValue; |
18 class CXFA_Node; | 18 class CXFA_Node; |
19 class CXFA_WidgetData; | 19 class CXFA_WidgetData; |
20 | 20 |
21 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier( | 21 bool XFA_FDEExtension_ResolveNamespaceQualifier( |
22 CFDE_XMLElement* pNode, | 22 CFDE_XMLElement* pNode, |
23 const CFX_WideStringC& wsQualifier, | 23 const CFX_WideStringC& wsQualifier, |
24 CFX_WideString& wsNamespaceURI); | 24 CFX_WideString& wsNamespaceURI); |
25 | 25 |
26 template <class NodeType, class TraverseStrategy> | 26 template <class NodeType, class TraverseStrategy> |
27 class CXFA_NodeIteratorTemplate { | 27 class CXFA_NodeIteratorTemplate { |
28 public: | 28 public: |
29 CXFA_NodeIteratorTemplate(NodeType* pRootNode = nullptr) | 29 CXFA_NodeIteratorTemplate(NodeType* pRootNode = nullptr) |
30 : m_pRoot(pRootNode), m_NodeStack(100) { | 30 : m_pRoot(pRootNode), m_NodeStack(100) { |
31 if (pRootNode) { | 31 if (pRootNode) { |
32 m_NodeStack.Push(pRootNode); | 32 m_NodeStack.Push(pRootNode); |
33 } | 33 } |
34 } | 34 } |
35 FX_BOOL Init(NodeType* pRootNode) { | 35 bool Init(NodeType* pRootNode) { |
36 if (!pRootNode) { | 36 if (!pRootNode) { |
37 return FALSE; | 37 return false; |
38 } | 38 } |
39 m_pRoot = pRootNode; | 39 m_pRoot = pRootNode; |
40 m_NodeStack.RemoveAll(FALSE); | 40 m_NodeStack.RemoveAll(false); |
41 m_NodeStack.Push(pRootNode); | 41 m_NodeStack.Push(pRootNode); |
42 return TRUE; | 42 return true; |
43 } | 43 } |
44 void Clear() { m_NodeStack.RemoveAll(FALSE); } | 44 void Clear() { m_NodeStack.RemoveAll(false); } |
45 void Reset() { | 45 void Reset() { |
46 Clear(); | 46 Clear(); |
47 if (m_pRoot) { | 47 if (m_pRoot) { |
48 m_NodeStack.Push(m_pRoot); | 48 m_NodeStack.Push(m_pRoot); |
49 } | 49 } |
50 } | 50 } |
51 FX_BOOL SetCurrent(NodeType* pCurNode) { | 51 bool SetCurrent(NodeType* pCurNode) { |
52 m_NodeStack.RemoveAll(FALSE); | 52 m_NodeStack.RemoveAll(false); |
53 if (pCurNode) { | 53 if (pCurNode) { |
54 CFX_StackTemplate<NodeType*> revStack(100); | 54 CFX_StackTemplate<NodeType*> revStack(100); |
55 NodeType* pNode; | 55 NodeType* pNode; |
56 for (pNode = pCurNode; pNode && pNode != m_pRoot; | 56 for (pNode = pCurNode; pNode && pNode != m_pRoot; |
57 pNode = TraverseStrategy::GetParent(pNode)) { | 57 pNode = TraverseStrategy::GetParent(pNode)) { |
58 revStack.Push(pNode); | 58 revStack.Push(pNode); |
59 } | 59 } |
60 if (!pNode) { | 60 if (!pNode) { |
61 return FALSE; | 61 return false; |
62 } | 62 } |
63 revStack.Push(m_pRoot); | 63 revStack.Push(m_pRoot); |
64 while (revStack.GetSize()) { | 64 while (revStack.GetSize()) { |
65 m_NodeStack.Push(*revStack.GetTopElement()); | 65 m_NodeStack.Push(*revStack.GetTopElement()); |
66 revStack.Pop(); | 66 revStack.Pop(); |
67 } | 67 } |
68 } | 68 } |
69 return TRUE; | 69 return true; |
70 } | 70 } |
71 NodeType* GetCurrent() const { | 71 NodeType* GetCurrent() const { |
72 return m_NodeStack.GetSize() ? *m_NodeStack.GetTopElement() : nullptr; | 72 return m_NodeStack.GetSize() ? *m_NodeStack.GetTopElement() : nullptr; |
73 } | 73 } |
74 NodeType* GetRoot() const { return m_pRoot; } | 74 NodeType* GetRoot() const { return m_pRoot; } |
75 NodeType* MoveToPrev() { | 75 NodeType* MoveToPrev() { |
76 int32_t nStackLength = m_NodeStack.GetSize(); | 76 int32_t nStackLength = m_NodeStack.GetSize(); |
77 if (nStackLength == 1) { | 77 if (nStackLength == 1) { |
78 return nullptr; | 78 return nullptr; |
79 } else if (nStackLength > 1) { | 79 } else if (nStackLength > 1) { |
80 NodeType* pCurItem = *m_NodeStack.GetTopElement(); | 80 NodeType* pCurItem = *m_NodeStack.GetTopElement(); |
81 m_NodeStack.Pop(); | 81 m_NodeStack.Pop(); |
82 NodeType* pParentItem = *m_NodeStack.GetTopElement(); | 82 NodeType* pParentItem = *m_NodeStack.GetTopElement(); |
83 NodeType* pParentFirstChildItem = | 83 NodeType* pParentFirstChildItem = |
84 TraverseStrategy::GetFirstChild(pParentItem); | 84 TraverseStrategy::GetFirstChild(pParentItem); |
85 if (pCurItem == pParentFirstChildItem) { | 85 if (pCurItem == pParentFirstChildItem) { |
86 return pParentItem; | 86 return pParentItem; |
87 } | 87 } |
88 NodeType *pPrevItem = pParentFirstChildItem, *pPrevItemNext = nullptr; | 88 NodeType *pPrevItem = pParentFirstChildItem, *pPrevItemNext = nullptr; |
89 for (; pPrevItem; pPrevItem = pPrevItemNext) { | 89 for (; pPrevItem; pPrevItem = pPrevItemNext) { |
90 pPrevItemNext = TraverseStrategy::GetNextSibling(pPrevItem); | 90 pPrevItemNext = TraverseStrategy::GetNextSibling(pPrevItem); |
91 if (!pPrevItemNext || pPrevItemNext == pCurItem) { | 91 if (!pPrevItemNext || pPrevItemNext == pCurItem) { |
92 break; | 92 break; |
93 } | 93 } |
94 } | 94 } |
95 m_NodeStack.Push(pPrevItem); | 95 m_NodeStack.Push(pPrevItem); |
96 } else { | 96 } else { |
97 m_NodeStack.RemoveAll(FALSE); | 97 m_NodeStack.RemoveAll(false); |
98 if (m_pRoot) { | 98 if (m_pRoot) { |
99 m_NodeStack.Push(m_pRoot); | 99 m_NodeStack.Push(m_pRoot); |
100 } | 100 } |
101 } | 101 } |
102 if (m_NodeStack.GetSize() > 0) { | 102 if (m_NodeStack.GetSize() > 0) { |
103 NodeType* pChildItem = *m_NodeStack.GetTopElement(); | 103 NodeType* pChildItem = *m_NodeStack.GetTopElement(); |
104 while ((pChildItem = TraverseStrategy::GetFirstChild(pChildItem)) != | 104 while ((pChildItem = TraverseStrategy::GetFirstChild(pChildItem)) != |
105 nullptr) { | 105 nullptr) { |
106 while (NodeType* pNextItem = | 106 while (NodeType* pNextItem = |
107 TraverseStrategy::GetNextSibling(pChildItem)) { | 107 TraverseStrategy::GetNextSibling(pChildItem)) { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 | 159 |
160 protected: | 160 protected: |
161 NodeType* m_pRoot; | 161 NodeType* m_pRoot; |
162 CFX_StackTemplate<NodeType*> m_NodeStack; | 162 CFX_StackTemplate<NodeType*> m_NodeStack; |
163 }; | 163 }; |
164 | 164 |
165 CXFA_LocaleValue XFA_GetLocaleValue(CXFA_WidgetData* pWidgetData); | 165 CXFA_LocaleValue XFA_GetLocaleValue(CXFA_WidgetData* pWidgetData); |
166 FX_DOUBLE XFA_ByteStringToDouble(const CFX_ByteStringC& szStringVal); | 166 FX_DOUBLE XFA_ByteStringToDouble(const CFX_ByteStringC& szStringVal); |
167 int32_t XFA_MapRotation(int32_t nRotation); | 167 int32_t XFA_MapRotation(int32_t nRotation); |
168 | 168 |
169 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode); | 169 bool XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode); |
170 void XFA_GetPlainTextFromRichText(CFDE_XMLNode* pXMLNode, | 170 void XFA_GetPlainTextFromRichText(CFDE_XMLNode* pXMLNode, |
171 CFX_WideString& wsPlainText); | 171 CFX_WideString& wsPlainText); |
172 FX_BOOL XFA_FieldIsMultiListBox(CXFA_Node* pFieldNode); | 172 bool XFA_FieldIsMultiListBox(CXFA_Node* pFieldNode); |
173 | 173 |
174 void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode); | 174 void XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode); |
175 void XFA_DataExporter_RegenerateFormFile(CXFA_Node* pNode, | 175 void XFA_DataExporter_RegenerateFormFile(CXFA_Node* pNode, |
176 IFX_Stream* pStream, | 176 IFX_Stream* pStream, |
177 const FX_CHAR* pChecksum = nullptr, | 177 const FX_CHAR* pChecksum = nullptr, |
178 FX_BOOL bSaveXML = FALSE); | 178 bool bSaveXML = false); |
179 | 179 |
180 const XFA_NOTSUREATTRIBUTE* XFA_GetNotsureAttribute( | 180 const XFA_NOTSUREATTRIBUTE* XFA_GetNotsureAttribute( |
181 XFA_Element eElement, | 181 XFA_Element eElement, |
182 XFA_ATTRIBUTE eAttribute, | 182 XFA_ATTRIBUTE eAttribute, |
183 XFA_ATTRIBUTETYPE eType = XFA_ATTRIBUTETYPE_NOTSURE); | 183 XFA_ATTRIBUTETYPE eType = XFA_ATTRIBUTETYPE_NOTSURE); |
184 | 184 |
185 const XFA_SCRIPTATTRIBUTEINFO* XFA_GetScriptAttributeByName( | 185 const XFA_SCRIPTATTRIBUTEINFO* XFA_GetScriptAttributeByName( |
186 XFA_Element eElement, | 186 XFA_Element eElement, |
187 const CFX_WideStringC& wsAttributeName); | 187 const CFX_WideStringC& wsAttributeName); |
188 | 188 |
189 const XFA_PROPERTY* XFA_GetPropertyOfElement(XFA_Element eElement, | 189 const XFA_PROPERTY* XFA_GetPropertyOfElement(XFA_Element eElement, |
190 XFA_Element eProperty, | 190 XFA_Element eProperty, |
191 uint32_t dwPacket); | 191 uint32_t dwPacket); |
192 const XFA_PROPERTY* XFA_GetElementProperties(XFA_Element eElement, | 192 const XFA_PROPERTY* XFA_GetElementProperties(XFA_Element eElement, |
193 int32_t& iCount); | 193 int32_t& iCount); |
194 const uint8_t* XFA_GetElementAttributes(XFA_Element eElement, int32_t& iCount); | 194 const uint8_t* XFA_GetElementAttributes(XFA_Element eElement, int32_t& iCount); |
195 const XFA_ELEMENTINFO* XFA_GetElementByID(XFA_Element eName); | 195 const XFA_ELEMENTINFO* XFA_GetElementByID(XFA_Element eName); |
196 XFA_Element XFA_GetElementTypeForName(const CFX_WideStringC& wsName); | 196 XFA_Element XFA_GetElementTypeForName(const CFX_WideStringC& wsName); |
197 CXFA_Measurement XFA_GetAttributeDefaultValue_Measure(XFA_Element eElement, | 197 CXFA_Measurement XFA_GetAttributeDefaultValue_Measure(XFA_Element eElement, |
198 XFA_ATTRIBUTE eAttribute, | 198 XFA_ATTRIBUTE eAttribute, |
199 uint32_t dwPacket); | 199 uint32_t dwPacket); |
200 FX_BOOL XFA_GetAttributeDefaultValue(void*& pValue, | 200 bool XFA_GetAttributeDefaultValue(void*& pValue, |
201 XFA_Element eElement, | 201 XFA_Element eElement, |
202 XFA_ATTRIBUTE eAttribute, | 202 XFA_ATTRIBUTE eAttribute, |
203 XFA_ATTRIBUTETYPE eType, | 203 XFA_ATTRIBUTETYPE eType, |
204 uint32_t dwPacket); | 204 uint32_t dwPacket); |
205 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const CFX_WideStringC& wsName); | 205 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByName(const CFX_WideStringC& wsName); |
206 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_ATTRIBUTE eName); | 206 const XFA_ATTRIBUTEINFO* XFA_GetAttributeByID(XFA_ATTRIBUTE eName); |
207 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByName( | 207 const XFA_ATTRIBUTEENUMINFO* XFA_GetAttributeEnumByName( |
208 const CFX_WideStringC& wsName); | 208 const CFX_WideStringC& wsName); |
209 const XFA_PACKETINFO* XFA_GetPacketByIndex(XFA_PACKET ePacket); | 209 const XFA_PACKETINFO* XFA_GetPacketByIndex(XFA_PACKET ePacket); |
210 const XFA_PACKETINFO* XFA_GetPacketByID(uint32_t dwPacket); | 210 const XFA_PACKETINFO* XFA_GetPacketByID(uint32_t dwPacket); |
211 | 211 |
212 #endif // XFA_FXFA_PARSER_XFA_UTILS_H_ | 212 #endif // XFA_FXFA_PARSER_XFA_UTILS_H_ |
OLD | NEW |