Initial commit.
[pdfium.git] / core / src / fpdftext / txtproc.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4  \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _PDF_TXTPROC_H_\r
8 #define _PDF_TXTPROC_H_\r
9 class CTextColumn : public CFX_Object\r
10 {\r
11 public:\r
12     FX_FLOAT    m_AvgPos;\r
13     int         m_Count;\r
14     int         m_TextPos;\r
15 };\r
16 class CTextBox : public CFX_Object\r
17 {\r
18 public:\r
19     CFX_WideString      m_Text;\r
20     FX_FLOAT    m_Left;\r
21     FX_FLOAT    m_Right;\r
22     FX_FLOAT    m_SpaceWidth;\r
23     FX_FLOAT    m_Top;\r
24     FX_FLOAT    m_Bottom;\r
25     FX_FLOAT    m_FontSizeV;\r
26     CTextColumn* m_pColumn;\r
27 };\r
28 class CTextBaseLine : public CFX_Object\r
29 {\r
30 public:\r
31     CTextBaseLine();\r
32     ~CTextBaseLine();\r
33     void        InsertTextBox(FX_FLOAT leftx, FX_FLOAT rightx, FX_FLOAT topy, FX_FLOAT bottomy,\r
34                           FX_FLOAT spacew, FX_FLOAT fontsize_v, const CFX_WideString& str);\r
35     FX_BOOL     GetWidth(FX_FLOAT& leftx, FX_FLOAT& rightx);\r
36     FX_BOOL     CanMerge(CTextBaseLine* pOther);\r
37     void        Merge(CTextBaseLine* pOther);\r
38     void        MergeBoxes();\r
39     void        CountChars(int& count, FX_FLOAT& width, int& minchars);\r
40     void        WriteOutput(CFX_WideString& str, FX_FLOAT leftx, FX_FLOAT width, int iWidth);\r
41     FX_FLOAT    m_BaseLine;\r
42     FX_FLOAT    m_Top;\r
43     FX_FLOAT    m_Bottom;\r
44     FX_FLOAT    m_MaxFontSizeV;\r
45     CFX_PtrArray                m_TextList;\r
46 };\r
47 class CPDF_PageObject;\r
48 class CPDF_TextObject;\r
49 class CTextPage : public CFX_Object\r
50 {\r
51 public:\r
52     CTextPage();\r
53     ~CTextPage();\r
54     void        ProcessObject(CPDF_PageObject* pObj);\r
55     CTextBaseLine* InsertTextBox(CTextBaseLine* pBaseLine, FX_FLOAT basey, FX_FLOAT leftx,\r
56                                  FX_FLOAT rightx, FX_FLOAT topy, FX_FLOAT bottomy, FX_FLOAT spacew, FX_FLOAT fontsize_v,\r
57                                  CFX_ByteString& str, CPDF_Font* pFont);\r
58     void        WriteOutput(CFX_WideStringArray& lines, int iMinWidth);\r
59     FX_BOOL     m_bAutoWidth;\r
60     FX_BOOL     m_bKeepColumn;\r
61     FX_BOOL     m_bBreakSpace;\r
62     FX_BOOL     m_bOCR;\r
63 private:\r
64     CFX_PtrArray        m_BaseLines;\r
65     CFX_PtrArray        m_TextColumns;\r
66     void        FindColumns();\r
67     CTextColumn*        FindColumn(FX_FLOAT xpos);\r
68     void        BreakSpace(CPDF_TextObject* pTextObj);\r
69 };\r
70 #endif\r