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 "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 7 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <set> | 10 #include <set> |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 m_dwFirstPageObjNum(0), | 492 m_dwFirstPageObjNum(0), |
493 m_pDocPage(new CPDF_DocPageData(this)), | 493 m_pDocPage(new CPDF_DocPageData(this)), |
494 m_pDocRender(new CPDF_DocRenderData(this)) {} | 494 m_pDocRender(new CPDF_DocRenderData(this)) {} |
495 | 495 |
496 CPDF_Document::~CPDF_Document() { | 496 CPDF_Document::~CPDF_Document() { |
497 delete m_pDocPage; | 497 delete m_pDocPage; |
498 CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this); | 498 CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this); |
499 } | 499 } |
500 | 500 |
501 void CPDF_Document::LoadDocInternal() { | 501 void CPDF_Document::LoadDocInternal() { |
502 m_LastObjNum = m_pParser->GetLastObjNum(); | 502 SetLastObjNum(m_pParser->GetLastObjNum()); |
503 | 503 |
504 CPDF_Object* pRootObj = GetIndirectObject(m_pParser->GetRootObjNum()); | 504 CPDF_Object* pRootObj = GetOrParseIndirectObject(m_pParser->GetRootObjNum()); |
505 if (!pRootObj) | 505 if (!pRootObj) |
506 return; | 506 return; |
507 | 507 |
508 m_pRootDict = pRootObj->GetDict(); | 508 m_pRootDict = pRootObj->GetDict(); |
509 if (!m_pRootDict) | 509 if (!m_pRootDict) |
510 return; | 510 return; |
511 | 511 |
512 CPDF_Object* pInfoObj = GetIndirectObject(m_pParser->GetInfoObjNum()); | 512 CPDF_Object* pInfoObj = GetOrParseIndirectObject(m_pParser->GetInfoObjNum()); |
513 if (pInfoObj) | 513 if (pInfoObj) |
514 m_pInfoDict = pInfoObj->GetDict(); | 514 m_pInfoDict = pInfoObj->GetDict(); |
515 if (CPDF_Array* pIDArray = m_pParser->GetIDArray()) { | 515 if (CPDF_Array* pIDArray = m_pParser->GetIDArray()) { |
516 m_ID1 = pIDArray->GetStringAt(0); | 516 m_ID1 = pIDArray->GetStringAt(0); |
517 m_ID2 = pIDArray->GetStringAt(1); | 517 m_ID2 = pIDArray->GetStringAt(1); |
518 } | 518 } |
519 } | 519 } |
520 | 520 |
521 void CPDF_Document::LoadDoc() { | 521 void CPDF_Document::LoadDoc() { |
522 LoadDocInternal(); | 522 LoadDocInternal(); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 } | 582 } |
583 return nullptr; | 583 return nullptr; |
584 } | 584 } |
585 | 585 |
586 CPDF_Dictionary* CPDF_Document::GetPage(int iPage) { | 586 CPDF_Dictionary* CPDF_Document::GetPage(int iPage) { |
587 if (iPage < 0 || iPage >= m_PageList.GetSize()) | 587 if (iPage < 0 || iPage >= m_PageList.GetSize()) |
588 return nullptr; | 588 return nullptr; |
589 | 589 |
590 if (m_bLinearized && (iPage == m_iFirstPageNo)) { | 590 if (m_bLinearized && (iPage == m_iFirstPageNo)) { |
591 if (CPDF_Dictionary* pDict = | 591 if (CPDF_Dictionary* pDict = |
592 ToDictionary(GetIndirectObject(m_dwFirstPageObjNum))) { | 592 ToDictionary(GetOrParseIndirectObject(m_dwFirstPageObjNum))) { |
593 return pDict; | 593 return pDict; |
594 } | 594 } |
595 } | 595 } |
596 | 596 |
597 int objnum = m_PageList.GetAt(iPage); | 597 int objnum = m_PageList.GetAt(iPage); |
598 if (objnum) { | 598 if (objnum) { |
599 if (CPDF_Dictionary* pDict = ToDictionary(GetIndirectObject(objnum))) | 599 if (CPDF_Dictionary* pDict = ToDictionary(GetOrParseIndirectObject(objnum))) |
600 return pDict; | 600 return pDict; |
601 } | 601 } |
602 | 602 |
603 CPDF_Dictionary* pRoot = GetRoot(); | 603 CPDF_Dictionary* pRoot = GetRoot(); |
604 if (!pRoot) | 604 if (!pRoot) |
605 return nullptr; | 605 return nullptr; |
606 | 606 |
607 CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); | 607 CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); |
608 if (!pPages) | 608 if (!pPages) |
609 return nullptr; | 609 return nullptr; |
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1443 } | 1443 } |
1444 } | 1444 } |
1445 pFontDesc->SetAtInteger("StemV", fStemV); | 1445 pFontDesc->SetAtInteger("StemV", fStemV); |
1446 AddIndirectObject(pFontDesc); | 1446 AddIndirectObject(pFontDesc); |
1447 pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); | 1447 pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); |
1448 CFRelease(traits); | 1448 CFRelease(traits); |
1449 CFRelease(languages); | 1449 CFRelease(languages); |
1450 return LoadFont(pBaseDict); | 1450 return LoadFont(pBaseDict); |
1451 } | 1451 } |
1452 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ | 1452 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
OLD | NEW |