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/include/fxfa/xfa_ffdoc.h" | 7 #include "xfa/include/fxfa/xfa_ffdoc.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" | 9 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |
10 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 10 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 return m_pPDFDoc; | 320 return m_pPDFDoc; |
321 } | 321 } |
322 | 322 |
323 CFX_DIBitmap* CXFA_FFDoc::GetPDFNamedImage(const CFX_WideStringC& wsName, | 323 CFX_DIBitmap* CXFA_FFDoc::GetPDFNamedImage(const CFX_WideStringC& wsName, |
324 int32_t& iImageXDpi, | 324 int32_t& iImageXDpi, |
325 int32_t& iImageYDpi) { | 325 int32_t& iImageYDpi) { |
326 if (!m_pPDFDoc) | 326 if (!m_pPDFDoc) |
327 return nullptr; | 327 return nullptr; |
328 | 328 |
329 uint32_t dwHash = | 329 uint32_t dwHash = |
330 FX_HashCode_String_GetW(wsName.GetPtr(), wsName.GetLength(), FALSE); | 330 FX_HashCode_String_GetW(wsName.raw_str(), wsName.GetLength(), FALSE); |
331 FX_IMAGEDIB_AND_DPI* imageDIBDpi = nullptr; | 331 FX_IMAGEDIB_AND_DPI* imageDIBDpi = nullptr; |
332 if (m_mapNamedImages.Lookup((void*)(uintptr_t)dwHash, (void*&)imageDIBDpi)) { | 332 if (m_mapNamedImages.Lookup((void*)(uintptr_t)dwHash, (void*&)imageDIBDpi)) { |
333 iImageXDpi = imageDIBDpi->iImageXDpi; | 333 iImageXDpi = imageDIBDpi->iImageXDpi; |
334 iImageYDpi = imageDIBDpi->iImageYDpi; | 334 iImageYDpi = imageDIBDpi->iImageYDpi; |
335 return static_cast<CFX_DIBitmap*>(imageDIBDpi->pDibSource); | 335 return static_cast<CFX_DIBitmap*>(imageDIBDpi->pDibSource); |
336 } | 336 } |
337 | 337 |
338 CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot(); | 338 CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot(); |
339 if (!pRoot) | 339 if (!pRoot) |
340 return nullptr; | 340 return nullptr; |
341 | 341 |
342 CPDF_Dictionary* pNames = pRoot->GetDictBy("Names"); | 342 CPDF_Dictionary* pNames = pRoot->GetDictBy("Names"); |
343 if (!pNames) | 343 if (!pNames) |
344 return nullptr; | 344 return nullptr; |
345 | 345 |
346 CPDF_Dictionary* pXFAImages = pNames->GetDictBy("XFAImages"); | 346 CPDF_Dictionary* pXFAImages = pNames->GetDictBy("XFAImages"); |
347 if (!pXFAImages) | 347 if (!pXFAImages) |
348 return nullptr; | 348 return nullptr; |
349 | 349 |
350 CPDF_NameTree nametree(pXFAImages); | 350 CPDF_NameTree nametree(pXFAImages); |
351 CFX_ByteString bsName = PDF_EncodeText(wsName.GetPtr(), wsName.GetLength()); | 351 CFX_ByteString bsName = PDF_EncodeText(wsName.raw_str(), wsName.GetLength()); |
352 CPDF_Object* pObject = nametree.LookupValue(bsName); | 352 CPDF_Object* pObject = nametree.LookupValue(bsName); |
353 if (!pObject) { | 353 if (!pObject) { |
354 int32_t iCount = nametree.GetCount(); | 354 int32_t iCount = nametree.GetCount(); |
355 for (int32_t i = 0; i < iCount; i++) { | 355 for (int32_t i = 0; i < iCount; i++) { |
356 CFX_ByteString bsTemp; | 356 CFX_ByteString bsTemp; |
357 CPDF_Object* pTempObject = nametree.LookupValue(i, bsTemp); | 357 CPDF_Object* pTempObject = nametree.LookupValue(i, bsTemp); |
358 if (bsTemp == bsName) { | 358 if (bsTemp == bsName) { |
359 pObject = pTempObject; | 359 pObject = pTempObject; |
360 break; | 360 break; |
361 } | 361 } |
(...skipping 17 matching lines...) Expand all Loading... |
379 imageDIBDpi->iImageXDpi = iImageXDpi; | 379 imageDIBDpi->iImageXDpi = iImageXDpi; |
380 imageDIBDpi->iImageYDpi = iImageYDpi; | 380 imageDIBDpi->iImageYDpi = iImageYDpi; |
381 pImageFileRead->Release(); | 381 pImageFileRead->Release(); |
382 } | 382 } |
383 m_mapNamedImages.SetAt((void*)(uintptr_t)dwHash, imageDIBDpi); | 383 m_mapNamedImages.SetAt((void*)(uintptr_t)dwHash, imageDIBDpi); |
384 return (CFX_DIBitmap*)imageDIBDpi->pDibSource; | 384 return (CFX_DIBitmap*)imageDIBDpi->pDibSource; |
385 } | 385 } |
386 | 386 |
387 CFDE_XMLElement* CXFA_FFDoc::GetPackageData(const CFX_WideStringC& wsPackage) { | 387 CFDE_XMLElement* CXFA_FFDoc::GetPackageData(const CFX_WideStringC& wsPackage) { |
388 uint32_t packetHash = | 388 uint32_t packetHash = |
389 FX_HashCode_String_GetW(wsPackage.GetPtr(), wsPackage.GetLength()); | 389 FX_HashCode_String_GetW(wsPackage.raw_str(), wsPackage.GetLength()); |
390 CXFA_Node* pNode = ToNode(m_pDocument->GetXFAObject(packetHash)); | 390 CXFA_Node* pNode = ToNode(m_pDocument->GetXFAObject(packetHash)); |
391 if (!pNode) { | 391 if (!pNode) { |
392 return NULL; | 392 return NULL; |
393 } | 393 } |
394 CFDE_XMLNode* pXMLNode = pNode->GetXMLMappingNode(); | 394 CFDE_XMLNode* pXMLNode = pNode->GetXMLMappingNode(); |
395 return (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) | 395 return (pXMLNode && pXMLNode->GetType() == FDE_XMLNODE_Element) |
396 ? static_cast<CFDE_XMLElement*>(pXMLNode) | 396 ? static_cast<CFDE_XMLElement*>(pXMLNode) |
397 : NULL; | 397 : NULL; |
398 } | 398 } |
399 FX_BOOL CXFA_FFDoc::SavePackage(const CFX_WideStringC& wsPackage, | 399 FX_BOOL CXFA_FFDoc::SavePackage(const CFX_WideStringC& wsPackage, |
400 IFX_FileWrite* pFile, | 400 IFX_FileWrite* pFile, |
401 CXFA_ChecksumContext* pCSContext) { | 401 CXFA_ChecksumContext* pCSContext) { |
402 CXFA_DataExporter* pExport = new CXFA_DataExporter(m_pDocument); | 402 CXFA_DataExporter* pExport = new CXFA_DataExporter(m_pDocument); |
403 uint32_t packetHash = | 403 uint32_t packetHash = |
404 FX_HashCode_String_GetW(wsPackage.GetPtr(), wsPackage.GetLength()); | 404 FX_HashCode_String_GetW(wsPackage.raw_str(), wsPackage.GetLength()); |
405 CXFA_Node* pNode = NULL; | 405 CXFA_Node* pNode = NULL; |
406 if (packetHash == XFA_HASHCODE_Xfa) { | 406 if (packetHash == XFA_HASHCODE_Xfa) { |
407 pNode = m_pDocument->GetRoot(); | 407 pNode = m_pDocument->GetRoot(); |
408 } else { | 408 } else { |
409 pNode = ToNode(m_pDocument->GetXFAObject(packetHash)); | 409 pNode = ToNode(m_pDocument->GetXFAObject(packetHash)); |
410 } | 410 } |
411 FX_BOOL bFlags = FALSE; | 411 FX_BOOL bFlags = FALSE; |
412 if (pNode) { | 412 if (pNode) { |
413 CFX_ByteString bsChecksum; | 413 CFX_ByteString bsChecksum; |
414 if (pCSContext) { | 414 if (pCSContext) { |
415 pCSContext->GetChecksum(bsChecksum); | 415 pCSContext->GetChecksum(bsChecksum); |
416 } | 416 } |
417 bFlags = pExport->Export(pFile, pNode, 0, bsChecksum.GetLength() | 417 bFlags = pExport->Export(pFile, pNode, 0, bsChecksum.GetLength() |
418 ? (const FX_CHAR*)bsChecksum | 418 ? (const FX_CHAR*)bsChecksum |
419 : NULL); | 419 : NULL); |
420 } else { | 420 } else { |
421 bFlags = pExport->Export(pFile); | 421 bFlags = pExport->Export(pFile); |
422 } | 422 } |
423 pExport->Release(); | 423 pExport->Release(); |
424 return bFlags; | 424 return bFlags; |
425 } | 425 } |
426 FX_BOOL CXFA_FFDoc::ImportData(IFX_FileRead* pStream, FX_BOOL bXDP) { | 426 FX_BOOL CXFA_FFDoc::ImportData(IFX_FileRead* pStream, FX_BOOL bXDP) { |
427 std::unique_ptr<CXFA_DataImporter, ReleaseDeleter<CXFA_DataImporter>> | 427 std::unique_ptr<CXFA_DataImporter, ReleaseDeleter<CXFA_DataImporter>> |
428 importer(new CXFA_DataImporter(m_pDocument)); | 428 importer(new CXFA_DataImporter(m_pDocument)); |
429 | 429 |
430 return importer->ImportData(pStream); | 430 return importer->ImportData(pStream); |
431 } | 431 } |
OLD | NEW |