| 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 "../../../include/fpdfapi/fpdf_page.h" | 7 #include "../../../include/fpdfapi/fpdf_page.h" |
| 8 #include "../../../include/fpdfapi/fpdf_module.h" | 8 #include "../../../include/fpdfapi/fpdf_module.h" |
| 9 #include "pageint.h" | 9 #include "pageint.h" |
| 10 void CPDF_PageObject::Release() | |
| 11 { | |
| 12 delete this; | |
| 13 } | |
| 14 CPDF_PageObject* CPDF_PageObject::Create(int type) | 10 CPDF_PageObject* CPDF_PageObject::Create(int type) |
| 15 { | 11 { |
| 16 switch (type) { | 12 switch (type) { |
| 17 case PDFPAGE_TEXT: | 13 case PDFPAGE_TEXT: |
| 18 return FX_NEW CPDF_TextObject; | 14 return FX_NEW CPDF_TextObject; |
| 19 case PDFPAGE_IMAGE: | 15 case PDFPAGE_IMAGE: |
| 20 return FX_NEW CPDF_ImageObject; | 16 return FX_NEW CPDF_ImageObject; |
| 21 case PDFPAGE_PATH: | 17 case PDFPAGE_PATH: |
| 22 return FX_NEW CPDF_PathObject; | 18 return FX_NEW CPDF_PathObject; |
| 23 case PDFPAGE_SHADING: | 19 case PDFPAGE_SHADING: |
| 24 return FX_NEW CPDF_ShadingObject; | 20 return FX_NEW CPDF_ShadingObject; |
| 25 case PDFPAGE_FORM: | 21 case PDFPAGE_FORM: |
| 26 return FX_NEW CPDF_FormObject; | 22 return FX_NEW CPDF_FormObject; |
| 27 } | 23 } |
| 28 return NULL; | 24 return NULL; |
| 29 } | 25 } |
| 26 CPDF_PageObject::~CPDF_PageObject() |
| 27 { |
| 28 } |
| 30 CPDF_PageObject* CPDF_PageObject::Clone() const | 29 CPDF_PageObject* CPDF_PageObject::Clone() const |
| 31 { | 30 { |
| 32 CPDF_PageObject* pObj = Create(m_Type); | 31 CPDF_PageObject* pObj = Create(m_Type); |
| 33 pObj->Copy(this); | 32 pObj->Copy(this); |
| 34 return pObj; | 33 return pObj; |
| 35 } | 34 } |
| 36 void CPDF_PageObject::Copy(const CPDF_PageObject* pSrc) | 35 void CPDF_PageObject::Copy(const CPDF_PageObject* pSrc) |
| 37 { | 36 { |
| 38 if (m_Type != pSrc->m_Type) { | 37 if (m_Type != pSrc->m_Type) { |
| 39 return; | 38 return; |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 CPDF_PageObjects::~CPDF_PageObjects() | 681 CPDF_PageObjects::~CPDF_PageObjects() |
| 683 { | 682 { |
| 684 if (m_pParser) { | 683 if (m_pParser) { |
| 685 delete m_pParser; | 684 delete m_pParser; |
| 686 } | 685 } |
| 687 if (!m_bReleaseMembers) { | 686 if (!m_bReleaseMembers) { |
| 688 return; | 687 return; |
| 689 } | 688 } |
| 690 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | 689 FX_POSITION pos = m_ObjectList.GetHeadPosition(); |
| 691 while (pos) { | 690 while (pos) { |
| 692 CPDF_PageObject* pPageObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos); | 691 delete (CPDF_PageObject*)m_ObjectList.GetNext(pos); |
| 693 if (!pPageObj) { | |
| 694 continue; | |
| 695 } | |
| 696 pPageObj->Release(); | |
| 697 } | 692 } |
| 698 } | 693 } |
| 699 void CPDF_PageObjects::ContinueParse(IFX_Pause* pPause) | 694 void CPDF_PageObjects::ContinueParse(IFX_Pause* pPause) |
| 700 { | 695 { |
| 701 if (m_pParser == NULL) { | 696 if (m_pParser == NULL) { |
| 702 return; | 697 return; |
| 703 } | 698 } |
| 704 m_pParser->Continue(pPause); | 699 m_pParser->Continue(pPause); |
| 705 if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { | 700 if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { |
| 706 m_ParseState = PDF_CONTENT_PARSED; | 701 m_ParseState = PDF_CONTENT_PARSED; |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 void CPDF_PageObjects::ClearCacheObjects() | 796 void CPDF_PageObjects::ClearCacheObjects() |
| 802 { | 797 { |
| 803 m_ParseState = PDF_CONTENT_NOT_PARSED; | 798 m_ParseState = PDF_CONTENT_NOT_PARSED; |
| 804 if (m_pParser) { | 799 if (m_pParser) { |
| 805 delete m_pParser; | 800 delete m_pParser; |
| 806 } | 801 } |
| 807 m_pParser = NULL; | 802 m_pParser = NULL; |
| 808 if (m_bReleaseMembers) { | 803 if (m_bReleaseMembers) { |
| 809 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | 804 FX_POSITION pos = m_ObjectList.GetHeadPosition(); |
| 810 while (pos) { | 805 while (pos) { |
| 811 CPDF_PageObject* pPageObj = (CPDF_PageObject*)m_ObjectList.GetNext(p
os); | 806 delete (CPDF_PageObject*)m_ObjectList.GetNext(pos); |
| 812 if (!pPageObj) { | |
| 813 continue; | |
| 814 } | |
| 815 pPageObj->Release(); | |
| 816 } | 807 } |
| 817 } | 808 } |
| 818 m_ObjectList.RemoveAll(); | 809 m_ObjectList.RemoveAll(); |
| 819 } | 810 } |
| 820 CPDF_Page::CPDF_Page() | 811 CPDF_Page::CPDF_Page() |
| 821 { | 812 { |
| 822 m_pPageRender = NULL; | 813 m_pPageRender = NULL; |
| 823 } | 814 } |
| 824 void CPDF_Page::Load(CPDF_Document* pDocument, CPDF_Dictionary* pPageDict, FX_BO
OL bPageCache) | 815 void CPDF_Page::Load(CPDF_Document* pDocument, CPDF_Dictionary* pPageDict, FX_BO
OL bPageCache) |
| 825 { | 816 { |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1031 matrix = m_PageMatrix; | 1022 matrix = m_PageMatrix; |
| 1032 matrix.Concat(display_matrix); | 1023 matrix.Concat(display_matrix); |
| 1033 } | 1024 } |
| 1034 CPDF_ParseOptions::CPDF_ParseOptions() | 1025 CPDF_ParseOptions::CPDF_ParseOptions() |
| 1035 { | 1026 { |
| 1036 m_bTextOnly = FALSE; | 1027 m_bTextOnly = FALSE; |
| 1037 m_bMarkedContent = TRUE; | 1028 m_bMarkedContent = TRUE; |
| 1038 m_bSeparateForm = TRUE; | 1029 m_bSeparateForm = TRUE; |
| 1039 m_bDecodeInlineImage = FALSE; | 1030 m_bDecodeInlineImage = FALSE; |
| 1040 } | 1031 } |
| OLD | NEW |