blob: aa0ad2d72b0141330835e95721d9aac15beb694d [file] [log] [blame]
jaepark611adb82016-08-17 11:34:36 -07001// 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_INCLUDE_CBA_ANNOTITERATOR_H_
8#define FPDFSDK_INCLUDE_CBA_ANNOTITERATOR_H_
9
10#include <vector>
11
jaepark956553e2016-08-31 06:49:27 -070012#include "core/fpdfdoc/include/cpdf_annot.h"
jaepark611adb82016-08-17 11:34:36 -070013#include "core/fxcrt/include/fx_coordinates.h"
14#include "core/fxcrt/include/fx_string.h"
15
16class CPDFSDK_Annot;
17class CPDFSDK_PageView;
18
19class CBA_AnnotIterator {
20 public:
21 enum TabOrder { STRUCTURE = 0, ROW, COLUMN };
22
23 CBA_AnnotIterator(CPDFSDK_PageView* pPageView,
jaepark956553e2016-08-31 06:49:27 -070024 CPDF_Annot::Subtype nAnnotSubtype);
jaepark611adb82016-08-17 11:34:36 -070025 ~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 static CFX_FloatRect GetAnnotRect(const CPDFSDK_Annot* pAnnot);
35
36 // Function signature compatible with std::sort().
37 static bool CompareByLeftAscending(const CPDFSDK_Annot* p1,
38 const CPDFSDK_Annot* p2);
39 static bool CompareByTopDescending(const CPDFSDK_Annot* p1,
40 const CPDFSDK_Annot* p2);
41
42 TabOrder m_eTabOrder;
43 CPDFSDK_PageView* m_pPageView;
jaepark956553e2016-08-31 06:49:27 -070044 CPDF_Annot::Subtype m_nAnnotSubtype;
jaepark611adb82016-08-17 11:34:36 -070045 std::vector<CPDFSDK_Annot*> m_Annots;
46};
47
48#endif // FPDFSDK_INCLUDE_CBA_ANNOTITERATOR_H_