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 16 class CPDFSDK_Annot; 17 class CPDFSDK_PageView; 18 19 class CBA_AnnotIterator { 20 public: 21 enum TabOrder { STRUCTURE = 0, ROW, COLUMN }; 22 23 CBA_AnnotIterator(CPDFSDK_PageView* pPageView, 24 CPDF_Annot::Subtype nAnnotSubtype); 25 ~CBA_AnnotIterator(); 26 27 CPDFSDK_Annot* GetFirstAnnot(); 28 CPDFSDK_Annot* GetLastAnnot(); 29 CPDFSDK_Annot* GetNextAnnot(CPDFSDK_Annot* pAnnot); 30 CPDFSDK_Annot* GetPrevAnnot(CPDFSDK_Annot* pAnnot); 31 32 private: 33 void GenerateResults(); 34 void CollectAnnots(std::vector<CPDFSDK_Annot*>* pArray); 35 CFX_FloatRect AddToAnnotsList(std::vector<CPDFSDK_Annot*>* sa, size_t idx); 36 void AddSelectedToAnnots(std::vector<CPDFSDK_Annot*>* sa, 37 std::vector<size_t>* aSelect); 38 39 TabOrder m_eTabOrder; 40 CPDFSDK_PageView* m_pPageView; 41 CPDF_Annot::Subtype m_nAnnotSubtype; 42 std::vector<CPDFSDK_Annot*> m_Annots; 43 }; 44 45 #endif // FPDFSDK_CBA_ANNOTITERATOR_H_ 46