Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: core/fpdftext/include/cpdf_textpage.h

Issue 2064223002: Clean up CPDF_TextPage. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Fix breakage, do a bit more refactoring Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdftext/fpdf_text_int.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_INCLUDE_CPDF_TEXTPAGE_H_ 7 #ifndef CORE_FPDFTEXT_INCLUDE_CPDF_TEXTPAGE_H_
8 #define CORE_FPDFTEXT_INCLUDE_CPDF_TEXTPAGE_H_ 8 #define CORE_FPDFTEXT_INCLUDE_CPDF_TEXTPAGE_H_
9 9
10 #include <deque> 10 #include <deque>
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 FX_FLOAT& top, 92 FX_FLOAT& top,
93 FX_FLOAT& right, 93 FX_FLOAT& right,
94 FX_FLOAT& bottom) const; 94 FX_FLOAT& bottom) const;
95 int CountBoundedSegments(FX_FLOAT left, 95 int CountBoundedSegments(FX_FLOAT left,
96 FX_FLOAT top, 96 FX_FLOAT top,
97 FX_FLOAT right, 97 FX_FLOAT right,
98 FX_FLOAT bottom, 98 FX_FLOAT bottom,
99 FX_BOOL bContains = FALSE); 99 FX_BOOL bContains = FALSE);
100 100
101 private: 101 private:
102 enum class TextOrientation {
103 Unknown,
104 Horizontal,
105 Vertical,
106 };
107
108 enum class GenerateCharacter {
109 None,
110 Space,
111 LineBreak,
112 Hyphen,
113 };
114
102 FX_BOOL IsHyphen(FX_WCHAR curChar); 115 FX_BOOL IsHyphen(FX_WCHAR curChar);
103 bool IsControlChar(const PAGECHAR_INFO& charInfo); 116 bool IsControlChar(const PAGECHAR_INFO& charInfo);
104 void ProcessObject(); 117 void ProcessObject();
105 void ProcessFormObject(CPDF_FormObject* pFormObj, 118 void ProcessFormObject(CPDF_FormObject* pFormObj,
106 const CFX_Matrix& formMatrix); 119 const CFX_Matrix& formMatrix);
107 void ProcessTextObject(PDFTEXT_Obj pObj); 120 void ProcessTextObject(PDFTEXT_Obj pObj);
108 void ProcessTextObject(CPDF_TextObject* pTextObj, 121 void ProcessTextObject(CPDF_TextObject* pTextObj,
109 const CFX_Matrix& formMatrix, 122 const CFX_Matrix& formMatrix,
110 const CPDF_PageObjectList* pObjList, 123 const CPDF_PageObjectList* pObjList,
111 CPDF_PageObjectList::const_iterator ObjPos); 124 CPDF_PageObjectList::const_iterator ObjPos);
112 int ProcessInsertObject(const CPDF_TextObject* pObj, 125 GenerateCharacter ProcessInsertObject(const CPDF_TextObject* pObj,
113 const CFX_Matrix& formMatrix); 126 const CFX_Matrix& formMatrix);
114 FX_BOOL GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info); 127 FX_BOOL GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info);
115 FX_BOOL IsSameAsPreTextObject(CPDF_TextObject* pTextObj, 128 FX_BOOL IsSameAsPreTextObject(CPDF_TextObject* pTextObj,
116 const CPDF_PageObjectList* pObjList, 129 const CPDF_PageObjectList* pObjList,
117 CPDF_PageObjectList::const_iterator ObjPos); 130 CPDF_PageObjectList::const_iterator ObjPos);
118 FX_BOOL IsSameTextObject(CPDF_TextObject* pTextObj1, 131 FX_BOOL IsSameTextObject(CPDF_TextObject* pTextObj1,
119 CPDF_TextObject* pTextObj2); 132 CPDF_TextObject* pTextObj2);
120 int GetCharWidth(uint32_t charCode, CPDF_Font* pFont) const; 133 int GetCharWidth(uint32_t charCode, CPDF_Font* pFont) const;
121 void CloseTempLine(); 134 void CloseTempLine();
122 FPDFText_MarkedContent PreMarkedContent(PDFTEXT_Obj pObj); 135 FPDFText_MarkedContent PreMarkedContent(PDFTEXT_Obj pObj);
123 void ProcessMarkedContent(PDFTEXT_Obj pObj); 136 void ProcessMarkedContent(PDFTEXT_Obj pObj);
124 void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const; 137 void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const;
125 void FindPreviousTextObject(void); 138 void FindPreviousTextObject();
126 void AddCharInfoByLRDirection(FX_WCHAR wChar, PAGECHAR_INFO info); 139 void AddCharInfoByLRDirection(FX_WCHAR wChar, PAGECHAR_INFO info);
127 void AddCharInfoByRLDirection(FX_WCHAR wChar, PAGECHAR_INFO info); 140 void AddCharInfoByRLDirection(FX_WCHAR wChar, PAGECHAR_INFO info);
128 int32_t GetTextObjectWritingMode(const CPDF_TextObject* pTextObj); 141 TextOrientation GetTextObjectWritingMode(
129 int32_t FindTextlineFlowDirection(); 142 const CPDF_TextObject* pTextObj) const;
143 TextOrientation FindTextlineFlowOrientation() const;
144 void AppendGeneratedCharacter(FX_WCHAR unicode, const CFX_Matrix& formMatrix);
130 145
131 void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend); 146 void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend);
132 FX_BOOL IsRightToLeft(const CPDF_TextObject* pTextObj, 147 FX_BOOL IsRightToLeft(const CPDF_TextObject* pTextObj,
133 const CPDF_Font* pFont, 148 const CPDF_Font* pFont,
134 int nItems) const; 149 int nItems) const;
135 150
136 const CPDF_Page* const m_pPage; 151 const CPDF_Page* const m_pPage;
137 std::vector<uint16_t> m_CharIndex; 152 std::vector<uint16_t> m_CharIndex;
138 std::deque<PAGECHAR_INFO> m_CharList; 153 std::deque<PAGECHAR_INFO> m_CharList;
139 std::deque<PAGECHAR_INFO> m_TempCharList; 154 std::deque<PAGECHAR_INFO> m_TempCharList;
140 CFX_WideTextBuf m_TextBuf; 155 CFX_WideTextBuf m_TextBuf;
141 CFX_WideTextBuf m_TempTextBuf; 156 CFX_WideTextBuf m_TempTextBuf;
142 const FPDFText_Direction m_parserflag; 157 const FPDFText_Direction m_parserflag;
143 CPDF_TextObject* m_pPreTextObj; 158 CPDF_TextObject* m_pPreTextObj;
144 CFX_Matrix m_perMatrix; 159 CFX_Matrix m_perMatrix;
145 bool m_bIsParsed; 160 bool m_bIsParsed;
146 CFX_Matrix m_DisplayMatrix; 161 CFX_Matrix m_DisplayMatrix;
147 CFX_ArrayTemplate<FPDF_SEGMENT> m_Segments; 162 CFX_ArrayTemplate<FPDF_SEGMENT> m_Segments;
148 std::vector<CFX_FloatRect> m_SelRects; 163 std::vector<CFX_FloatRect> m_SelRects;
149 CFX_ArrayTemplate<PDFTEXT_Obj> m_LineObj; 164 CFX_ArrayTemplate<PDFTEXT_Obj> m_LineObj;
150 int32_t m_TextlineDir; 165 TextOrientation m_TextlineDir;
151 CFX_FloatRect m_CurlineRect; 166 CFX_FloatRect m_CurlineRect;
152 }; 167 };
153 168
154 #endif // CORE_FPDFTEXT_INCLUDE_CPDF_TEXTPAGE_H_ 169 #endif // CORE_FPDFTEXT_INCLUDE_CPDF_TEXTPAGE_H_
OLDNEW
« no previous file with comments | « core/fpdftext/fpdf_text_int.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698