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 "pageint.h" | 7 #include "pageint.h" |
8 | 8 |
9 #include "core/include/fpdfapi/fpdf_module.h" | 9 #include "core/include/fpdfapi/fpdf_module.h" |
10 #include "core/include/fpdfapi/fpdf_page.h" | 10 #include "core/include/fpdfapi/fpdf_page.h" |
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 m_FormMatrix = pSrcObj->m_FormMatrix; | 663 m_FormMatrix = pSrcObj->m_FormMatrix; |
664 } | 664 } |
665 void CPDF_FormObject::CalcBoundingBox() { | 665 void CPDF_FormObject::CalcBoundingBox() { |
666 CFX_FloatRect form_rect = m_pForm->CalcBoundingBox(); | 666 CFX_FloatRect form_rect = m_pForm->CalcBoundingBox(); |
667 form_rect.Transform(&m_FormMatrix); | 667 form_rect.Transform(&m_FormMatrix); |
668 m_Left = form_rect.left; | 668 m_Left = form_rect.left; |
669 m_Bottom = form_rect.bottom; | 669 m_Bottom = form_rect.bottom; |
670 m_Right = form_rect.right; | 670 m_Right = form_rect.right; |
671 m_Top = form_rect.top; | 671 m_Top = form_rect.top; |
672 } | 672 } |
673 CPDF_PageObjectList::CPDF_PageObjectList() | 673 CPDF_PageObjectHolder::CPDF_PageObjectHolder() |
674 : m_pFormDict(nullptr), | 674 : m_pFormDict(nullptr), |
675 m_pFormStream(nullptr), | 675 m_pFormStream(nullptr), |
676 m_pDocument(nullptr), | 676 m_pDocument(nullptr), |
677 m_pPageResources(nullptr), | 677 m_pPageResources(nullptr), |
678 m_pResources(nullptr), | 678 m_pResources(nullptr), |
679 m_Transparency(0), | 679 m_Transparency(0), |
680 m_bBackgroundAlphaNeeded(FALSE), | 680 m_bBackgroundAlphaNeeded(FALSE), |
681 m_bHasImageMask(FALSE), | 681 m_bHasImageMask(FALSE), |
682 m_ParseState(CONTENT_NOT_PARSED), | 682 m_ParseState(CONTENT_NOT_PARSED), |
683 m_ObjectList(128) {} | 683 m_PageObjectList(128) {} |
684 CPDF_PageObjectList::~CPDF_PageObjectList() { | 684 |
685 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | 685 CPDF_PageObjectHolder::~CPDF_PageObjectHolder() { |
| 686 FX_POSITION pos = m_PageObjectList.GetHeadPosition(); |
686 while (pos) { | 687 while (pos) { |
687 delete (CPDF_PageObject*)m_ObjectList.GetNext(pos); | 688 delete m_PageObjectList.GetNextObject(pos); |
688 } | 689 } |
689 } | 690 } |
690 void CPDF_PageObjectList::ContinueParse(IFX_Pause* pPause) { | 691 void CPDF_PageObjectHolder::ContinueParse(IFX_Pause* pPause) { |
691 if (!m_pParser) { | 692 if (!m_pParser) { |
692 return; | 693 return; |
693 } | 694 } |
694 m_pParser->Continue(pPause); | 695 m_pParser->Continue(pPause); |
695 if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { | 696 if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { |
696 m_ParseState = CONTENT_PARSED; | 697 m_ParseState = CONTENT_PARSED; |
697 m_pParser.reset(); | 698 m_pParser.reset(); |
698 } | 699 } |
699 } | 700 } |
700 FX_POSITION CPDF_PageObjectList::InsertObject(FX_POSITION posInsertAfter, | 701 FX_POSITION CPDF_PageObjectList::InsertObject(FX_POSITION posInsertAfter, |
701 CPDF_PageObject* pNewObject) { | 702 CPDF_PageObject* pNewObject) { |
702 if (!posInsertAfter) { | 703 if (!posInsertAfter) { |
703 return m_ObjectList.AddHead(pNewObject); | 704 return AddHead(pNewObject); |
704 } | 705 } |
705 return m_ObjectList.InsertAfter(posInsertAfter, pNewObject); | 706 return InsertAfter(posInsertAfter, pNewObject); |
706 } | |
707 int CPDF_PageObjectList::GetObjectIndex(CPDF_PageObject* pObj) const { | |
708 int index = 0; | |
709 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | |
710 while (pos) { | |
711 CPDF_PageObject* pThisObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos); | |
712 if (pThisObj == pObj) { | |
713 return index; | |
714 } | |
715 index++; | |
716 } | |
717 return -1; | |
718 } | 707 } |
719 CPDF_PageObject* CPDF_PageObjectList::GetObjectByIndex(int index) const { | 708 CPDF_PageObject* CPDF_PageObjectList::GetObjectByIndex(int index) const { |
720 FX_POSITION pos = m_ObjectList.FindIndex(index); | 709 FX_POSITION pos = FindIndex(index); |
721 return pos ? static_cast<CPDF_PageObject*>(m_ObjectList.GetAt(pos)) : nullptr; | 710 return pos ? GetObjectAt(pos) : nullptr; |
722 } | 711 } |
723 void CPDF_PageObjectList::Transform(const CFX_Matrix& matrix) { | 712 void CPDF_PageObjectHolder::Transform(const CFX_Matrix& matrix) { |
724 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | 713 FX_POSITION pos = m_PageObjectList.GetHeadPosition(); |
725 while (pos) { | 714 while (pos) { |
726 CPDF_PageObject* pObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos); | 715 m_PageObjectList.GetNextObject(pos)->Transform(matrix); |
727 pObj->Transform(matrix); | |
728 } | 716 } |
729 } | 717 } |
730 CFX_FloatRect CPDF_PageObjectList::CalcBoundingBox() const { | 718 CFX_FloatRect CPDF_PageObjectHolder::CalcBoundingBox() const { |
731 if (m_ObjectList.GetCount() == 0) { | 719 if (m_PageObjectList.GetCount() == 0) { |
732 return CFX_FloatRect(0, 0, 0, 0); | 720 return CFX_FloatRect(0, 0, 0, 0); |
733 } | 721 } |
734 FX_FLOAT left, right, top, bottom; | 722 FX_FLOAT left, right, top, bottom; |
735 left = bottom = 1000000 * 1.0f; | 723 left = bottom = 1000000 * 1.0f; |
736 right = top = -1000000 * 1.0f; | 724 right = top = -1000000 * 1.0f; |
737 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | 725 FX_POSITION pos = m_PageObjectList.GetHeadPosition(); |
738 while (pos) { | 726 while (pos) { |
739 CPDF_PageObject* pObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos); | 727 CPDF_PageObject* pObj = (CPDF_PageObject*)m_PageObjectList.GetNext(pos); |
740 if (left > pObj->m_Left) { | 728 if (left > pObj->m_Left) { |
741 left = pObj->m_Left; | 729 left = pObj->m_Left; |
742 } | 730 } |
743 if (right < pObj->m_Right) { | 731 if (right < pObj->m_Right) { |
744 right = pObj->m_Right; | 732 right = pObj->m_Right; |
745 } | 733 } |
746 if (top < pObj->m_Top) { | 734 if (top < pObj->m_Top) { |
747 top = pObj->m_Top; | 735 top = pObj->m_Top; |
748 } | 736 } |
749 if (bottom > pObj->m_Bottom) { | 737 if (bottom > pObj->m_Bottom) { |
750 bottom = pObj->m_Bottom; | 738 bottom = pObj->m_Bottom; |
751 } | 739 } |
752 } | 740 } |
753 return CFX_FloatRect(left, bottom, right, top); | 741 return CFX_FloatRect(left, bottom, right, top); |
754 } | 742 } |
755 void CPDF_PageObjectList::LoadTransInfo() { | 743 void CPDF_PageObjectHolder::LoadTransInfo() { |
756 if (!m_pFormDict) { | 744 if (!m_pFormDict) { |
757 return; | 745 return; |
758 } | 746 } |
759 CPDF_Dictionary* pGroup = m_pFormDict->GetDictBy("Group"); | 747 CPDF_Dictionary* pGroup = m_pFormDict->GetDictBy("Group"); |
760 if (!pGroup) { | 748 if (!pGroup) { |
761 return; | 749 return; |
762 } | 750 } |
763 if (pGroup->GetStringBy("S") != "Transparency") { | 751 if (pGroup->GetStringBy("S") != "Transparency") { |
764 return; | 752 return; |
765 } | 753 } |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 CFX_Matrix* pParentMatrix, | 907 CFX_Matrix* pParentMatrix, |
920 CPDF_Type3Char* pType3Char, | 908 CPDF_Type3Char* pType3Char, |
921 CPDF_ParseOptions* pOptions, | 909 CPDF_ParseOptions* pOptions, |
922 int level) { | 910 int level) { |
923 StartParse(pGraphicStates, pParentMatrix, pType3Char, pOptions, level); | 911 StartParse(pGraphicStates, pParentMatrix, pType3Char, pOptions, level); |
924 ContinueParse(NULL); | 912 ContinueParse(NULL); |
925 } | 913 } |
926 CPDF_Form* CPDF_Form::Clone() const { | 914 CPDF_Form* CPDF_Form::Clone() const { |
927 CPDF_Form* pClone = | 915 CPDF_Form* pClone = |
928 new CPDF_Form(m_pDocument, m_pPageResources, m_pFormStream, m_pResources); | 916 new CPDF_Form(m_pDocument, m_pPageResources, m_pFormStream, m_pResources); |
929 FX_POSITION pos = m_ObjectList.GetHeadPosition(); | 917 FX_POSITION pos = m_PageObjectList.GetHeadPosition(); |
930 while (pos) { | 918 while (pos) { |
931 CPDF_PageObject* pObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos); | 919 CPDF_PageObject* pObj = (CPDF_PageObject*)m_PageObjectList.GetNext(pos); |
932 pClone->m_ObjectList.AddTail(pObj->Clone()); | 920 pClone->m_PageObjectList.AddTail(pObj->Clone()); |
933 } | 921 } |
934 return pClone; | 922 return pClone; |
935 } | 923 } |
936 void CPDF_Page::GetDisplayMatrix(CFX_Matrix& matrix, | 924 void CPDF_Page::GetDisplayMatrix(CFX_Matrix& matrix, |
937 int xPos, | 925 int xPos, |
938 int yPos, | 926 int yPos, |
939 int xSize, | 927 int xSize, |
940 int ySize, | 928 int ySize, |
941 int iRotate) const { | 929 int iRotate) const { |
942 if (m_PageWidth == 0 || m_PageHeight == 0) { | 930 if (m_PageWidth == 0 || m_PageHeight == 0) { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 (FX_FLOAT)y0); | 974 (FX_FLOAT)y0); |
987 matrix = m_PageMatrix; | 975 matrix = m_PageMatrix; |
988 matrix.Concat(display_matrix); | 976 matrix.Concat(display_matrix); |
989 } | 977 } |
990 CPDF_ParseOptions::CPDF_ParseOptions() { | 978 CPDF_ParseOptions::CPDF_ParseOptions() { |
991 m_bTextOnly = FALSE; | 979 m_bTextOnly = FALSE; |
992 m_bMarkedContent = TRUE; | 980 m_bMarkedContent = TRUE; |
993 m_bSeparateForm = TRUE; | 981 m_bSeparateForm = TRUE; |
994 m_bDecodeInlineImage = FALSE; | 982 m_bDecodeInlineImage = FALSE; |
995 } | 983 } |
OLD | NEW |