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