Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(821)

Side by Side Diff: fpdfsdk/src/fsdk_mgr.cpp

Issue 1413973011: Fix incorrect CPDFSDK_PageView::CountAnnots(). (try 2) (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: nits Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/src/fsdk_baseform.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 8
9 #include "../../public/fpdf_ext.h" 9 #include "../../public/fpdf_ext.h"
10 #include "../../third_party/base/nonstd_unique_ptr.h" 10 #include "../../third_party/base/nonstd_unique_ptr.h"
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 657 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
658 CPDFSDK_AnnotIterator annotIterator(this, true); 658 CPDFSDK_AnnotIterator annotIterator(this, true);
659 while (CPDFSDK_Annot* pSDKAnnot = annotIterator.Next()) { 659 while (CPDFSDK_Annot* pSDKAnnot = annotIterator.Next()) {
660 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr(); 660 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
661 pAnnotHandlerMgr->Annot_OnDraw(this, pSDKAnnot, pDevice, pUser2Device, 0); 661 pAnnotHandlerMgr->Annot_OnDraw(this, pSDKAnnot, pDevice, pUser2Device, 0);
662 } 662 }
663 } 663 }
664 664
665 CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX, 665 CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX,
666 FX_FLOAT pageY) { 666 FX_FLOAT pageY) {
667 int nCount = CountAnnots(); 667 const int nCount = m_pAnnotList->Count();
668 for (int i = 0; i < nCount; i++) { 668 for (int i = 0; i < nCount; ++i) {
669 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i); 669 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
670 CFX_FloatRect annotRect; 670 CFX_FloatRect annotRect;
671 pAnnot->GetRect(annotRect); 671 pAnnot->GetRect(annotRect);
672 if (annotRect.Contains(pageX, pageY)) 672 if (annotRect.Contains(pageX, pageY))
673 return pAnnot; 673 return pAnnot;
674 } 674 }
675 return nullptr; 675 return nullptr;
676 } 676 }
677 677
678 CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX, 678 CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX,
679 FX_FLOAT pageY) { 679 FX_FLOAT pageY) {
680 int nCount = CountAnnots(); 680 const int nCount = m_pAnnotList->Count();
681 for (int i = 0; i < nCount; ++i) { 681 for (int i = 0; i < nCount; ++i) {
682 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i); 682 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
683 if (pAnnot->GetSubType() == "Widget") { 683 if (pAnnot->GetSubType() == "Widget") {
684 CFX_FloatRect annotRect; 684 CFX_FloatRect annotRect;
685 pAnnot->GetRect(annotRect); 685 pAnnot->GetRect(annotRect);
686 if (annotRect.Contains(pageX, pageY)) 686 if (annotRect.Contains(pageX, pageY))
687 return pAnnot; 687 return pAnnot;
688 } 688 }
689 } 689 }
690 return nullptr; 690 return nullptr;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 return FALSE; 757 return FALSE;
758 } 758 }
759 759
760 CPDF_Document* CPDFSDK_PageView::GetPDFDocument() { 760 CPDF_Document* CPDFSDK_PageView::GetPDFDocument() {
761 if (m_page) { 761 if (m_page) {
762 return m_page->m_pDocument; 762 return m_page->m_pDocument;
763 } 763 }
764 return NULL; 764 return NULL;
765 } 765 }
766 766
767 int CPDFSDK_PageView::CountAnnots() const { 767 size_t CPDFSDK_PageView::CountAnnots() const {
768 return m_pAnnotList->Count(); 768 return m_fxAnnotArray.size();
769 } 769 }
770 770
771 CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(size_t nIndex) { 771 CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(size_t nIndex) {
772 return nIndex < m_fxAnnotArray.size() ? m_fxAnnotArray[nIndex] : nullptr; 772 return nIndex < m_fxAnnotArray.size() ? m_fxAnnotArray[nIndex] : nullptr;
773 } 773 }
774 774
775 CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByDict(CPDF_Dictionary* pDict) { 775 CPDFSDK_Annot* CPDFSDK_PageView::GetAnnotByDict(CPDF_Dictionary* pDict) {
776 for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) { 776 for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) {
777 if (pAnnot->GetPDFAnnot()->GetAnnotDict() == pDict) 777 if (pAnnot->GetPDFAnnot()->GetAnnotDict() == pDict)
778 return pAnnot; 778 return pAnnot;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 } 892 }
893 893
894 void CPDFSDK_PageView::LoadFXAnnots() { 894 void CPDFSDK_PageView::LoadFXAnnots() {
895 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 895 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
896 896
897 FX_BOOL enableAPUpdate = CPDF_InterForm::UpdatingAPEnabled(); 897 FX_BOOL enableAPUpdate = CPDF_InterForm::UpdatingAPEnabled();
898 // Disable the default AP construction. 898 // Disable the default AP construction.
899 CPDF_InterForm::EnableUpdateAP(FALSE); 899 CPDF_InterForm::EnableUpdateAP(FALSE);
900 m_pAnnotList.reset(new CPDF_AnnotList(m_page)); 900 m_pAnnotList.reset(new CPDF_AnnotList(m_page));
901 CPDF_InterForm::EnableUpdateAP(enableAPUpdate); 901 CPDF_InterForm::EnableUpdateAP(enableAPUpdate);
902 int nCount = CountAnnots(); 902 const int nCount = m_pAnnotList->Count();
903 SetLock(TRUE); 903 SetLock(TRUE);
904 for (int i = 0; i < nCount; ++i) { 904 for (int i = 0; i < nCount; ++i) {
905 CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i); 905 CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i);
906 CPDF_Document* pDoc = GetPDFDocument(); 906 CPDF_Document* pDoc = GetPDFDocument();
907 907
908 CheckUnSupportAnnot(pDoc, pPDFAnnot); 908 CheckUnSupportAnnot(pDoc, pPDFAnnot);
909 909
910 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr(); 910 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
911 ASSERT(pAnnotHandlerMgr != NULL); 911 CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
912 if (!pAnnot)
913 continue;
914 m_fxAnnotArray.push_back(pAnnot);
912 915
913 if (pAnnotHandlerMgr) { 916 pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
914 CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
915 if (!pAnnot)
916 continue;
917 m_fxAnnotArray.push_back(pAnnot);
918
919 pAnnotHandlerMgr->Annot_OnLoad(pAnnot);
920 }
921 } 917 }
922 SetLock(FALSE); 918 SetLock(FALSE);
923 } 919 }
924 920
925 void CPDFSDK_PageView::UpdateRects(CFX_RectArray& rects) { 921 void CPDFSDK_PageView::UpdateRects(CFX_RectArray& rects) {
926 for (int i = 0; i < rects.GetSize(); i++) { 922 for (int i = 0; i < rects.GetSize(); i++) {
927 CPDF_Rect rc = rects.GetAt(i); 923 CPDF_Rect rc = rects.GetAt(i);
928 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 924 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
929 pEnv->FFI_Invalidate(m_page, rc.left, rc.top, rc.right, rc.bottom); 925 pEnv->FFI_Invalidate(m_page, rc.left, rc.top, rc.right, rc.bottom);
930 } 926 }
(...skipping 14 matching lines...) Expand all
945 return pDoc->GetPageIndex(pDic->GetObjNum()); 941 return pDoc->GetPageIndex(pDic->GetObjNum());
946 } 942 }
947 } 943 }
948 return -1; 944 return -1;
949 } 945 }
950 946
951 FX_BOOL CPDFSDK_PageView::IsValidAnnot(CPDF_Annot* p) const { 947 FX_BOOL CPDFSDK_PageView::IsValidAnnot(CPDF_Annot* p) const {
952 if (!p) 948 if (!p)
953 return FALSE; 949 return FALSE;
954 950
955 int nCount = CountAnnots(); 951 const int nCount = m_pAnnotList->Count();
956 for (int i = 0; i < nCount; ++i) { 952 for (int i = 0; i < nCount; ++i) {
957 if (m_pAnnotList->GetAt(i) == p) 953 if (m_pAnnotList->GetAt(i) == p)
958 return TRUE; 954 return TRUE;
959 } 955 }
960 return FALSE; 956 return FALSE;
961 } 957 }
962 958
963 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() { 959 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() {
964 CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot(); 960 CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot();
965 if (!pFocusAnnot) 961 if (!pFocusAnnot)
966 return nullptr; 962 return nullptr;
967 963
968 for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) { 964 for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) {
969 if (pAnnot == pFocusAnnot) 965 if (pAnnot == pFocusAnnot)
970 return pAnnot; 966 return pAnnot;
971 } 967 }
972 return nullptr; 968 return nullptr;
973 } 969 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fsdk_baseform.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698