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

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

Issue 1411203007: Cleanup parts of CPDFSDK_AnnotIterator and CPDFSDK_PageView. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 2 months 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
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 "../../public/fpdf_ext.h" 7 #include "../../public/fpdf_ext.h"
8 #include "../../third_party/base/nonstd_unique_ptr.h" 8 #include "../../third_party/base/nonstd_unique_ptr.h"
9 #include "../include/formfiller/FFL_FormFiller.h" 9 #include "../include/formfiller/FFL_FormFiller.h"
10 #include "../include/fsdk_define.h" 10 #include "../include/fsdk_define.h"
11 #include "../include/fsdk_mgr.h" 11 #include "../include/fsdk_mgr.h"
12 #include "../include/javascript/IJavaScript.h" 12 #include "../include/javascript/IJavaScript.h"
13 13
14 #if _FX_OS_ == _FX_ANDROID_ 14 #if _FX_OS_ == _FX_ANDROID_
15 #include "time.h" 15 #include "time.h"
16 #else 16 #else
17 #include <ctime> 17 #include <ctime>
18 #endif 18 #endif
19 19
20 class CFX_SystemHandler : public IFX_SystemHandler { 20 class CFX_SystemHandler : public IFX_SystemHandler {
21 public: 21 public:
22 CFX_SystemHandler(CPDFDoc_Environment* pEnv) : m_pEnv(pEnv), m_nCharSet(-1) {} 22 explicit CFX_SystemHandler(CPDFDoc_Environment* pEnv)
23 : m_pEnv(pEnv), m_nCharSet(-1) {}
23 ~CFX_SystemHandler() override {} 24 ~CFX_SystemHandler() override {}
24 25
25 public: 26 public:
26 // IFX_SystemHandler 27 // IFX_SystemHandler
27 void InvalidateRect(FX_HWND hWnd, FX_RECT rect) override; 28 void InvalidateRect(FX_HWND hWnd, FX_RECT rect) override;
28 void OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect) override; 29 void OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect) override;
29 FX_BOOL IsSelectionImplemented() override; 30 FX_BOOL IsSelectionImplemented() override;
30 CFX_WideString GetClipboardText(FX_HWND hWnd) override { return L""; } 31 CFX_WideString GetClipboardText(FX_HWND hWnd) override { return L""; }
31 FX_BOOL SetClipboardText(FX_HWND hWnd, CFX_WideString string) override { 32 FX_BOOL SetClipboardText(FX_HWND hWnd, CFX_WideString string) override {
32 return FALSE; 33 return FALSE;
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 637
637 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 638 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
638 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr(); 639 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
639 ASSERT(pAnnotHandlerMgr); 640 ASSERT(pAnnotHandlerMgr);
640 for (int i = 0, count = m_fxAnnotArray.GetSize(); i < count; i++) { 641 for (int i = 0, count = m_fxAnnotArray.GetSize(); i < count; i++) {
641 CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i); 642 CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
642 pAnnotHandlerMgr->ReleaseAnnot(pAnnot); 643 pAnnotHandlerMgr->ReleaseAnnot(pAnnot);
643 } 644 }
644 m_fxAnnotArray.RemoveAll(); 645 m_fxAnnotArray.RemoveAll();
645 646
646 delete m_pAnnotList; 647 m_pAnnotList.reset();
647 m_pAnnotList = NULL;
648 648
649 m_page->RemovePrivateData((void*)m_page); 649 m_page->RemovePrivateData((void*)m_page);
650 if (m_bTakeOverPage) { 650 if (m_bTakeOverPage) {
651 delete m_page; 651 delete m_page;
652 } 652 }
653 } 653 }
654 654
655 void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice, 655 void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice,
656 CPDF_Matrix* pUser2Device, 656 CPDF_Matrix* pUser2Device,
657 CPDF_RenderOptions* pOptions) { 657 CPDF_RenderOptions* pOptions) {
658 m_curMatrix = *pUser2Device; 658 m_curMatrix = *pUser2Device;
659 659
660 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 660 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
661 CPDFSDK_AnnotIterator annotIterator(this, TRUE); 661 CPDFSDK_AnnotIterator annotIterator(this, true);
662 int index = -1; 662 int index = -1;
663 while (CPDFSDK_Annot* pSDKAnnot = annotIterator.Next(index)) { 663 while (CPDFSDK_Annot* pSDKAnnot = annotIterator.Next(&index)) {
664 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr(); 664 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
665 pAnnotHandlerMgr->Annot_OnDraw(this, pSDKAnnot, pDevice, pUser2Device, 0); 665 pAnnotHandlerMgr->Annot_OnDraw(this, pSDKAnnot, pDevice, pUser2Device, 0);
666 } 666 }
667 } 667 }
668 668
669 CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX, 669 CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX,
670 FX_FLOAT pageY) { 670 FX_FLOAT pageY) {
671 int nCount = m_pAnnotList->Count(); 671 int nCount = CountAnnots();
672 for (int i = 0; i < nCount; i++) { 672 for (int i = 0; i < nCount; i++) {
673 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i); 673 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
674 CFX_FloatRect annotRect; 674 CFX_FloatRect annotRect;
675 pAnnot->GetRect(annotRect); 675 pAnnot->GetRect(annotRect);
676 if (annotRect.Contains(pageX, pageY)) 676 if (annotRect.Contains(pageX, pageY))
677 return pAnnot; 677 return pAnnot;
678 } 678 }
679 return NULL; 679 return nullptr;
680 } 680 }
681 681
682 CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX, 682 CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX,
683 FX_FLOAT pageY) { 683 FX_FLOAT pageY) {
684 int nCount = m_pAnnotList->Count(); 684 int nCount = CountAnnots();
685 for (int i = 0; i < nCount; i++) { 685 for (int i = 0; i < nCount; ++i) {
686 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i); 686 CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
687 if (pAnnot->GetSubType() == "Widget") { 687 if (pAnnot->GetSubType() == "Widget") {
688 CFX_FloatRect annotRect; 688 CFX_FloatRect annotRect;
689 pAnnot->GetRect(annotRect); 689 pAnnot->GetRect(annotRect);
690 if (annotRect.Contains(pageX, pageY)) 690 if (annotRect.Contains(pageX, pageY))
691 return pAnnot; 691 return pAnnot;
692 } 692 }
693 } 693 }
694 return NULL; 694 return nullptr;
695 } 695 }
696 696
697 CPDFSDK_Annot* CPDFSDK_PageView::GetFXAnnotAtPoint(FX_FLOAT pageX, 697 CPDFSDK_Annot* CPDFSDK_PageView::GetFXAnnotAtPoint(FX_FLOAT pageX,
698 FX_FLOAT pageY) { 698 FX_FLOAT pageY) {
699 CPDFSDK_AnnotIterator annotIterator(this, FALSE); 699 CPDFSDK_AnnotIterator annotIterator(this, false);
700 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 700 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
701 CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr(); 701 CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr();
702 CPDFSDK_Annot* pSDKAnnot = NULL; 702 CPDFSDK_Annot* pSDKAnnot = NULL;
703 int index = -1; 703 int index = -1;
704 while ((pSDKAnnot = annotIterator.Next(index))) { 704 while ((pSDKAnnot = annotIterator.Next(&index))) {
705 CPDF_Rect rc = pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot); 705 CPDF_Rect rc = pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot);
706 if (rc.Contains(pageX, pageY)) 706 if (rc.Contains(pageX, pageY))
707 return pSDKAnnot; 707 return pSDKAnnot;
708 } 708 }
709 709
710 return NULL; 710 return NULL;
711 } 711 }
712 712
713 CPDFSDK_Annot* CPDFSDK_PageView::GetFXWidgetAtPoint(FX_FLOAT pageX, 713 CPDFSDK_Annot* CPDFSDK_PageView::GetFXWidgetAtPoint(FX_FLOAT pageX,
714 FX_FLOAT pageY) { 714 FX_FLOAT pageY) {
715 CPDFSDK_AnnotIterator annotIterator(this, FALSE); 715 CPDFSDK_AnnotIterator annotIterator(this, false);
716 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 716 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
717 CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr(); 717 CPDFSDK_AnnotHandlerMgr* pAnnotMgr = pEnv->GetAnnotHandlerMgr();
718 CPDFSDK_Annot* pSDKAnnot = NULL; 718 CPDFSDK_Annot* pSDKAnnot = NULL;
719 int index = -1; 719 int index = -1;
720 while ((pSDKAnnot = annotIterator.Next(index))) { 720 while ((pSDKAnnot = annotIterator.Next(&index))) {
721 if (pSDKAnnot->GetType() == "Widget") { 721 if (pSDKAnnot->GetType() == "Widget") {
722 pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot); 722 pAnnotMgr->Annot_OnGetViewBBox(this, pSDKAnnot);
723 CPDF_Point point(pageX, pageY); 723 CPDF_Point point(pageX, pageY);
724 if (pAnnotMgr->Annot_OnHitTest(this, pSDKAnnot, point)) 724 if (pAnnotMgr->Annot_OnHitTest(this, pSDKAnnot, point))
725 return pSDKAnnot; 725 return pSDKAnnot;
726 } 726 }
727 } 727 }
728 728
729 return NULL; 729 return NULL;
730 } 730 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 return FALSE; 771 return FALSE;
772 } 772 }
773 773
774 CPDF_Document* CPDFSDK_PageView::GetPDFDocument() { 774 CPDF_Document* CPDFSDK_PageView::GetPDFDocument() {
775 if (m_page) { 775 if (m_page) {
776 return m_page->m_pDocument; 776 return m_page->m_pDocument;
777 } 777 }
778 return NULL; 778 return NULL;
779 } 779 }
780 780
781 int CPDFSDK_PageView::CountAnnots() { 781 int CPDFSDK_PageView::CountAnnots() const {
782 return m_pAnnotList->Count(); 782 return m_pAnnotList->Count();
783 } 783 }
784 784
785 CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(int nIndex) { 785 CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(int nIndex) {
786 int nCount = m_fxAnnotArray.GetSize(); 786 int nCount = m_fxAnnotArray.GetSize();
787 if (nIndex < 0 || nIndex >= nCount) { 787 if (nIndex < 0 || nIndex >= nCount) {
788 return NULL; 788 return NULL;
789 } 789 }
790 790
791 return (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(nIndex); 791 return (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(nIndex);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 FX_BOOL CPDFSDK_PageView::OnKeyUp(int nKeyCode, int nFlag) { 911 FX_BOOL CPDFSDK_PageView::OnKeyUp(int nKeyCode, int nFlag) {
912 return FALSE; 912 return FALSE;
913 } 913 }
914 914
915 void CPDFSDK_PageView::LoadFXAnnots() { 915 void CPDFSDK_PageView::LoadFXAnnots() {
916 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 916 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
917 917
918 FX_BOOL enableAPUpdate = CPDF_InterForm::UpdatingAPEnabled(); 918 FX_BOOL enableAPUpdate = CPDF_InterForm::UpdatingAPEnabled();
919 // Disable the default AP construction. 919 // Disable the default AP construction.
920 CPDF_InterForm::EnableUpdateAP(FALSE); 920 CPDF_InterForm::EnableUpdateAP(FALSE);
921 m_pAnnotList = new CPDF_AnnotList(m_page); 921 m_pAnnotList.reset(new CPDF_AnnotList(m_page));
922 CPDF_InterForm::EnableUpdateAP(enableAPUpdate); 922 CPDF_InterForm::EnableUpdateAP(enableAPUpdate);
923 int nCount = m_pAnnotList->Count(); 923 int nCount = CountAnnots();
924 SetLock(TRUE); 924 SetLock(TRUE);
925 for (int i = 0; i < nCount; i++) { 925 for (int i = 0; i < nCount; ++i) {
926 CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i); 926 CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i);
927 CPDF_Document* pDoc = GetPDFDocument(); 927 CPDF_Document* pDoc = GetPDFDocument();
928 928
929 CheckUnSupportAnnot(pDoc, pPDFAnnot); 929 CheckUnSupportAnnot(pDoc, pPDFAnnot);
930 930
931 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr(); 931 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
932 ASSERT(pAnnotHandlerMgr != NULL); 932 ASSERT(pAnnotHandlerMgr != NULL);
933 933
934 if (pAnnotHandlerMgr) { 934 if (pAnnotHandlerMgr) {
935 CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this); 935 CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
(...skipping 26 matching lines...) Expand all
962 if (m_page) { 962 if (m_page) {
963 CPDF_Dictionary* pDic = m_page->m_pFormDict; 963 CPDF_Dictionary* pDic = m_page->m_pFormDict;
964 CPDF_Document* pDoc = m_pSDKDoc->GetDocument(); 964 CPDF_Document* pDoc = m_pSDKDoc->GetDocument();
965 if (pDoc && pDic) { 965 if (pDoc && pDic) {
966 return pDoc->GetPageIndex(pDic->GetObjNum()); 966 return pDoc->GetPageIndex(pDic->GetObjNum());
967 } 967 }
968 } 968 }
969 return -1; 969 return -1;
970 } 970 }
971 971
972 FX_BOOL CPDFSDK_PageView::IsValidAnnot(void* p) { 972 FX_BOOL CPDFSDK_PageView::IsValidAnnot(void* p) const {
973 if (p == NULL) 973 if (!p)
974 return FALSE; 974 return FALSE;
975 int iCount = m_pAnnotList->Count(); 975
976 for (int i = 0; i < iCount; i++) { 976 int nCount = CountAnnots();
977 for (int i = 0; i < nCount; ++i) {
977 if (m_pAnnotList->GetAt(i) == p) 978 if (m_pAnnotList->GetAt(i) == p)
978 return TRUE; 979 return TRUE;
979 } 980 }
980 return FALSE; 981 return FALSE;
981 } 982 }
982 983
983 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() { 984 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() {
984 CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot(); 985 CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot();
985 if (!pFocusAnnot) 986 if (!pFocusAnnot)
986 return NULL; 987 return NULL;
987 988
988 for (int i = 0; i < m_fxAnnotArray.GetSize(); i++) { 989 for (int i = 0; i < m_fxAnnotArray.GetSize(); i++) {
989 CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i); 990 CPDFSDK_Annot* pAnnot = (CPDFSDK_Annot*)m_fxAnnotArray.GetAt(i);
990 if (pAnnot == pFocusAnnot) 991 if (pAnnot == pFocusAnnot)
991 return pAnnot; 992 return pAnnot;
992 } 993 }
993 return NULL; 994 return NULL;
994 } 995 }
OLDNEW
« fpdfsdk/include/fsdk_annothandler.h ('K') | « fpdfsdk/src/fsdk_annothandler.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698