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 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 } | 381 } |
382 void CFDE_XMLNode::SaveXMLNode(IFX_Stream* pXMLStream) { | 382 void CFDE_XMLNode::SaveXMLNode(IFX_Stream* pXMLStream) { |
383 CFDE_XMLNode* pNode = (CFDE_XMLNode*)this; | 383 CFDE_XMLNode* pNode = (CFDE_XMLNode*)this; |
384 FXSYS_assert(pXMLStream != NULL && pNode != NULL); | 384 FXSYS_assert(pXMLStream != NULL && pNode != NULL); |
385 switch (pNode->GetType()) { | 385 switch (pNode->GetType()) { |
386 case FDE_XMLNODE_Instruction: { | 386 case FDE_XMLNODE_Instruction: { |
387 CFX_WideString ws; | 387 CFX_WideString ws; |
388 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; | 388 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; |
389 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { | 389 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { |
390 ws = L"<?xml version=\"1.0\" encoding=\""; | 390 ws = L"<?xml version=\"1.0\" encoding=\""; |
391 FX_WORD wCodePage = pXMLStream->GetCodePage(); | 391 uint16_t wCodePage = pXMLStream->GetCodePage(); |
392 if (wCodePage == FX_CODEPAGE_UTF16LE) { | 392 if (wCodePage == FX_CODEPAGE_UTF16LE) { |
393 ws += L"UTF-16"; | 393 ws += L"UTF-16"; |
394 } else if (wCodePage == FX_CODEPAGE_UTF16BE) { | 394 } else if (wCodePage == FX_CODEPAGE_UTF16BE) { |
395 ws += L"UTF-16be"; | 395 ws += L"UTF-16be"; |
396 } else { | 396 } else { |
397 ws += L"UTF-8"; | 397 ws += L"UTF-8"; |
398 } | 398 } |
399 ws += L"\"?>"; | 399 ws += L"\"?>"; |
400 pXMLStream->WriteString(ws, ws.GetLength()); | 400 pXMLStream->WriteString(ws, ws.GetLength()); |
401 } else { | 401 } else { |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 } | 907 } |
908 iTextDataSize = iTextDataSize / 128; | 908 iTextDataSize = iTextDataSize / 128; |
909 if (iTextDataSize < 1) { | 909 if (iTextDataSize < 1) { |
910 iTextDataSize = 1; | 910 iTextDataSize = 1; |
911 } | 911 } |
912 iTextDataSize *= 128; | 912 iTextDataSize *= 128; |
913 if (iTextDataSize < 128) { | 913 if (iTextDataSize < 128) { |
914 iTextDataSize = 128; | 914 iTextDataSize = 128; |
915 } | 915 } |
916 m_pStream = pXMLStream; | 916 m_pStream = pXMLStream; |
917 FX_WORD wCodePage = m_pStream->GetCodePage(); | 917 uint16_t wCodePage = m_pStream->GetCodePage(); |
918 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && | 918 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && |
919 wCodePage != FX_CODEPAGE_UTF8) { | 919 wCodePage != FX_CODEPAGE_UTF8) { |
920 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); | 920 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); |
921 } | 921 } |
922 m_pSyntaxParser = IFDE_XMLSyntaxParser::Create(); | 922 m_pSyntaxParser = IFDE_XMLSyntaxParser::Create(); |
923 if (m_pSyntaxParser == NULL) { | 923 if (m_pSyntaxParser == NULL) { |
924 return FALSE; | 924 return FALSE; |
925 } | 925 } |
926 m_pSyntaxParser->Init(m_pStream, iXMLPlaneSize, iTextDataSize); | 926 m_pSyntaxParser->Init(m_pStream, iXMLPlaneSize, iTextDataSize); |
927 if (pHandler == NULL) { | 927 if (pHandler == NULL) { |
(...skipping 23 matching lines...) Expand all Loading... |
951 } | 951 } |
952 void CFDE_XMLDoc::SaveXMLNode(IFX_Stream* pXMLStream, IFDE_XMLNode* pINode) { | 952 void CFDE_XMLDoc::SaveXMLNode(IFX_Stream* pXMLStream, IFDE_XMLNode* pINode) { |
953 CFDE_XMLNode* pNode = (CFDE_XMLNode*)pINode; | 953 CFDE_XMLNode* pNode = (CFDE_XMLNode*)pINode; |
954 FXSYS_assert(pXMLStream != NULL && pNode != NULL); | 954 FXSYS_assert(pXMLStream != NULL && pNode != NULL); |
955 switch (pNode->GetType()) { | 955 switch (pNode->GetType()) { |
956 case FDE_XMLNODE_Instruction: { | 956 case FDE_XMLNODE_Instruction: { |
957 CFX_WideString ws; | 957 CFX_WideString ws; |
958 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; | 958 CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode; |
959 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { | 959 if (pInstruction->m_wsTarget.CompareNoCase(L"xml") == 0) { |
960 ws = L"<?xml version=\"1.0\" encoding=\""; | 960 ws = L"<?xml version=\"1.0\" encoding=\""; |
961 FX_WORD wCodePage = pXMLStream->GetCodePage(); | 961 uint16_t wCodePage = pXMLStream->GetCodePage(); |
962 if (wCodePage == FX_CODEPAGE_UTF16LE) { | 962 if (wCodePage == FX_CODEPAGE_UTF16LE) { |
963 ws += L"UTF-16"; | 963 ws += L"UTF-16"; |
964 } else if (wCodePage == FX_CODEPAGE_UTF16BE) { | 964 } else if (wCodePage == FX_CODEPAGE_UTF16BE) { |
965 ws += L"UTF-16be"; | 965 ws += L"UTF-16be"; |
966 } else { | 966 } else { |
967 ws += L"UTF-8"; | 967 ws += L"UTF-8"; |
968 } | 968 } |
969 ws += L"\"?>"; | 969 ws += L"\"?>"; |
970 pXMLStream->WriteString(ws, ws.GetLength()); | 970 pXMLStream->WriteString(ws, ws.GetLength()); |
971 } else { | 971 } else { |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1060 break; | 1060 break; |
1061 } | 1061 } |
1062 } | 1062 } |
1063 void CFDE_XMLDoc::SaveXML(IFX_Stream* pXMLStream, FX_BOOL bSaveBOM) { | 1063 void CFDE_XMLDoc::SaveXML(IFX_Stream* pXMLStream, FX_BOOL bSaveBOM) { |
1064 if (pXMLStream == NULL || pXMLStream == m_pStream) { | 1064 if (pXMLStream == NULL || pXMLStream == m_pStream) { |
1065 m_pStream->Seek(FX_STREAMSEEK_Begin, 0); | 1065 m_pStream->Seek(FX_STREAMSEEK_Begin, 0); |
1066 pXMLStream = m_pStream; | 1066 pXMLStream = m_pStream; |
1067 } | 1067 } |
1068 FXSYS_assert((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Text) != 0); | 1068 FXSYS_assert((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Text) != 0); |
1069 FXSYS_assert((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Write) != 0); | 1069 FXSYS_assert((pXMLStream->GetAccessModes() & FX_STREAMACCESS_Write) != 0); |
1070 FX_WORD wCodePage = pXMLStream->GetCodePage(); | 1070 uint16_t wCodePage = pXMLStream->GetCodePage(); |
1071 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && | 1071 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && |
1072 wCodePage != FX_CODEPAGE_UTF8) { | 1072 wCodePage != FX_CODEPAGE_UTF8) { |
1073 wCodePage = FX_CODEPAGE_UTF8; | 1073 wCodePage = FX_CODEPAGE_UTF8; |
1074 pXMLStream->SetCodePage(wCodePage); | 1074 pXMLStream->SetCodePage(wCodePage); |
1075 } | 1075 } |
1076 if (bSaveBOM) { | 1076 if (bSaveBOM) { |
1077 pXMLStream->WriteString(L"\xFEFF", 1); | 1077 pXMLStream->WriteString(L"\xFEFF", 1); |
1078 } | 1078 } |
1079 CFDE_XMLNode* pNode = m_pRoot->m_pChild; | 1079 CFDE_XMLNode* pNode = m_pRoot->m_pChild; |
1080 while (pNode != NULL) { | 1080 while (pNode != NULL) { |
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2090 m_BlockBuffer.DeleteTextChars(m_iDataLength - m_iEntityStart, FALSE); | 2090 m_BlockBuffer.DeleteTextChars(m_iDataLength - m_iEntityStart, FALSE); |
2091 m_pCurrentBlock = m_BlockBuffer.GetAvailableBlock(m_iIndexInBlock); | 2091 m_pCurrentBlock = m_BlockBuffer.GetAvailableBlock(m_iIndexInBlock); |
2092 m_iEntityStart = -1; | 2092 m_iEntityStart = -1; |
2093 } else { | 2093 } else { |
2094 if (m_iEntityStart < 0 && ch == L'&') { | 2094 if (m_iEntityStart < 0 && ch == L'&') { |
2095 m_iEntityStart = m_iDataLength - 1; | 2095 m_iEntityStart = m_iDataLength - 1; |
2096 } | 2096 } |
2097 } | 2097 } |
2098 m_pStart++; | 2098 m_pStart++; |
2099 } | 2099 } |
OLD | NEW |