Remove typdefs for pointer types in fx_system.h.
[pdfium.git] / core / src / fpdftext / fpdf_text.cpp
index 3781b2a..bb0ed98 100644 (file)
@@ -9,14 +9,14 @@
 #include "../../include/fpdftext/fpdf_text.h"
 #include "txtproc.h"
 #include "text_int.h"
-extern FX_LPCSTR FCS_GetAltStr(FX_WCHAR);
-CFX_ByteString CharFromUnicodeAlt(FX_WCHAR unicode, int destcp, FX_LPCSTR defchar)
+extern const FX_CHAR* FCS_GetAltStr(FX_WCHAR);
+CFX_ByteString CharFromUnicodeAlt(FX_WCHAR unicode, int destcp, const FX_CHAR* defchar)
 {
     if (destcp == 0) {
         if (unicode < 0x80) {
             return CFX_ByteString((char)unicode);
         }
-        FX_LPCSTR altstr = FCS_GetAltStr(unicode);
+        const FX_CHAR* altstr = FCS_GetAltStr(unicode);
         if (altstr) {
             return CFX_ByteString(altstr, -1);
         }
@@ -28,7 +28,7 @@ CFX_ByteString CharFromUnicodeAlt(FX_WCHAR unicode, int destcp, FX_LPCSTR defcha
     if (ret && !bDef) {
         return CFX_ByteString(buf, ret);
     }
-    FX_LPCSTR altstr = FCS_GetAltStr(unicode);
+    const FX_CHAR* altstr = FCS_GetAltStr(unicode);
     if (altstr) {
         return CFX_ByteString(altstr, -1);
     }
@@ -57,10 +57,9 @@ void CTextPage::ProcessObject(CPDF_PageObject* pObject)
     CPDF_TextObject* pText = (CPDF_TextObject*)pObject;
     CPDF_Font* pFont = pText->m_TextState.GetFont();
     int count = pText->CountItems();
-    FX_FLOAT* pPosArray = FX_Alloc(FX_FLOAT, count * 2);
-    if (pPosArray) {
-        pText->CalcCharPos(pPosArray);
-    }
+    FX_FLOAT* pPosArray = FX_Alloc2D(FX_FLOAT, count, 2);
+    pText->CalcCharPos(pPosArray);
+
     FX_FLOAT fontsize_h = pText->m_TextState.GetFontSizeH();
     FX_FLOAT fontsize_v = pText->m_TextState.GetFontSizeV();
     FX_DWORD space_charcode = pFont->CharCodeFromUnicode(' ');
@@ -76,7 +75,7 @@ void CTextPage::ProcessObject(CPDF_PageObject* pObject)
         CFX_AffineMatrix matrix;
         pText->GetTextMatrix(&matrix);
         for (int i = 0; i < pText->m_nChars; i ++) {
-            FX_DWORD charcode = pText->m_nChars == 1 ? (FX_DWORD)(FX_UINTPTR)pText->m_pCharCodes : pText->m_pCharCodes[i];
+            FX_DWORD charcode = pText->m_nChars == 1 ? (FX_DWORD)(uintptr_t)pText->m_pCharCodes : pText->m_pCharCodes[i];
             if (charcode == (FX_DWORD) - 1) {
                 continue;
             }
@@ -114,7 +113,7 @@ void CTextPage::ProcessObject(CPDF_PageObject* pObject)
     int space_count = 0;
     FX_FLOAT last_left = 0, last_right = 0, segment_left = 0, segment_right = 0;
     for (int i = 0; i < pText->m_nChars; i ++) {
-        FX_DWORD charcode = pText->m_nChars == 1 ? (FX_DWORD)(FX_UINTPTR)pText->m_pCharCodes : pText->m_pCharCodes[i];
+        FX_DWORD charcode = pText->m_nChars == 1 ? (FX_DWORD)(uintptr_t)pText->m_pCharCodes : pText->m_pCharCodes[i];
         if (charcode == (FX_DWORD) - 1) {
             continue;
         }
@@ -148,7 +147,6 @@ void CTextPage::ProcessObject(CPDF_PageObject* pObject)
                                   topy, bottomy, spacew, fontsize_v, segment, pFont);
     FX_Free(pPosArray);
 }
-static void ConvertPDFString(CFX_ByteString& result, CFX_ByteString& src, CPDF_Font* pFont);
 CTextBaseLine* CTextPage::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)
@@ -175,7 +173,7 @@ CTextBaseLine* CTextPage::InsertTextBox(CTextBaseLine* pBaseLine, FX_FLOAT basey
         }
     }
     CFX_WideString text;
-    FX_LPCSTR pStr = str;
+    const FX_CHAR* pStr = str;
     int len = str.GetLength(), offset = 0;
     while (offset < len) {
         FX_DWORD ch = pFont->GetNextChar(pStr, len, offset);
@@ -225,44 +223,42 @@ void CTextPage::WriteOutput(CFX_WideStringArray& lines, int iMinWidth)
     }
     if (m_bAutoWidth) {
         int* widths = FX_Alloc(int, m_BaseLines.GetSize());
-        if (widths) {
-            for (i = 0; i < m_BaseLines.GetSize(); i ++) {
-                widths[i] = 0;
-                CTextBaseLine* pBaseLine = (CTextBaseLine*)m_BaseLines.GetAt(i);
-                int TotalChars = 0;
-                FX_FLOAT TotalWidth = 0;
-                int minchars;
-                pBaseLine->CountChars(TotalChars, TotalWidth, minchars);
-                if (TotalChars) {
-                    FX_FLOAT charwidth = TotalWidth / TotalChars;
-                    widths[i] = (int)((MaxRightX - MinLeftX) / charwidth);
-                }
-                if (widths[i] > 1000) {
-                    widths[i] = 1000;
-                }
-                if (widths[i] < minchars) {
-                    widths[i] = minchars;
-                }
+        for (i = 0; i < m_BaseLines.GetSize(); i ++) {
+            widths[i] = 0;
+            CTextBaseLine* pBaseLine = (CTextBaseLine*)m_BaseLines.GetAt(i);
+            int TotalChars = 0;
+            FX_FLOAT TotalWidth = 0;
+            int minchars;
+            pBaseLine->CountChars(TotalChars, TotalWidth, minchars);
+            if (TotalChars) {
+                FX_FLOAT charwidth = TotalWidth / TotalChars;
+                widths[i] = (int)((MaxRightX - MinLeftX) / charwidth);
             }
-            int AvgWidth = 0, widthcount = 0;
-            for (i = 0; i < m_BaseLines.GetSize(); i ++)
-                if (widths[i]) {
-                    AvgWidth += widths[i];
-                    widthcount ++;
-                }
-            AvgWidth = int((FX_FLOAT)AvgWidth / widthcount + 0.5);
-            int MaxWidth = 0;
-            for (i = 0; i < m_BaseLines.GetSize(); i ++)
-                if (MaxWidth < widths[i]) {
-                    MaxWidth = widths[i];
-                }
-            if (MaxWidth > AvgWidth * 6 / 5) {
-                MaxWidth = AvgWidth * 6 / 5;
+            if (widths[i] > 1000) {
+                widths[i] = 1000;
+            }
+            if (widths[i] < minchars) {
+                widths[i] = minchars;
             }
-            FX_Free(widths);
-            if (iMinWidth < MaxWidth) {
-                iMinWidth = MaxWidth;
+        }
+        int AvgWidth = 0, widthcount = 0;
+        for (i = 0; i < m_BaseLines.GetSize(); i ++)
+            if (widths[i]) {
+                AvgWidth += widths[i];
+                widthcount ++;
+            }
+        AvgWidth = int((FX_FLOAT)AvgWidth / widthcount + 0.5);
+        int MaxWidth = 0;
+        for (i = 0; i < m_BaseLines.GetSize(); i ++)
+            if (MaxWidth < widths[i]) {
+                MaxWidth = widths[i];
             }
+        if (MaxWidth > AvgWidth * 6 / 5) {
+            MaxWidth = AvgWidth * 6 / 5;
+        }
+        FX_Free(widths);
+        if (iMinWidth < MaxWidth) {
+            iMinWidth = MaxWidth;
         }
     }
     for (i = 0; i < m_BaseLines.GetSize(); i ++) {
@@ -290,7 +286,7 @@ void CTextPage::WriteOutput(CFX_WideStringArray& lines, int iMinWidth)
 void NormalizeCompositeChar(FX_WCHAR wChar, CFX_WideString& sDest)
 {
     wChar = FX_GetMirrorChar(wChar, TRUE, FALSE);
-    FX_LPWSTR pDst = NULL;
+    FX_WCHAR* pDst = NULL;
     FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst);
     if (nCount < 1 ) {
         sDest += wChar;
@@ -315,11 +311,11 @@ void NormalizeString(CFX_WideString& str)
     }
     CFX_WordArray order;
     FX_BOOL bR2L = FALSE;
-    FX_INT32 start = 0, count = 0, i = 0;
+    int32_t start = 0, count = 0, i = 0;
     int nR2L = 0, nL2R = 0;
     for (i = 0; i < str.GetLength(); i++) {
         if(BidiChar->AppendChar(str.GetAt(i))) {
-            FX_INT32 ret = BidiChar->GetBidiInfo(start, count);
+            int32_t ret = BidiChar->GetBidiInfo(start, count);
             order.Add(start);
             order.Add(count);
             order.Add(ret);
@@ -333,7 +329,7 @@ void NormalizeString(CFX_WideString& str)
         }
     }
     if(BidiChar->EndChar()) {
-        FX_INT32 ret = BidiChar->GetBidiInfo(start, count);
+        int32_t ret = BidiChar->GetBidiInfo(start, count);
         order.Add(start);
         order.Add(count);
         order.Add(ret);