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 #include "xfa/fde/xml/fde_xml_imp.h" | 7 #include "xfa/fde/xml/fde_xml_imp.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 default: | 387 default: |
388 break; | 388 break; |
389 } | 389 } |
390 return pNode; | 390 return pNode; |
391 } | 391 } |
392 | 392 |
393 CFDE_XMLNode* CFDE_XMLNode::Clone(bool bRecursive) { | 393 CFDE_XMLNode* CFDE_XMLNode::Clone(bool bRecursive) { |
394 return nullptr; | 394 return nullptr; |
395 } | 395 } |
396 | 396 |
397 void CFDE_XMLNode::SaveXMLNode(IFX_Stream* pXMLStream) { | 397 void CFDE_XMLNode::SaveXMLNode(IFGAS_Stream* pXMLStream) { |
398 CFDE_XMLNode* pNode = (CFDE_XMLNode*)this; | 398 CFDE_XMLNode* pNode = (CFDE_XMLNode*)this; |
399 switch (pNode->GetType()) { | 399 switch (pNode->GetType()) { |
400 case FDE_XMLNODE_Instruction: { | 400 case FDE_XMLNODE_Instruction: { |
401 CFX_WideString ws; | 401 CFX_WideString ws; |
402 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; | 402 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; |
403 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { | 403 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { |
404 ws = L"<?xml version=\"1.0\" encoding=\""; | 404 ws = L"<?xml version=\"1.0\" encoding=\""; |
405 uint16_t wCodePage = pXMLStream->GetCodePage(); | 405 uint16_t wCodePage = pXMLStream->GetCodePage(); |
406 if (wCodePage == FX_CODEPAGE_UTF16LE) { | 406 if (wCodePage == FX_CODEPAGE_UTF16LE) { |
407 ws += L"UTF-16"; | 407 ws += L"UTF-16"; |
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 int32_t CFDE_XMLDoc::DoLoad(IFX_Pause* pPause) { | 979 int32_t CFDE_XMLDoc::DoLoad(IFX_Pause* pPause) { |
980 if (m_iStatus >= 100) | 980 if (m_iStatus >= 100) |
981 return m_iStatus; | 981 return m_iStatus; |
982 return m_iStatus = m_pXMLParser->DoParser(pPause); | 982 return m_iStatus = m_pXMLParser->DoParser(pPause); |
983 } | 983 } |
984 | 984 |
985 void CFDE_XMLDoc::CloseXML() { | 985 void CFDE_XMLDoc::CloseXML() { |
986 ReleaseParser(); | 986 ReleaseParser(); |
987 } | 987 } |
988 | 988 |
989 void CFDE_XMLDoc::SaveXMLNode(IFX_Stream* pXMLStream, CFDE_XMLNode* pINode) { | 989 void CFDE_XMLDoc::SaveXMLNode(IFGAS_Stream* pXMLStream, CFDE_XMLNode* pINode) { |
990 CFDE_XMLNode* pNode = (CFDE_XMLNode*)pINode; | 990 CFDE_XMLNode* pNode = (CFDE_XMLNode*)pINode; |
991 switch (pNode->GetType()) { | 991 switch (pNode->GetType()) { |
992 case FDE_XMLNODE_Instruction: { | 992 case FDE_XMLNODE_Instruction: { |
993 CFX_WideString ws; | 993 CFX_WideString ws; |
994 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; | 994 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; |
995 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { | 995 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { |
996 ws = L"<?xml version=\"1.0\" encoding=\""; | 996 ws = L"<?xml version=\"1.0\" encoding=\""; |
997 uint16_t wCodePage = pXMLStream->GetCodePage(); | 997 uint16_t wCodePage = pXMLStream->GetCodePage(); |
998 if (wCodePage == FX_CODEPAGE_UTF16LE) { | 998 if (wCodePage == FX_CODEPAGE_UTF16LE) { |
999 ws += L"UTF-16"; | 999 ws += L"UTF-16"; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1089 ws += L"]]>"; | 1089 ws += L"]]>"; |
1090 pXMLStream->WriteString(ws.c_str(), ws.GetLength()); | 1090 pXMLStream->WriteString(ws.c_str(), ws.GetLength()); |
1091 } break; | 1091 } break; |
1092 case FDE_XMLNODE_Unknown: | 1092 case FDE_XMLNODE_Unknown: |
1093 break; | 1093 break; |
1094 default: | 1094 default: |
1095 break; | 1095 break; |
1096 } | 1096 } |
1097 } | 1097 } |
1098 | 1098 |
1099 void CFDE_XMLDoc::SaveXML(IFX_Stream* pXMLStream, bool bSaveBOM) { | 1099 void CFDE_XMLDoc::SaveXML(IFGAS_Stream* pXMLStream, bool bSaveBOM) { |
1100 if (!pXMLStream || pXMLStream == m_pStream) { | 1100 if (!pXMLStream || pXMLStream == m_pStream) { |
1101 m_pStream->Seek(FX_STREAMSEEK_Begin, 0); | 1101 m_pStream->Seek(FX_STREAMSEEK_Begin, 0); |
1102 pXMLStream = m_pStream; | 1102 pXMLStream = m_pStream; |
1103 } | 1103 } |
1104 ASSERT((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Text) != 0); | 1104 ASSERT((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Text) != 0); |
1105 ASSERT((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Write) != 0); | 1105 ASSERT((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Write) != 0); |
1106 uint16_t wCodePage = pXMLStream->GetCodePage(); | 1106 uint16_t wCodePage = pXMLStream->GetCodePage(); |
1107 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && | 1107 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && |
1108 wCodePage != FX_CODEPAGE_UTF8) { | 1108 wCodePage != FX_CODEPAGE_UTF8) { |
1109 wCodePage = FX_CODEPAGE_UTF8; | 1109 wCodePage = FX_CODEPAGE_UTF8; |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1281 m_iTextDataLength(0), | 1281 m_iTextDataLength(0), |
1282 m_syntaxParserResult(FDE_XmlSyntaxResult::None), | 1282 m_syntaxParserResult(FDE_XmlSyntaxResult::None), |
1283 m_syntaxParserState(FDE_XmlSyntaxState::Text), | 1283 m_syntaxParserState(FDE_XmlSyntaxState::Text), |
1284 m_wQuotationMark(0), | 1284 m_wQuotationMark(0), |
1285 m_iEntityStart(-1), | 1285 m_iEntityStart(-1), |
1286 m_SkipStack(16) { | 1286 m_SkipStack(16) { |
1287 m_CurNode.iNodeNum = -1; | 1287 m_CurNode.iNodeNum = -1; |
1288 m_CurNode.eNodeType = FDE_XMLNODE_Unknown; | 1288 m_CurNode.eNodeType = FDE_XMLNODE_Unknown; |
1289 } | 1289 } |
1290 | 1290 |
1291 void CFDE_XMLSyntaxParser::Init(IFX_Stream* pStream, | 1291 void CFDE_XMLSyntaxParser::Init(IFGAS_Stream* pStream, |
1292 int32_t iXMLPlaneSize, | 1292 int32_t iXMLPlaneSize, |
1293 int32_t iTextDataSize) { | 1293 int32_t iTextDataSize) { |
1294 ASSERT(!m_pStream && !m_pBuffer); | 1294 ASSERT(!m_pStream && !m_pBuffer); |
1295 ASSERT(pStream && iXMLPlaneSize > 0); | 1295 ASSERT(pStream && iXMLPlaneSize > 0); |
1296 int32_t iStreamLength = pStream->GetLength(); | 1296 int32_t iStreamLength = pStream->GetLength(); |
1297 ASSERT(iStreamLength > 0); | 1297 ASSERT(iStreamLength > 0); |
1298 m_pStream = pStream; | 1298 m_pStream = pStream; |
1299 m_iXMLPlaneSize = std::min(iXMLPlaneSize, iStreamLength); | 1299 m_iXMLPlaneSize = std::min(iXMLPlaneSize, iStreamLength); |
1300 uint8_t bom[4]; | 1300 uint8_t bom[4]; |
1301 m_iCurrentPos = m_pStream->GetBOM(bom); | 1301 m_iCurrentPos = m_pStream->GetBOM(bom); |
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1908 m_BlockBuffer.DeleteTextChars(m_iDataLength - m_iEntityStart, false); | 1908 m_BlockBuffer.DeleteTextChars(m_iDataLength - m_iEntityStart, false); |
1909 m_pCurrentBlock = m_BlockBuffer.GetAvailableBlock(m_iIndexInBlock); | 1909 m_pCurrentBlock = m_BlockBuffer.GetAvailableBlock(m_iIndexInBlock); |
1910 m_iEntityStart = -1; | 1910 m_iEntityStart = -1; |
1911 } else { | 1911 } else { |
1912 if (m_iEntityStart < 0 && character == L'&') { | 1912 if (m_iEntityStart < 0 && character == L'&') { |
1913 m_iEntityStart = m_iDataLength - 1; | 1913 m_iEntityStart = m_iDataLength - 1; |
1914 } | 1914 } |
1915 } | 1915 } |
1916 m_pStart++; | 1916 m_pStart++; |
1917 } | 1917 } |
OLD | NEW |