Index: core/src/fpdftext/fpdf_text_int.cpp |
diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp |
index ab6cae19c2d47bc5f37f35d24dfac77f7346b6e6..8bcf996465b9944585ec9eebfaa68d263f1e1e3f 100644 |
--- a/core/src/fpdftext/fpdf_text_int.cpp |
+++ b/core/src/fpdftext/fpdf_text_int.cpp |
@@ -42,9 +42,11 @@ FX_FLOAT _NormalizeThreshold(FX_FLOAT threshold) |
{ |
if (threshold < 300) { |
return threshold / 2.0f; |
- } else if (threshold < 500) { |
+ } |
+ if (threshold < 500) { |
return threshold / 4.0f; |
- } else if (threshold < 700) { |
+ } |
+ if (threshold < 700) { |
return threshold / 5.0f; |
} |
return threshold / 6.0f; |
@@ -162,12 +164,9 @@ void CPDF_TextPage::NormalizeObjects(FX_BOOL bNormalize) |
{ |
m_ParseOptions.m_bNormalizeObjs = bNormalize; |
} |
-FX_BOOL CPDF_TextPage::IsControlChar(PAGECHAR_INFO* pCharInfo) |
+bool CPDF_TextPage::IsControlChar(const PAGECHAR_INFO& charInfo) |
{ |
- if(!pCharInfo) { |
- return FALSE; |
- } |
- switch(pCharInfo->m_Unicode) { |
+ switch (charInfo.m_Unicode) { |
case 0x2: |
case 0x3: |
case 0x93: |
@@ -176,13 +175,9 @@ FX_BOOL CPDF_TextPage::IsControlChar(PAGECHAR_INFO* pCharInfo) |
case 0x97: |
case 0x98: |
case 0xfffe: |
- if(pCharInfo->m_Flag == FPDFTEXT_CHAR_HYPHEN) { |
- return FALSE; |
- } else { |
- return TRUE; |
- } |
+ return charInfo.m_Flag != FPDFTEXT_CHAR_HYPHEN; |
default: |
- return FALSE; |
+ return false; |
} |
} |
FX_BOOL CPDF_TextPage::ParseTextPage() |
@@ -210,7 +205,7 @@ FX_BOOL CPDF_TextPage::ParseTextPage() |
if(charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { |
bNormal = TRUE; |
} |
- else if(charinfo.m_Unicode == 0 || IsControlChar(&charinfo)) |
+ else if(charinfo.m_Unicode == 0 || IsControlChar(charinfo)) |
bNormal = FALSE; |
else { |
bNormal = TRUE; |
@@ -495,141 +490,6 @@ int CPDF_TextPage::GetIndexAtPos(FX_FLOAT x, FX_FLOAT y, FX_FLOAT xTorelance, FX |
CPDF_Point point(x, y); |
return GetIndexAtPos(point, xTorelance, yTorelance); |
} |
-int CPDF_TextPage::GetOrderByDirection(int order, int direction) const |
-{ |
- if(m_ParseOptions.m_bGetCharCodeOnly) { |
- return -3; |
- } |
- if (!m_IsParsered) { |
- return -3; |
- } |
- if (direction == FPDFTEXT_RIGHT || direction == FPDFTEXT_LEFT) { |
- order += direction; |
- while(order >= 0 && order < m_charList.GetSize()) { |
- PAGECHAR_INFO cinfo = *(PAGECHAR_INFO*)m_charList.GetAt(order); |
- if (cinfo.m_Flag != FPDFTEXT_CHAR_GENERATED) { |
- break; |
- } else { |
- if (cinfo.m_Unicode == TEXT_LINEFEED_CHAR || cinfo.m_Unicode == TEXT_RETURN_CHAR) { |
- order += direction; |
- } else { |
- break; |
- } |
- } |
- } |
- if (order >= m_charList.GetSize()) { |
- order = -2; |
- } |
- return order; |
- } |
- PAGECHAR_INFO charinfo; |
- charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(order); |
- CPDF_Point curPos(charinfo.m_OriginX, charinfo.m_OriginY); |
- FX_FLOAT difPosY = 0.0, minXdif = 1000; |
- int minIndex = -2; |
- int index = order; |
- FX_FLOAT height = charinfo.m_CharBox.Height(); |
- if (direction == FPDFTEXT_UP) { |
- minIndex = -1; |
- while (1) { |
- if (--index < 0) { |
- return -1; |
- } |
- charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(index); |
- if (FXSYS_fabs(charinfo.m_OriginY - curPos.y) > FX_MAX(height, charinfo.m_CharBox.Height()) / 2) { |
- difPosY = charinfo.m_OriginY; |
- minIndex = index; |
- break; |
- } |
- } |
- FX_FLOAT PreXdif = charinfo.m_OriginX - curPos.x; |
- minXdif = PreXdif; |
- if (PreXdif == 0) { |
- return index; |
- } |
- FX_FLOAT curXdif = 0; |
- while (--index >= 0) { |
- charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(index); |
- if (difPosY != charinfo.m_OriginY) { |
- break; |
- } |
- curXdif = charinfo.m_OriginX - curPos.x; |
- if (curXdif == 0) { |
- return index; |
- } |
- int signflag = 0; |
- if (curXdif > 0) { |
- signflag = 1; |
- } else { |
- signflag = -1; |
- } |
- if (signflag * PreXdif < 0) { |
- if (FXSYS_fabs(PreXdif) < FXSYS_fabs(curXdif)) { |
- return index + 1; |
- } else { |
- return index; |
- } |
- } |
- if (FXSYS_fabs(curXdif) < FXSYS_fabs(minXdif)) { |
- minIndex = index; |
- minXdif = curXdif; |
- } |
- PreXdif = curXdif; |
- if (difPosY != charinfo.m_OriginY) { |
- break; |
- } |
- } |
- return minIndex; |
- } else if(FPDFTEXT_DOWN) { |
- minIndex = -2; |
- while (1) { |
- if (++index > m_charList.GetSize() - 1) { |
- return minIndex; |
- } |
- charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(index); |
- if (FXSYS_fabs(charinfo.m_OriginY - curPos.y) > FX_MAX(height, charinfo.m_CharBox.Height()) / 2) { |
- difPosY = charinfo.m_OriginY; |
- minIndex = index; |
- break; |
- } |
- } |
- FX_FLOAT PreXdif = charinfo.m_OriginX - curPos.x; |
- minXdif = PreXdif; |
- if (PreXdif == 0) { |
- return index; |
- } |
- FX_FLOAT curXdif = 0; |
- while (++index < m_charList.GetSize()) { |
- charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(index); |
- if (difPosY != charinfo.m_OriginY) { |
- break; |
- } |
- curXdif = charinfo.m_OriginX - curPos.x; |
- if (curXdif == 0) { |
- return index; |
- } |
- int signflag = 0; |
- if (curXdif > 0) { |
- signflag = 1; |
- } else { |
- signflag = -1; |
- } |
- if (signflag * PreXdif < 0) { |
- if (FXSYS_fabs(PreXdif) < FXSYS_fabs(curXdif)) { |
- return index - 1; |
- } else { |
- return index; |
- } |
- } |
- if (FXSYS_fabs(curXdif) < FXSYS_fabs(minXdif)) { |
- minXdif = curXdif; |
- minIndex = index; |
- } |
- PreXdif = curXdif; |
- } |
- return minIndex; |
- } |
-} |
void CPDF_TextPage::GetCharInfo(int index, FPDF_CHAR_INFO & info) const |
{ |
if(m_ParseOptions.m_bGetCharCodeOnly) { |
@@ -955,7 +815,6 @@ int CPDF_TextPage::GetWordBreak(int index, int direction) const |
return breakPos; |
} |
} |
- return breakPos; |
} else if (direction == FPDFTEXT_RIGHT) { |
while (++breakPos < m_charList.GetSize()) { |
charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(breakPos); |
@@ -963,7 +822,6 @@ int CPDF_TextPage::GetWordBreak(int index, int direction) const |
return breakPos; |
} |
} |
- return breakPos; |
} |
return breakPos; |
} |
@@ -1164,7 +1022,7 @@ void CPDF_TextPage::AddCharInfoByLRDirection(CFX_WideString& str, int i) |
{ |
PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); |
FX_WCHAR wChar = str.GetAt(i); |
- if(!IsControlChar(&Info)) { |
+ if(!IsControlChar(Info)) { |
Info.m_Index = m_TextBuf.GetLength(); |
if (wChar >= 0xFB00 && wChar <= 0xFB06) { |
FX_WCHAR* pDst = NULL; |
@@ -1196,7 +1054,7 @@ void CPDF_TextPage::AddCharInfoByLRDirection(CFX_WideString& str, int i) |
void CPDF_TextPage::AddCharInfoByRLDirection(CFX_WideString& str, int i) |
{ |
PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); |
- if(!IsControlChar(&Info)) { |
+ if(!IsControlChar(Info)) { |
Info.m_Index = m_TextBuf.GetLength(); |
FX_WCHAR wChar = FX_GetMirrorChar(str.GetAt(i), TRUE, FALSE); |
FX_WCHAR* pDst = NULL; |
@@ -1215,9 +1073,8 @@ void CPDF_TextPage::AddCharInfoByRLDirection(CFX_WideString& str, int i) |
} |
FX_Free(pDst); |
return; |
- } else { |
- Info.m_Unicode = wChar; |
} |
+ Info.m_Unicode = wChar; |
m_TextBuf.AppendChar(Info.m_Unicode); |
} else { |
Info.m_Index = -1; |
@@ -1910,11 +1767,9 @@ int32_t CPDF_TextPage::GetTextObjectWritingMode(const CPDF_TextObject* pTextObj) |
v.Set(dX, dY); |
v.Normalize(); |
if (v.y <= 0.0872f) { |
- if (v.x <= 0.0872f) { |
- return m_TextlineDir; |
- } |
- return 0; |
- } else if (v.x <= 0.0872f) { |
+ return v.x <= 0.0872f ? m_TextlineDir : 0; |
+ } |
+ if (v.x <= 0.0872f) { |
return 1; |
} |
return m_TextlineDir; |
@@ -2693,22 +2548,25 @@ FX_BOOL CPDF_LinkExtract::CheckWebLink(CFX_WideString& strBeCheck) |
if (str.Find(L"http://www.") != -1) { |
strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"http://www.")); |
return TRUE; |
- } else if (str.Find(L"http://") != -1) { |
+ } |
+ if (str.Find(L"http://") != -1) { |
strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"http://")); |
return TRUE; |
- } else if (str.Find(L"https://www.") != -1) { |
+ } |
+ if (str.Find(L"https://www.") != -1) { |
strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"https://www.")); |
return TRUE; |
- } else if (str.Find(L"https://") != -1) { |
+ } |
+ if (str.Find(L"https://") != -1) { |
strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"https://")); |
return TRUE; |
- } else if (str.Find(L"www.") != -1) { |
+ } |
+ if (str.Find(L"www.") != -1) { |
strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"www.")); |
strBeCheck = L"http://" + strBeCheck; |
return TRUE; |
- } else { |
- return FALSE; |
} |
+ return FALSE; |
} |
FX_BOOL CPDF_LinkExtract::CheckMailLink(CFX_WideString& str) |
{ |