• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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_SRC_REFLOW_REFLOWEDTEXTPAGE_H_
8 #define CORE_SRC_REFLOW_REFLOWEDTEXTPAGE_H_
9 
10 #include "../../include/reflow/reflowengine.h"
11 #include "../../src/reflow/reflowedpage.h"
12 
13 typedef CFX_SegmentedArray<CRF_CharData*> CRF_CharDataPtrArray;
14 typedef CFX_SegmentedArray<FX_INT32> CFX_CountBSINT32Array;
15 class CRF_TextPage : public IPDF_TextPage
16 {
17 public:
18     CRF_TextPage(IPDF_ReflowedPage* pRefPage);
19 
20     virtual ~CRF_TextPage() ;
21     FX_BOOL			ParseTextPage();
NormalizeObjects(FX_BOOL bNormalize)22     void			NormalizeObjects(FX_BOOL bNormalize)
23     {
24         return;
25     };
26 
27     FX_BOOL			IsParsered() const;
28 public:
29 
30     int CharIndexFromTextIndex(int TextIndex) const;
31 
32     int TextIndexFromCharIndex(int CharIndex) const;
33 
34 
35     int				CountChars() const;
36 
37     virtual	void	GetCharInfo(int index, FPDF_CHAR_INFO & info) const;
38 
39     void			GetRectArray(int start, int nCount, CFX_RectArray& rectArray) const;
40 
41 
42     int				GetIndexAtPos(CPDF_Point point, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const;
43 
44     int				GetIndexAtPos(FX_FLOAT x, FX_FLOAT y, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const;
45 
46     virtual	int				GetOrderByDirection(int index, int direction) const;
47 
48     CFX_WideString	GetTextByRect(CFX_FloatRect rect) const;
49 
50     void			GetRectsArrayByRect(CFX_FloatRect rect, CFX_RectArray& resRectArray) const;
51 
52 
53     int				CountRects(int start, int nCount);
54 
55     virtual	void			GetRect(int rectIndex, FX_FLOAT& left, FX_FLOAT& top, FX_FLOAT& right, FX_FLOAT &bottom) const;
56     virtual	FX_BOOL			GetBaselineRotate(int rectIndex, int& Rotate);
57     virtual FX_BOOL			GetBaselineRotate(CFX_FloatRect rect, int& Rotate);
58 
59     virtual	int				CountBoundedSegments(FX_FLOAT left, FX_FLOAT top, FX_FLOAT right, FX_FLOAT bottom, FX_BOOL bContains = FALSE);
60 
61     virtual	void			GetBoundedSegment(int index, int& start, int& count) const;
62 
63 
64     int				GetWordBreak(int index, int direction) const;
65 
66     CFX_WideString	GetPageText(int start, int nCount = -1 ) const;
67 private:
68     CPDF_ReflowedPage*		m_pRefPage;
69     CRF_CharDataPtrArray*	m_pDataList;
70     CFX_RectArray			m_rectArray;
71     CFX_CountBSINT32Array*	m_CountBSArray;
72 };
73 
74 #endif  // CORE_SRC_REFLOW_REFLOWEDTEXTPAGE_H_
75