• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 CORE_FPDFDOC_CSECTION_H_
8 #define CORE_FPDFDOC_CSECTION_H_
9 
10 #include "core/fpdfdoc/clines.h"
11 #include "core/fpdfdoc/cpvt_sectioninfo.h"
12 #include "core/fpdfdoc/ctypeset.h"
13 #include "core/fxcrt/fx_coordinates.h"
14 #include "core/fxcrt/fx_system.h"
15 
16 class CPDF_VariableText;
17 class CPVT_LineInfo;
18 struct CPVT_WordLine;
19 struct CPVT_WordPlace;
20 
21 class CSection final {
22  public:
23   explicit CSection(CPDF_VariableText* pVT);
24   ~CSection();
25 
26   void ResetAll();
27   void ResetLineArray();
28   void ResetWordArray();
29   void ResetLinePlace();
30   CPVT_WordPlace AddWord(const CPVT_WordPlace& place,
31                          const CPVT_WordInfo& wordinfo);
32   CPVT_WordPlace AddLine(const CPVT_LineInfo& lineinfo);
33   void ClearWords(const CPVT_WordRange& PlaceRange);
34   void ClearWord(const CPVT_WordPlace& place);
35   CPVT_FloatRect Rearrange();
36   CFX_SizeF GetSectionSize(FX_FLOAT fFontSize);
37   CPVT_WordPlace GetBeginWordPlace() const;
38   CPVT_WordPlace GetEndWordPlace() const;
39   CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const;
40   CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const;
41   void UpdateWordPlace(CPVT_WordPlace& place) const;
42   CPVT_WordPlace SearchWordPlace(const CFX_PointF& point) const;
43   CPVT_WordPlace SearchWordPlace(FX_FLOAT fx,
44                                  const CPVT_WordPlace& lineplace) const;
45   CPVT_WordPlace SearchWordPlace(FX_FLOAT fx,
46                                  const CPVT_WordRange& range) const;
47 
48   CPVT_WordPlace SecPlace;
49   CPVT_SectionInfo m_SecInfo;
50   CLines m_LineArray;
51   CPVT_ArrayTemplate<CPVT_WordInfo*> m_WordArray;
52 
53  private:
54   friend class CTypeset;
55 
56   void ClearLeftWords(int32_t nWordIndex);
57   void ClearRightWords(int32_t nWordIndex);
58   void ClearMidWords(int32_t nBeginIndex, int32_t nEndIndex);
59 
60   CPDF_VariableText* const m_pVT;
61 };
62 
63 #endif  // CORE_FPDFDOC_CSECTION_H_
64