| OLD | NEW |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #ifndef CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ | 7 #ifndef CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ |
| 8 #define CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ | 8 #define CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ |
| 9 | 9 |
| 10 #include <deque> | 10 #include <deque> |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 FX_FLOAT yTolerance) const; | 100 FX_FLOAT yTolerance) const; |
| 101 CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const; | 101 CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const; |
| 102 CFX_WideString GetPageText(int start = 0, int nCount = -1) const; | 102 CFX_WideString GetPageText(int start = 0, int nCount = -1) const; |
| 103 int CountRects(int start, int nCount); | 103 int CountRects(int start, int nCount); |
| 104 void GetRect(int rectIndex, | 104 void GetRect(int rectIndex, |
| 105 FX_FLOAT& left, | 105 FX_FLOAT& left, |
| 106 FX_FLOAT& top, | 106 FX_FLOAT& top, |
| 107 FX_FLOAT& right, | 107 FX_FLOAT& right, |
| 108 FX_FLOAT& bottom) const; | 108 FX_FLOAT& bottom) const; |
| 109 | 109 |
| 110 static FX_BOOL IsRectIntersect(const CFX_FloatRect& rect1, | 110 static bool IsRectIntersect(const CFX_FloatRect& rect1, |
| 111 const CFX_FloatRect& rect2); | 111 const CFX_FloatRect& rect2); |
| 112 | 112 |
| 113 private: | 113 private: |
| 114 enum class TextOrientation { | 114 enum class TextOrientation { |
| 115 Unknown, | 115 Unknown, |
| 116 Horizontal, | 116 Horizontal, |
| 117 Vertical, | 117 Vertical, |
| 118 }; | 118 }; |
| 119 | 119 |
| 120 enum class GenerateCharacter { | 120 enum class GenerateCharacter { |
| 121 None, | 121 None, |
| 122 Space, | 122 Space, |
| 123 LineBreak, | 123 LineBreak, |
| 124 Hyphen, | 124 Hyphen, |
| 125 }; | 125 }; |
| 126 | 126 |
| 127 FX_BOOL IsHyphen(FX_WCHAR curChar); | 127 bool IsHyphen(FX_WCHAR curChar); |
| 128 bool IsControlChar(const PAGECHAR_INFO& charInfo); | 128 bool IsControlChar(const PAGECHAR_INFO& charInfo); |
| 129 void ProcessObject(); | 129 void ProcessObject(); |
| 130 void ProcessFormObject(CPDF_FormObject* pFormObj, | 130 void ProcessFormObject(CPDF_FormObject* pFormObj, |
| 131 const CFX_Matrix& formMatrix); | 131 const CFX_Matrix& formMatrix); |
| 132 void ProcessTextObject(PDFTEXT_Obj pObj); | 132 void ProcessTextObject(PDFTEXT_Obj pObj); |
| 133 void ProcessTextObject(CPDF_TextObject* pTextObj, | 133 void ProcessTextObject(CPDF_TextObject* pTextObj, |
| 134 const CFX_Matrix& formMatrix, | 134 const CFX_Matrix& formMatrix, |
| 135 const CPDF_PageObjectList* pObjList, | 135 const CPDF_PageObjectList* pObjList, |
| 136 CPDF_PageObjectList::const_iterator ObjPos); | 136 CPDF_PageObjectList::const_iterator ObjPos); |
| 137 GenerateCharacter ProcessInsertObject(const CPDF_TextObject* pObj, | 137 GenerateCharacter ProcessInsertObject(const CPDF_TextObject* pObj, |
| 138 const CFX_Matrix& formMatrix); | 138 const CFX_Matrix& formMatrix); |
| 139 FX_BOOL GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info); | 139 bool GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info); |
| 140 FX_BOOL IsSameAsPreTextObject(CPDF_TextObject* pTextObj, | 140 bool IsSameAsPreTextObject(CPDF_TextObject* pTextObj, |
| 141 const CPDF_PageObjectList* pObjList, | 141 const CPDF_PageObjectList* pObjList, |
| 142 CPDF_PageObjectList::const_iterator ObjPos); | 142 CPDF_PageObjectList::const_iterator ObjPos); |
| 143 FX_BOOL IsSameTextObject(CPDF_TextObject* pTextObj1, | 143 bool IsSameTextObject(CPDF_TextObject* pTextObj1, CPDF_TextObject* pTextObj2); |
| 144 CPDF_TextObject* pTextObj2); | |
| 145 int GetCharWidth(uint32_t charCode, CPDF_Font* pFont) const; | 144 int GetCharWidth(uint32_t charCode, CPDF_Font* pFont) const; |
| 146 void CloseTempLine(); | 145 void CloseTempLine(); |
| 147 FPDFText_MarkedContent PreMarkedContent(PDFTEXT_Obj pObj); | 146 FPDFText_MarkedContent PreMarkedContent(PDFTEXT_Obj pObj); |
| 148 void ProcessMarkedContent(PDFTEXT_Obj pObj); | 147 void ProcessMarkedContent(PDFTEXT_Obj pObj); |
| 149 void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const; | 148 void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const; |
| 150 void FindPreviousTextObject(); | 149 void FindPreviousTextObject(); |
| 151 void AddCharInfoByLRDirection(FX_WCHAR wChar, PAGECHAR_INFO info); | 150 void AddCharInfoByLRDirection(FX_WCHAR wChar, PAGECHAR_INFO info); |
| 152 void AddCharInfoByRLDirection(FX_WCHAR wChar, PAGECHAR_INFO info); | 151 void AddCharInfoByRLDirection(FX_WCHAR wChar, PAGECHAR_INFO info); |
| 153 TextOrientation GetTextObjectWritingMode( | 152 TextOrientation GetTextObjectWritingMode( |
| 154 const CPDF_TextObject* pTextObj) const; | 153 const CPDF_TextObject* pTextObj) const; |
| 155 TextOrientation FindTextlineFlowOrientation() const; | 154 TextOrientation FindTextlineFlowOrientation() const; |
| 156 void AppendGeneratedCharacter(FX_WCHAR unicode, const CFX_Matrix& formMatrix); | 155 void AppendGeneratedCharacter(FX_WCHAR unicode, const CFX_Matrix& formMatrix); |
| 157 | 156 |
| 158 void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend); | 157 void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend); |
| 159 FX_BOOL IsRightToLeft(const CPDF_TextObject* pTextObj, | 158 bool IsRightToLeft(const CPDF_TextObject* pTextObj, |
| 160 const CPDF_Font* pFont, | 159 const CPDF_Font* pFont, |
| 161 int nItems) const; | 160 int nItems) const; |
| 162 | 161 |
| 163 const CPDF_Page* const m_pPage; | 162 const CPDF_Page* const m_pPage; |
| 164 std::vector<uint16_t> m_CharIndex; | 163 std::vector<uint16_t> m_CharIndex; |
| 165 std::deque<PAGECHAR_INFO> m_CharList; | 164 std::deque<PAGECHAR_INFO> m_CharList; |
| 166 std::deque<PAGECHAR_INFO> m_TempCharList; | 165 std::deque<PAGECHAR_INFO> m_TempCharList; |
| 167 CFX_WideTextBuf m_TextBuf; | 166 CFX_WideTextBuf m_TextBuf; |
| 168 CFX_WideTextBuf m_TempTextBuf; | 167 CFX_WideTextBuf m_TempTextBuf; |
| 169 const FPDFText_Direction m_parserflag; | 168 const FPDFText_Direction m_parserflag; |
| 170 CPDF_TextObject* m_pPreTextObj; | 169 CPDF_TextObject* m_pPreTextObj; |
| 171 CFX_Matrix m_perMatrix; | 170 CFX_Matrix m_perMatrix; |
| 172 bool m_bIsParsed; | 171 bool m_bIsParsed; |
| 173 CFX_Matrix m_DisplayMatrix; | 172 CFX_Matrix m_DisplayMatrix; |
| 174 CFX_ArrayTemplate<FPDF_SEGMENT> m_Segments; | 173 CFX_ArrayTemplate<FPDF_SEGMENT> m_Segments; |
| 175 std::vector<CFX_FloatRect> m_SelRects; | 174 std::vector<CFX_FloatRect> m_SelRects; |
| 176 CFX_ArrayTemplate<PDFTEXT_Obj> m_LineObj; | 175 CFX_ArrayTemplate<PDFTEXT_Obj> m_LineObj; |
| 177 TextOrientation m_TextlineDir; | 176 TextOrientation m_TextlineDir; |
| 178 CFX_FloatRect m_CurlineRect; | 177 CFX_FloatRect m_CurlineRect; |
| 179 }; | 178 }; |
| 180 | 179 |
| 181 #endif // CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ | 180 #endif // CORE_FPDFTEXT_CPDF_TEXTPAGE_H_ |
| OLD | NEW |