Fix typos, nits and remove dead code in fpdf_text_int.cpp.
[pdfium.git] / core / src / fpdftext / text_int.h
index f92ca54..0b3b9c8 100644 (file)
@@ -7,10 +7,15 @@
 #ifndef CORE_SRC_FPDFTEXT_TEXT_INT_H_
 #define CORE_SRC_FPDFTEXT_TEXT_INT_H_
 
-class CPDF_TextPage;
+#include "../../include/fpdftext/fpdf_text.h"
+#include "../../include/fxcrt/fx_basic.h"
+
+class CFX_BidiChar;
+class CPDF_DocProgressiveSearch;
+class CPDF_FormObject;
 class CPDF_LinkExtract;
 class CPDF_TextPageFind;
-class CPDF_DocProgressiveSearch;
+
 #define FPDFTEXT_CHAR_ERROR -1
 #define FPDFTEXT_CHAR_NORMAL 0
 #define FPDFTEXT_CHAR_GENERATED 1
@@ -20,6 +25,7 @@ class CPDF_DocProgressiveSearch;
 #define FPDFTEXT_MC_PASS 0
 #define FPDFTEXT_MC_DONE 1
 #define FPDFTEXT_MC_DELAY 2
+
 typedef struct _PAGECHAR_INFO {
   int m_CharCode;
   FX_WCHAR m_Unicode;
@@ -42,53 +48,50 @@ typedef struct {
   CFX_AffineMatrix m_formMatrix;
 } PDFTEXT_Obj;
 typedef CFX_ArrayTemplate<PDFTEXT_Obj> LINEOBJ;
-class CPDF_TextPage : public IPDF_TextPage {
- public:
-  CPDF_TextPage(const CPDF_Page* pPage, int flags = 0);
-  CPDF_TextPage(const CPDF_PageObjects* pPage, int flags = 0);
-  CPDF_TextPage(const CPDF_Page* pPage, CPDFText_ParseOptions ParserOptions);
-  virtual FX_BOOL ParseTextPage();
-  virtual void NormalizeObjects(FX_BOOL bNormalize);
-  virtual FX_BOOL IsParsered() const { return m_IsParsered; }
-  virtual ~CPDF_TextPage(){};
 
+class CPDF_TextPage : public IPDF_TextPage {
  public:
-  virtual int CharIndexFromTextIndex(int TextIndex) const;
-  virtual int TextIndexFromCharIndex(int CharIndex) const;
-  virtual int CountChars() const;
-  virtual void GetCharInfo(int index, FPDF_CHAR_INFO& info) const;
-  virtual void GetRectArray(int start,
-                            int nCount,
-                            CFX_RectArray& rectArray) const;
-  virtual int GetIndexAtPos(CPDF_Point point,
-                            FX_FLOAT xTorelance,
-                            FX_FLOAT yTorelance) const;
-  virtual int GetIndexAtPos(FX_FLOAT x,
-                            FX_FLOAT y,
-                            FX_FLOAT xTorelance,
-                            FX_FLOAT yTorelance) const;
-  virtual CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const;
-  virtual void GetRectsArrayByRect(const CFX_FloatRect& rect,
-                                   CFX_RectArray& resRectArray) const;
-  virtual CFX_WideString GetPageText(int start = 0, int nCount = -1) const;
-
-  virtual int CountRects(int start, int nCount);
-  virtual void GetRect(int rectIndex,
-                       FX_FLOAT& left,
-                       FX_FLOAT& top,
-                       FX_FLOAT& right,
-                       FX_FLOAT& bottom) const;
-  virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate);
-  virtual FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate);
-  virtual int CountBoundedSegments(FX_FLOAT left,
-                                   FX_FLOAT top,
-                                   FX_FLOAT right,
-                                   FX_FLOAT bottom,
-                                   FX_BOOL bContains = FALSE);
-  virtual void GetBoundedSegment(int index, int& start, int& count) const;
-  virtual int GetWordBreak(int index, int direction) const;
+  CPDF_TextPage(const CPDF_Page* pPage, int flags);
+  ~CPDF_TextPage() override {}
+
+  // IPDF_TextPage
+  FX_BOOL ParseTextPage() override;
+  void NormalizeObjects(FX_BOOL bNormalize) override;
+  bool IsParsed() const override { return m_bIsParsed; }
+  int CharIndexFromTextIndex(int TextIndex) const override;
+  int TextIndexFromCharIndex(int CharIndex) const override;
+  int CountChars() const override;
+  void GetCharInfo(int index, FPDF_CHAR_INFO& info) const override;
+  void GetRectArray(int start,
+                    int nCount,
+                    CFX_RectArray& rectArray) const override;
+  int GetIndexAtPos(CPDF_Point point,
+                    FX_FLOAT xTolerance,
+                    FX_FLOAT yTolerance) const override;
+  int GetIndexAtPos(FX_FLOAT x,
+                    FX_FLOAT y,
+                    FX_FLOAT xTolerance,
+                    FX_FLOAT yTolerance) const override;
+  CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const override;
+  void GetRectsArrayByRect(const CFX_FloatRect& rect,
+                           CFX_RectArray& resRectArray) const override;
+  CFX_WideString GetPageText(int start = 0, int nCount = -1) const override;
+  int CountRects(int start, int nCount) override;
+  void GetRect(int rectIndex,
+               FX_FLOAT& left,
+               FX_FLOAT& top,
+               FX_FLOAT& right,
+               FX_FLOAT& bottom) const override;
+  FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) override;
+  FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) override;
+  int CountBoundedSegments(FX_FLOAT left,
+                           FX_FLOAT top,
+                           FX_FLOAT right,
+                           FX_FLOAT bottom,
+                           FX_BOOL bContains = FALSE) override;
+  void GetBoundedSegment(int index, int& start, int& count) const override;
+  int GetWordBreak(int index, int direction) const override;
 
