| // 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 _PDF_TXTPROC_H_ | |
| #define _PDF_TXTPROC_H_ | |
| class CTextColumn : public CFX_Object | |
| { | |
| public: | |
| FX_FLOAT m_AvgPos; | |
| int m_Count; | |
| int m_TextPos; | |
| }; | |
| class CTextBox : public CFX_Object | |
| { | |
| public: | |
| CFX_WideString m_Text; | |
| FX_FLOAT m_Left; | |
| FX_FLOAT m_Right; | |
| FX_FLOAT m_SpaceWidth; | |
| FX_FLOAT m_Top; | |
| FX_FLOAT m_Bottom; | |
| FX_FLOAT m_FontSizeV; | |
| CTextColumn* m_pColumn; | |
| }; | |
| class CTextBaseLine : public CFX_Object | |
| { | |
| public: | |
| CTextBaseLine(); | |
| ~CTextBaseLine(); | |
| void InsertTextBox(FX_FLOAT leftx, FX_FLOAT rightx, FX_FLOAT topy, FX_FLOAT bottomy, | |
| FX_FLOAT spacew, FX_FLOAT fontsize_v, const CFX_WideString& str); | |
| FX_BOOL GetWidth(FX_FLOAT& leftx, FX_FLOAT& rightx); | |
| FX_BOOL CanMerge(CTextBaseLine* pOther); | |
| void Merge(CTextBaseLine* pOther); | |
| void MergeBoxes(); | |
| void CountChars(int& count, FX_FLOAT& width, int& minchars); | |
| void WriteOutput(CFX_WideString& str, FX_FLOAT leftx, FX_FLOAT width, int iWidth); | |
| FX_FLOAT m_BaseLine; | |
| FX_FLOAT m_Top; | |
| FX_FLOAT m_Bottom; | |
| FX_FLOAT m_MaxFontSizeV; | |
| CFX_PtrArray m_TextList; | |
| }; | |
| class CPDF_PageObject; | |
| class CPDF_TextObject; | |
| class CTextPage : public CFX_Object | |
| { | |
| public: | |
| CTextPage(); | |
| ~CTextPage(); | |
| void ProcessObject(CPDF_PageObject* pObj); | |
| CTextBaseLine* InsertTextBox(CTextBaseLine* pBaseLine, FX_FLOAT basey, FX_FLOAT leftx, | |
| FX_FLOAT rightx, FX_FLOAT topy, FX_FLOAT bottomy, FX_FLOAT spacew, FX_FLOAT fontsize_v, | |
| CFX_ByteString& str, CPDF_Font* pFont); | |
| void WriteOutput(CFX_WideStringArray& lines, int iMinWidth); | |
| FX_BOOL m_bAutoWidth; | |
| FX_BOOL m_bKeepColumn; | |
| FX_BOOL m_bBreakSpace; | |
| FX_BOOL m_bOCR; | |
| private: | |
| CFX_PtrArray m_BaseLines; | |
| CFX_PtrArray m_TextColumns; | |
| void FindColumns(); | |
| CTextColumn* FindColumn(FX_FLOAT xpos); | |
| void BreakSpace(CPDF_TextObject* pTextObj); | |
| }; | |
| #endif |