| // Copyright 2014 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef _REFLOWED_TEXT_PAGE_H |
| #define _REFLOWED_TEXT_PAGE_H |
| #include "../../include/reflow/reflowengine.h" |
| #include "../../src/reflow/reflowedpage.h" |
| typedef CFX_SegmentedArray<CRF_CharData*> CRF_CharDataPtrArray; |
| typedef CFX_SegmentedArray<FX_INT32> CFX_CountBSINT32Array; |
| class CRF_TextPage : public IPDF_TextPage |
| { |
| public: |
| CRF_TextPage(IPDF_ReflowedPage* pRefPage); |
| |
| virtual ~CRF_TextPage() ; |
| FX_BOOL ParseTextPage(); |
| void NormalizeObjects(FX_BOOL bNormalize) |
| { |
| return; |
| }; |
| |
| FX_BOOL IsParsered() const; |
| public: |
| |
| int CharIndexFromTextIndex(int TextIndex) const; |
| |
| int TextIndexFromCharIndex(int CharIndex) const; |
| |
| |
| int CountChars() const; |
| |
| virtual void GetCharInfo(int index, FPDF_CHAR_INFO & info) const; |
| |
| void GetRectArray(int start, int nCount, CFX_RectArray& rectArray) const; |
| |
| |
| int GetIndexAtPos(CPDF_Point point, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const; |
| |
| int GetIndexAtPos(FX_FLOAT x, FX_FLOAT y, FX_FLOAT xTorelance, FX_FLOAT yTorelance) const; |
| |
| virtual int GetOrderByDirection(int index, int direction) const; |
| |
| CFX_WideString GetTextByRect(CFX_FloatRect rect) const; |
| |
| void GetRectsArrayByRect(CFX_FloatRect rect, CFX_RectArray& resRectArray) const; |
| |
| |
| int CountRects(int start, int nCount); |
| |
| virtual void GetRect(int rectIndex, FX_FLOAT& left, FX_FLOAT& top, FX_FLOAT& right, FX_FLOAT &bottom) const; |
| virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate); |
| virtual FX_BOOL GetBaselineRotate(CFX_FloatRect rect, int& Rotate); |
| |
| virtual int CountBoundedSegments(FX_FLOAT left, FX_FLOAT top, FX_FLOAT right, FX_FLOAT bottom, FX_BOOL bContains = FALSE); |
| |
| virtual void GetBoundedSegment(int index, int& start, int& count) const; |
| |
| |
| int GetWordBreak(int index, int direction) const; |
| |
| CFX_WideString GetPageText(int start, int nCount = -1 ) const; |
| private: |
| CPDF_ReflowedPage* m_pRefPage; |
| CRF_CharDataPtrArray* m_pDataList; |
| CFX_RectArray m_rectArray; |
| CFX_CountBSINT32Array* m_CountBSArray; |
| }; |
| #endif |