- public:
   const PAGECHAR_InfoArray* GetCharList() const { return &m_charList; }
   static FX_BOOL IsRectIntersect(const CFX_FloatRect& rect1,
                                  const CFX_FloatRect& rect2);
@@ -113,7 +116,7 @@ class CPDF_TextPage : public IPDF_TextPage {
                            CPDF_TextObject* pTextObj2);
   int GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const;
   void CloseTempLine();
-  void OnPiece(IFX_BidiChar* pBidi, CFX_WideString& str);
+  void OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str);
   int32_t PreMarkedContent(PDFTEXT_Obj pObj);
   void ProcessMarkedContent(PDFTEXT_Obj pObj);
   void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const;
@@ -127,41 +130,39 @@ class CPDF_TextPage : public IPDF_TextPage {
                         const CPDF_Font* pFont,
                         int nItems) const;
 
- protected:
   CPDFText_ParseOptions m_ParseOptions;
   CFX_WordArray m_CharIndex;
-  const CPDF_PageObjects* m_pPage;
+  const CPDF_PageObjects* const m_pPage;
   PAGECHAR_InfoArray m_charList;
   CFX_WideTextBuf m_TextBuf;
   PAGECHAR_InfoArray m_TempCharList;
   CFX_WideTextBuf m_TempTextBuf;
-  int m_parserflag;
+  const int m_parserflag;
   CPDF_TextObject* m_pPreTextObj;
   CFX_AffineMatrix m_perMatrix;
-  FX_BOOL m_IsParsered;
+  bool m_bIsParsed;
   CFX_AffineMatrix m_DisplayMatrix;
-
   SEGMENT_Array m_Segment;
   CFX_RectArray m_SelRects;
   LINEOBJ m_LineObj;
   int32_t m_TextlineDir;
   CFX_FloatRect m_CurlineRect;
 };
