OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../include/fpdfapi/fpdf_resource.h" | 7 #include "../../include/fpdfapi/fpdf_resource.h" |
8 #include "../../include/fpdfapi/fpdf_pageobj.h" | 8 #include "../../include/fpdfapi/fpdf_pageobj.h" |
9 #include "../../include/fpdftext/fpdf_text.h" | 9 #include "../../include/fpdftext/fpdf_text.h" |
10 #include "../../include/fpdfapi/fpdf_page.h" | 10 #include "../../include/fpdfapi/fpdf_page.h" |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 if(nCount) { | 153 if(nCount) { |
154 m_CharIndex.Add(0); | 154 m_CharIndex.Add(0); |
155 } | 155 } |
156 for(int i = 0; i < nCount; i++) { | 156 for(int i = 0; i < nCount; i++) { |
157 int indexSize = m_CharIndex.GetSize(); | 157 int indexSize = m_CharIndex.GetSize(); |
158 FX_BOOL bNormal = FALSE; | 158 FX_BOOL bNormal = FALSE; |
159 PAGECHAR_INFO charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(i); | 159 PAGECHAR_INFO charinfo = *(PAGECHAR_INFO*)m_charList.GetAt(i); |
160 if(charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { | 160 if(charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { |
161 bNormal = TRUE; | 161 bNormal = TRUE; |
162 } | 162 } |
163 #ifdef FOXIT_CHROME_BUILD | |
164 else if(charinfo.m_Unicode == 0 || IsControlChar(&charinfo)) | 163 else if(charinfo.m_Unicode == 0 || IsControlChar(&charinfo)) |
165 #else | |
166 else if(charinfo.m_Unicode == 0) | |
167 #endif | |
168 bNormal = FALSE; | 164 bNormal = FALSE; |
169 else { | 165 else { |
170 bNormal = TRUE; | 166 bNormal = TRUE; |
171 } | 167 } |
172 if(bNormal) { | 168 if(bNormal) { |
173 if(indexSize % 2) { | 169 if(indexSize % 2) { |
174 m_CharIndex.Add(1); | 170 m_CharIndex.Add(1); |
175 } else { | 171 } else { |
176 if(indexSize <= 0) { | 172 if(indexSize <= 0) { |
177 continue; | 173 continue; |
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 for(int i = start; i < end; i++) { | 1107 for(int i = start; i < end; i++) { |
1112 m_TextBuf.AppendChar(str.GetAt(i)); | 1108 m_TextBuf.AppendChar(str.GetAt(i)); |
1113 m_charList.Add(*(PAGECHAR_INFO*)m_TempCharList.GetAt(i)); | 1109 m_charList.Add(*(PAGECHAR_INFO*)m_TempCharList.GetAt(i)); |
1114 } | 1110 } |
1115 } | 1111 } |
1116 } | 1112 } |
1117 void CPDF_TextPage::AddCharInfoByLRDirection(CFX_WideString& str, int i) | 1113 void CPDF_TextPage::AddCharInfoByLRDirection(CFX_WideString& str, int i) |
1118 { | 1114 { |
1119 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); | 1115 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); |
1120 FX_WCHAR wChar = str.GetAt(i); | 1116 FX_WCHAR wChar = str.GetAt(i); |
1121 #ifdef FOXIT_CHROME_BUILD | |
1122 if(!IsControlChar(&Info)) { | 1117 if(!IsControlChar(&Info)) { |
1123 #else | |
1124 if(wChar != 0xfffe) { | |
1125 #endif | |
1126 Info.m_Index = m_TextBuf.GetLength(); | 1118 Info.m_Index = m_TextBuf.GetLength(); |
1127 if (wChar >= 0xFB00 && wChar <= 0xFB06) { | 1119 if (wChar >= 0xFB00 && wChar <= 0xFB06) { |
1128 FX_LPWSTR pDst = NULL; | 1120 FX_LPWSTR pDst = NULL; |
1129 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); | 1121 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); |
1130 if (nCount >= 1) { | 1122 if (nCount >= 1) { |
1131 pDst = FX_Alloc(FX_WCHAR, nCount); | 1123 pDst = FX_Alloc(FX_WCHAR, nCount); |
1132 if (!pDst) { | 1124 if (!pDst) { |
1133 return; | 1125 return; |
1134 } | 1126 } |
1135 FX_Unicode_GetNormalization(wChar, pDst); | 1127 FX_Unicode_GetNormalization(wChar, pDst); |
(...skipping 14 matching lines...) Expand all Loading... |
1150 } else { | 1142 } else { |
1151 Info.m_Index = -1; | 1143 Info.m_Index = -1; |
1152 } | 1144 } |
1153 if( !m_ParseOptions.m_bGetCharCodeOnly) { | 1145 if( !m_ParseOptions.m_bGetCharCodeOnly) { |
1154 m_charList.Add(Info); | 1146 m_charList.Add(Info); |
1155 } | 1147 } |
1156 } | 1148 } |
1157 void CPDF_TextPage::AddCharInfoByRLDirection(CFX_WideString& str, int i) | 1149 void CPDF_TextPage::AddCharInfoByRLDirection(CFX_WideString& str, int i) |
1158 { | 1150 { |
1159 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); | 1151 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); |
1160 #ifdef FOXIT_CHROME_BUILD | |
1161 if(!IsControlChar(&Info)) { | 1152 if(!IsControlChar(&Info)) { |
1162 #else | |
1163 if(str.GetAt(i) != 0xfffe) { | |
1164 #endif | |
1165 Info.m_Index = m_TextBuf.GetLength(); | 1153 Info.m_Index = m_TextBuf.GetLength(); |
1166 FX_WCHAR wChar = FX_GetMirrorChar(str.GetAt(i), TRUE, FALSE); | 1154 FX_WCHAR wChar = FX_GetMirrorChar(str.GetAt(i), TRUE, FALSE); |
1167 FX_LPWSTR pDst = NULL; | 1155 FX_LPWSTR pDst = NULL; |
1168 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); | 1156 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); |
1169 if (nCount >= 1) { | 1157 if (nCount >= 1) { |
1170 pDst = FX_Alloc(FX_WCHAR, nCount); | 1158 pDst = FX_Alloc(FX_WCHAR, nCount); |
1171 if (!pDst) { | 1159 if (!pDst) { |
1172 return; | 1160 return; |
1173 } | 1161 } |
1174 FX_Unicode_GetNormalization(wChar, pDst); | 1162 FX_Unicode_GetNormalization(wChar, pDst); |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1631 if (0x2D == curChar || 0xAD == curChar) { | 1619 if (0x2D == curChar || 0xAD == curChar) { |
1632 return; | 1620 return; |
1633 } | 1621 } |
1634 } | 1622 } |
1635 while (m_TempTextBuf.GetSize() > 0 && m_TempTextBuf.GetWideString().
GetAt(m_TempTextBuf.GetLength() - 1) == 0x20) { | 1623 while (m_TempTextBuf.GetSize() > 0 && m_TempTextBuf.GetWideString().
GetAt(m_TempTextBuf.GetLength() - 1) == 0x20) { |
1636 m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); | 1624 m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); |
1637 m_TempCharList.Delete(m_TempCharList.GetSize() - 1); | 1625 m_TempCharList.Delete(m_TempCharList.GetSize() - 1); |
1638 } | 1626 } |
1639 PAGECHAR_INFO* cha = (PAGECHAR_INFO*)m_TempCharList.GetAt(m_TempChar
List.GetSize() - 1); | 1627 PAGECHAR_INFO* cha = (PAGECHAR_INFO*)m_TempCharList.GetAt(m_TempChar
List.GetSize() - 1); |
1640 m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); | 1628 m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); |
1641 #ifdef FOXIT_CHROME_BUILD | |
1642 cha->m_Unicode = 0x2; | 1629 cha->m_Unicode = 0x2; |
1643 cha->m_Flag = FPDFTEXT_CHAR_HYPHEN; | 1630 cha->m_Flag = FPDFTEXT_CHAR_HYPHEN; |
1644 m_TempTextBuf.AppendChar(0xfffe); | 1631 m_TempTextBuf.AppendChar(0xfffe); |
1645 #else | |
1646 cha->m_Unicode = 0; | |
1647 m_TempTextBuf.AppendChar(0xfffe); | |
1648 #endif | |
1649 } | 1632 } |
1650 } else { | 1633 } else { |
1651 m_CurlineRect = CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_
Bottom, Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top); | 1634 m_CurlineRect = CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_
Bottom, Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top); |
1652 } | 1635 } |
1653 if (FPDFTEXT_MC_DELAY == bPreMKC) { | 1636 if (FPDFTEXT_MC_DELAY == bPreMKC) { |
1654 ProcessMarkedContent(Obj); | 1637 ProcessMarkedContent(Obj); |
1655 m_pPreTextObj = pTextObj; | 1638 m_pPreTextObj = pTextObj; |
1656 m_perMatrix.Copy(formMatrix); | 1639 m_perMatrix.Copy(formMatrix); |
1657 return; | 1640 return; |
1658 } | 1641 } |
(...skipping 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2848 if (!m_IsParserd || index < 0 || index >= m_LinkList.GetSize()) { | 2831 if (!m_IsParserd || index < 0 || index >= m_LinkList.GetSize()) { |
2849 return; | 2832 return; |
2850 } | 2833 } |
2851 CPDF_LinkExt* link = NULL; | 2834 CPDF_LinkExt* link = NULL; |
2852 link = m_LinkList.GetAt(index); | 2835 link = m_LinkList.GetAt(index); |
2853 if (!link) { | 2836 if (!link) { |
2854 return ; | 2837 return ; |
2855 } | 2838 } |
2856 m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects); | 2839 m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects); |
2857 } | 2840 } |
OLD | NEW |