blob: a896c862c70346d069f5e20217f5d0f91a448771 [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
dsinclair114e46a2016-09-29 17:18:21 -07007#ifndef FPDFSDK_CBA_ANNOTITERATOR_H_
8#define FPDFSDK_CBA_ANNOTITERATOR_H_
jaepark611adb82016-08-17 11:34:36 -07009
10#include <vector>
11
dsinclair1727aee2016-09-29 13:12:56 -070012#include "core/fpdfdoc/cpdf_annot.h"
dsinclaira52ab742016-09-29 13:59:29 -070013#include "core/fxcrt/fx_coordinates.h"
14#include "core/fxcrt/fx_string.h"
jaepark611adb82016-08-17 11:34:36 -070015
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
dsinclair114e46a2016-09-29 17:18:21 -070048#endif // FPDFSDK_CBA_ANNOTITERATOR_H_