-class CPDF_TextPageFind : public IPDF_TextPageFind {
- public:
-  CPDF_TextPageFind(const IPDF_TextPage* pTextPage);
-  virtual ~CPDF_TextPageFind(){};
 
+class CPDF_TextPageFind : public IPDF_TextPageFind {
  public:
-  virtual FX_BOOL FindFirst(const CFX_WideString& findwhat,
-                            int flags,
-                            int startPos = 0);
-  virtual FX_BOOL FindNext();
-  virtual FX_BOOL FindPrev();
-
-  virtual void GetRectArray(CFX_RectArray& rects) const;
-  virtual int GetCurOrder() const;
-  virtual int GetMatchedCount() const;
+  explicit CPDF_TextPageFind(const IPDF_TextPage* pTextPage);
+  ~CPDF_TextPageFind() override {}
+
+  // IPDF_TextPageFind
+  FX_BOOL FindFirst(const CFX_WideString& findwhat,
+                    int flags,
+                    int startPos = 0) override;
+  FX_BOOL FindNext() override;
+  FX_BOOL FindPrev() override;
+  void GetRectArray(CFX_RectArray& rects) const override;
+  int GetCurOrder() const override;
+  int GetMatchedCount() const override;
 
  protected:
   void ExtractFindWhat(const CFX_WideString& findwhat);
@@ -195,30 +196,34 @@ class CPDF_TextPageFind : public IPDF_TextPageFind {
   CFX_RectArray m_resArray;
   FX_BOOL m_IsFind;
 };
+
 class CPDF_LinkExt {
  public:
-  CPDF_LinkExt(){};
+  CPDF_LinkExt() {}
   int m_Start;
   int m_Count;
   CFX_WideString m_strUrl;
-  virtual ~CPDF_LinkExt(){};
+  virtual ~CPDF_LinkExt() {}
 };
+
 typedef CFX_ArrayTemplate<CPDF_LinkExt*> LINK_InfoArray;
+
 class CPDF_LinkExtract : public IPDF_LinkExtract {
  public:
   CPDF_LinkExtract();
-  virtual ~CPDF_LinkExtract();
-  virtual FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage);
-  virtual FX_BOOL IsExtract() const { return m_IsParserd; }
+  ~CPDF_LinkExtract() override;
 
- public:
-  virtual int CountLinks() const;
-  virtual CFX_WideString GetURL(int index) const;
-  virtual void GetBoundedSegment(int index, int& start, int& count) const;
-  virtual void GetRects(int index, CFX_RectArray& rects) const;
+  // IPDF_LinkExtract
+  FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) override;
+  int CountLinks() const override;
+  CFX_WideString GetURL(int index) const override;
+  void GetBoundedSegment(int index, int& start, int& count) const override;
+  void GetRects(int index, CFX_RectArray& rects) const override;
+
+  FX_BOOL IsExtract() const { return m_bIsParsed; }
 
  protected:
-  void parserLink();
+  void ParseLink();
   void DeleteLinkList();
   FX_BOOL CheckWebLink(CFX_WideString& strBeCheck);
   FX_BOOL CheckMailLink(CFX_WideString& str);
@@ -228,10 +233,15 @@ class CPDF_LinkExtract : public IPDF_LinkExtract {
   LINK_InfoArray m_LinkList;
   const CPDF_TextPage* m_pTextPage;
   CFX_WideString m_strPageText;
-  FX_BOOL m_IsParserd;
+  bool m_bIsParsed;
 };
+
 FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst);
 void NormalizeString(CFX_WideString& str);
 void NormalizeCompositeChar(FX_WCHAR wChar, CFX_WideString& sDest);
+void GetTextStream_Unicode(CFX_WideTextBuf& buffer,
+                           CPDF_PageObjects* pPage,
+                           FX_BOOL bUseLF,
+                           CFX_PtrArray* pObjArray);
 
 #endif  // CORE_SRC_FPDFTEXT_TEXT_INT_H_