Re-land else-after-returns
[pdfium.git] / core / src / fpdftext / text_int.h
index 39dc721..ce52371 100644 (file)
@@ -1,19 +1,12 @@
 // 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_TEXT_INT_H_
-#define _PDF_TEXT_INT_H_
-class CPDF_TextParseOptions : public CFX_Object
-{
-public:
-    CPDF_TextParseOptions();
-    FX_BOOL                    m_bCheckObjectOrder;
-    FX_BOOL                    m_bCheckDirection;
-    int                                m_nCheckSameObject;
-};
+#ifndef CORE_SRC_FPDFTEXT_TEXT_INT_H_
+#define CORE_SRC_FPDFTEXT_TEXT_INT_H_
+
 class CPDF_TextPage;
 class CPDF_LinkExtract;
 class CPDF_TextPageFind;
@@ -27,12 +20,12 @@ class CPDF_DocProgressiveSearch;
 #define FPDFTEXT_MC_PASS                       0
 #define FPDFTEXT_MC_DONE                       1
 #define FPDFTEXT_MC_DELAY                      2
-typedef struct _PAGECHAR_INFO: public CFX_Object {
+typedef struct _PAGECHAR_INFO {
     int                                        m_CharCode;
     FX_WCHAR                   m_Unicode;
     FX_FLOAT                   m_OriginX;
     FX_FLOAT                   m_OriginY;
-    FX_INT32                   m_Flag;
+    int32_t                    m_Flag;
     CFX_FloatRect              m_CharBox;
     CPDF_TextObject*   m_pTextObj;
     CFX_AffineMatrix   m_Matrix;
@@ -71,16 +64,15 @@ public:
     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(CFX_FloatRect rect) const;
-    virtual void                                       GetRectsArrayByRect(CFX_FloatRect rect, CFX_RectArray& resRectArray) const;
-    virtual    int                                             GetOrderByDirection(int order, int direction) 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(CFX_FloatRect rect, 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;
@@ -90,31 +82,36 @@ public:
     {
         return &m_charList;
     }
-    static     FX_BOOL                                 IsRectIntersect(CFX_FloatRect rect1, CFX_FloatRect rect2);
+    static     FX_BOOL                                 IsRectIntersect(const CFX_FloatRect& rect1, const CFX_FloatRect& rect2);
     static     FX_BOOL                                 IsLetter(FX_WCHAR unicode);
 private:
     FX_BOOL                                                    IsHyphen(FX_WCHAR curChar);
-    FX_BOOL                                                    IsControlChar(PAGECHAR_INFO* pCharInfo);
+    bool                                                       IsControlChar(const PAGECHAR_INFO& charInfo);
     FX_BOOL                                                    GetBaselineRotate(int start, int end, int& Rotate);
     void                                                       ProcessObject();
-    void                                                       ProcessFormObject(CPDF_FormObject*      pFormObj, CFX_AffineMatrix formMatrix);
+    void                                                       ProcessFormObject(CPDF_FormObject*      pFormObj, const CFX_AffineMatrix& formMatrix);
     void                                                       ProcessTextObject(PDFTEXT_Obj pObj);
-    void                                                       ProcessTextObject(CPDF_TextObject*      pTextObj, CFX_AffineMatrix formMatrix, FX_POSITION ObjPos);
-    int                                                                ProcessInsertObject(const CPDF_TextObject* pObj, CFX_AffineMatrix formMatrix);
+    void                                                       ProcessTextObject(CPDF_TextObject*      pTextObj, const CFX_AffineMatrix& formMatrix, FX_POSITION ObjPos);
+    int                                                                ProcessInsertObject(const CPDF_TextObject* pObj, const CFX_AffineMatrix& formMatrix);
     FX_BOOL                                                    GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info);
     FX_BOOL                                                    IsSameAsPreTextObject(CPDF_TextObject* pTextObj, FX_POSITION ObjPos);
     FX_BOOL                                                    IsSameTextObject(CPDF_TextObject* pTextObj1, CPDF_TextObject* pTextObj2);
     int                                                                GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const;
     void                                                       CloseTempLine();
     void                                                       OnPiece(IFX_BidiChar* pBidi, CFX_WideString& str);
-    FX_INT32   PreMarkedContent(PDFTEXT_Obj pObj);
+    int32_t    PreMarkedContent(PDFTEXT_Obj pObj);
     void               ProcessMarkedContent(PDFTEXT_Obj pObj);
-    void               CheckMarkedContentObject(FX_INT32& start, FX_INT32& nCount) const;
+    void               CheckMarkedContentObject(int32_t& start, int32_t& nCount) const;
     void               FindPreviousTextObject(void);
     void               AddCharInfoByLRDirection(CFX_WideString& str, int i);
     void               AddCharInfoByRLDirection(CFX_WideString& str, int i);
-    FX_INT32   GetTextObjectWritingMode(const CPDF_TextObject* pTextObj);
-    FX_INT32   FindTextlineFlowDirection();
+    int32_t    GetTextObjectWritingMode(const CPDF_TextObject* pTextObj);
+    int32_t    FindTextlineFlowDirection();
+    void SwapTempTextBuf(int32_t iCharListStartAppend,
+                         int32_t iBufStartAppend);
+    FX_BOOL IsRightToLeft(const CPDF_TextObject* pTextObj,
+                          const CPDF_Font* pFont,
+                          int nItems) const;
 protected:
     CPDFText_ParseOptions                      m_ParseOptions;
     CFX_WordArray                                      m_CharIndex;
@@ -141,7 +138,7 @@ public:
     CPDF_TextPageFind(const IPDF_TextPage* pTextPage);
     virtual                                                    ~CPDF_TextPageFind() {};
 public:
-    virtual    FX_BOOL                                 FindFirst(CFX_WideString findwhat, int flags, int startPos = 0);
+    virtual    FX_BOOL                                 FindFirst(const CFX_WideString& findwhat, int flags, int startPos = 0);
     virtual    FX_BOOL                                 FindNext();
     virtual    FX_BOOL                                 FindPrev();
 
@@ -149,12 +146,12 @@ public:
     virtual int                                                GetCurOrder() const;
     virtual int                                                GetMatchedCount()const;
 protected:
-    void                                                       ExtractFindWhat(CFX_WideString findwhat);
-    FX_BOOL                                                    IsMatchWholeWord(CFX_WideString csPageText, int startPos, int endPos);
-    FX_BOOL                                                    ExtractSubString(CFX_WideString& rString, FX_LPCWSTR lpszFullString,
+    void                                                       ExtractFindWhat(const CFX_WideString& findwhat);
+    FX_BOOL                                                    IsMatchWholeWord(const CFX_WideString& csPageText, int startPos, int endPos);
+    FX_BOOL                                                    ExtractSubString(CFX_WideString& rString, const FX_WCHAR* lpszFullString,
             int iSubString, FX_WCHAR chSep);
-    CFX_WideString                                     MakeReverse(const CFX_WideString str);
-    int                                                                ReverseFind(CFX_WideString csPageText, CFX_WideString csWord, int nStartPos, int& WordLength);
+    CFX_WideString                                     MakeReverse(const CFX_WideString& str);
+    int                                                                ReverseFind(const CFX_WideString& csPageText, const CFX_WideString& csWord, int nStartPos, int& WordLength);
     int                                                                GetCharIndex(int index) const;
 private:
     CFX_WordArray                                      m_CharIndex;
@@ -172,7 +169,7 @@ private:
     CFX_RectArray                                      m_resArray;
     FX_BOOL                                                    m_IsFind;
 };
-class CPDF_LinkExt: public CFX_Object
+class CPDF_LinkExt
 {
 public:
     CPDF_LinkExt() {};
@@ -202,14 +199,15 @@ protected:
     void                                                       DeleteLinkList();
     FX_BOOL                                                    CheckWebLink(CFX_WideString& strBeCheck);
     FX_BOOL                                                    CheckMailLink(CFX_WideString& str);
-    FX_BOOL                                                    AppendToLinkList(int start, int count, CFX_WideString strUrl);
+    FX_BOOL                                                    AppendToLinkList(int start, int count, const CFX_WideString& strUrl);
 private:
     LINK_InfoArray                                     m_LinkList;
     const CPDF_TextPage*                       m_pTextPage;
     CFX_WideString                                     m_strPageText;
     FX_BOOL                                                    m_IsParserd;
 };
-FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_LPWSTR pDst);
+FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst);
 void NormalizeString(CFX_WideString& str);
 void NormalizeCompositeChar(FX_WCHAR wChar, CFX_WideString& sDest);
-#endif
+
+#endif  // CORE_SRC_FPDFTEXT_TEXT_INT_H_