Home | History | Annotate | Download | only in fpdfdoc
      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