91 enum class TextOrientation {
97 enum class GenerateCharacter {
104 enum class MarkedContentState { kPass = 0, kDone, kDelay };
106 struct TransformedTextObject {
107 TransformedTextObject();
108 TransformedTextObject(
const TransformedTextObject& that);
109 ~TransformedTextObject();
116 bool IsHyphen(
wchar_t curChar)
const;
117 void ProcessObject();
118 void ProcessFormObject(CPDF_FormObject* pFormObj,
120 void ProcessTextObject(
const TransformedTextObject& obj);
121 void ProcessTextObject(CPDF_TextObject* pTextObj,
124 CPDF_PageObjectHolder::const_iterator ObjPos);
125 GenerateCharacter ProcessInsertObject(
const CPDF_TextObject* pObj,
127 const CharInfo* GetPrevCharInfo()
const;
128 std::optional<
CharInfo> GenerateCharInfo(
wchar_t unicode);
129 bool IsSameAsPreTextObject(CPDF_TextObject* pTextObj,
131 CPDF_PageObjectHolder::const_iterator iter)
const;
132 bool IsSameTextObject(CPDF_TextObject* pTextObj1,
133 CPDF_TextObject* pTextObj2)
const;
134 void CloseTempLine();
135 MarkedContentState PreMarkedContent(
const CPDF_TextObject* pTextObj);
136 void ProcessMarkedContent(
const TransformedTextObject& obj);
137 void FindPreviousTextObject();
138 void AddCharInfoByLRDirection(
wchar_t wChar,
const CharInfo& info);
139 void AddCharInfoByRLDirection(
wchar_t wChar,
const CharInfo& info);
140 TextOrientation GetTextObjectWritingMode(
141 const CPDF_TextObject* pTextObj)
const;
142 TextOrientation FindTextlineFlowOrientation()
const;
143 void AppendGeneratedCharacter(
wchar_t unicode,
const CFX_Matrix& formMatrix);
144 void SwapTempTextBuf(size_t iCharListStartAppend, size_t iBufStartAppend);
146 const std::function<
bool(
const CharInfo&)>& predicate)
const;
149 DataVector<TextPageCharSegment> m_CharIndices;
150 std::deque<CharInfo> m_CharList;
151 std::deque<CharInfo> m_TempCharList;
152 WideTextBuffer m_TextBuf;
153 WideTextBuffer m_TempTextBuf;
154 UnownedPtr<
const CPDF_TextObject> m_pPrevTextObj;
158 std::vector<CFX_FloatRect> m_SelRects;
159 std::vector<TransformedTextObject> mTextObjects;
160 TextOrientation m_TextlineDir = TextOrientation::kUnknown;
UnownedPtr< CPDF_TextObject > m_pTextObj
CharInfo(const CharInfo &)
int CharIndexFromTextIndex(int text_index) const
WideString GetAllPageText() const
bool GetRect(int rectIndex, CFX_FloatRect *pRect) const
WideString GetTextByRect(const CFX_FloatRect &rect) const
const CharInfo & GetCharInfo(size_t index) const
CFX_FloatRect GetCharLooseBounds(size_t index) const
CharInfo & GetCharInfo(size_t index)
CPDF_TextPage(const CPDF_Page *pPage, bool rtl)
WideString GetTextByObject(const CPDF_TextObject *pTextObj) const
int GetIndexAtPos(const CFX_PointF &point, const CFX_SizeF &tolerance) const
float GetCharFontSize(size_t index) const
int CountRects(int start, int nCount)
int TextIndexFromCharIndex(int char_index) const
std::vector< CFX_FloatRect > GetRectArray(int start, int count) const
WideString GetPageText(int start, int count) const