csection.h revision 33357cad1fd1321a2b38d2963e2585f27ce980a2
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 16class CPDF_VariableText; 17class CPVT_LineInfo; 18struct CPVT_WordLine; 19struct CPVT_WordPlace; 20 21class 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