1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef FPDFSDK_CBA_ANNOTITERATOR_H_ 8 #define FPDFSDK_CBA_ANNOTITERATOR_H_ 9 10 #include <vector> 11 12 #include "core/fpdfdoc/cpdf_annot.h" 13 #include "core/fxcrt/fx_coordinates.h" 14 #include "core/fxcrt/fx_string.h" 15 #include "core/fxcrt/unowned_ptr.h" 16 17 class CPDFSDK_Annot; 18 class CPDFSDK_PageView; 19 20 class CBA_AnnotIterator { 21 public: 22 enum TabOrder { STRUCTURE = 0, ROW, COLUMN }; 23 24 CBA_AnnotIterator(CPDFSDK_PageView* pPageView, 25 CPDF_Annot::Subtype nAnnotSubtype); 26 ~CBA_AnnotIterator(); 27 28 CPDFSDK_Annot* GetFirstAnnot(); 29 CPDFSDK_Annot* GetLastAnnot(); 30 CPDFSDK_Annot* GetNextAnnot(CPDFSDK_Annot* pAnnot); 31 CPDFSDK_Annot* GetPrevAnnot(CPDFSDK_Annot* pAnnot); 32 33 private: 34 void GenerateResults(); 35 void CollectAnnots(std::vector<CPDFSDK_Annot*>* pArray); 36 CFX_FloatRect AddToAnnotsList(std::vector<CPDFSDK_Annot*>* sa, size_t idx); 37 void AddSelectedToAnnots(std::vector<CPDFSDK_Annot*>* sa, 38 std::vector<size_t>* aSelect); 39 40 TabOrder m_eTabOrder; 41 UnownedPtr<CPDFSDK_PageView> m_pPageView; 42 CPDF_Annot::Subtype m_nAnnotSubtype; 43 std::vector<CPDFSDK_Annot*> m_Annots; 44 }; 45 46 #endif // FPDFSDK_CBA_ANNOTITERATOR_H_ 47