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 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1160 { | 1160 { |
1161 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); | 1161 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); |
1162 FX_WCHAR wChar = str.GetAt(i); | 1162 FX_WCHAR wChar = str.GetAt(i); |
1163 if(!IsControlChar(&Info)) { | 1163 if(!IsControlChar(&Info)) { |
1164 Info.m_Index = m_TextBuf.GetLength(); | 1164 Info.m_Index = m_TextBuf.GetLength(); |
1165 if (wChar >= 0xFB00 && wChar <= 0xFB06) { | 1165 if (wChar >= 0xFB00 && wChar <= 0xFB06) { |
1166 FX_LPWSTR pDst = NULL; | 1166 FX_LPWSTR pDst = NULL; |
1167 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); | 1167 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); |
1168 if (nCount >= 1) { | 1168 if (nCount >= 1) { |
1169 pDst = FX_Alloc(FX_WCHAR, nCount); | 1169 pDst = FX_Alloc(FX_WCHAR, nCount); |
1170 if (!pDst) { | |
1171 return; | |
1172 } | |
1173 FX_Unicode_GetNormalization(wChar, pDst); | 1170 FX_Unicode_GetNormalization(wChar, pDst); |
1174 for (int nIndex = 0; nIndex < nCount; nIndex++) { | 1171 for (int nIndex = 0; nIndex < nCount; nIndex++) { |
1175 PAGECHAR_INFO Info2 = Info; | 1172 PAGECHAR_INFO Info2 = Info; |
1176 Info2.m_Unicode = pDst[nIndex]; | 1173 Info2.m_Unicode = pDst[nIndex]; |
1177 Info2.m_Flag = FPDFTEXT_CHAR_PIECE; | 1174 Info2.m_Flag = FPDFTEXT_CHAR_PIECE; |
1178 m_TextBuf.AppendChar(Info2.m_Unicode); | 1175 m_TextBuf.AppendChar(Info2.m_Unicode); |
1179 if( !m_ParseOptions.m_bGetCharCodeOnly) { | 1176 if( !m_ParseOptions.m_bGetCharCodeOnly) { |
1180 m_charList.Add(Info2); | 1177 m_charList.Add(Info2); |
1181 } | 1178 } |
1182 } | 1179 } |
(...skipping 12 matching lines...) Expand all Loading... |
1195 void CPDF_TextPage::AddCharInfoByRLDirection(CFX_WideString& str, int i) | 1192 void CPDF_TextPage::AddCharInfoByRLDirection(CFX_WideString& str, int i) |
1196 { | 1193 { |
1197 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); | 1194 PAGECHAR_INFO Info = *(PAGECHAR_INFO*)m_TempCharList.GetAt(i); |
1198 if(!IsControlChar(&Info)) { | 1195 if(!IsControlChar(&Info)) { |
1199 Info.m_Index = m_TextBuf.GetLength(); | 1196 Info.m_Index = m_TextBuf.GetLength(); |
1200 FX_WCHAR wChar = FX_GetMirrorChar(str.GetAt(i), TRUE, FALSE); | 1197 FX_WCHAR wChar = FX_GetMirrorChar(str.GetAt(i), TRUE, FALSE); |
1201 FX_LPWSTR pDst = NULL; | 1198 FX_LPWSTR pDst = NULL; |
1202 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); | 1199 FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); |
1203 if (nCount >= 1) { | 1200 if (nCount >= 1) { |
1204 pDst = FX_Alloc(FX_WCHAR, nCount); | 1201 pDst = FX_Alloc(FX_WCHAR, nCount); |
1205 if (!pDst) { | |
1206 return; | |
1207 } | |
1208 FX_Unicode_GetNormalization(wChar, pDst); | 1202 FX_Unicode_GetNormalization(wChar, pDst); |
1209 for (int nIndex = 0; nIndex < nCount; nIndex++) { | 1203 for (int nIndex = 0; nIndex < nCount; nIndex++) { |
1210 PAGECHAR_INFO Info2 = Info; | 1204 PAGECHAR_INFO Info2 = Info; |
1211 Info2.m_Unicode = pDst[nIndex]; | 1205 Info2.m_Unicode = pDst[nIndex]; |
1212 Info2.m_Flag = FPDFTEXT_CHAR_PIECE; | 1206 Info2.m_Flag = FPDFTEXT_CHAR_PIECE; |
1213 m_TextBuf.AppendChar(Info2.m_Unicode); | 1207 m_TextBuf.AppendChar(Info2.m_Unicode); |
1214 if( !m_ParseOptions.m_bGetCharCodeOnly) { | 1208 if( !m_ParseOptions.m_bGetCharCodeOnly) { |
1215 m_charList.Add(Info2); | 1209 m_charList.Add(Info2); |
1216 } | 1210 } |
1217 } | 1211 } |
(...skipping 1616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2834 if (!m_IsParserd || index < 0 || index >= m_LinkList.GetSize()) { | 2828 if (!m_IsParserd || index < 0 || index >= m_LinkList.GetSize()) { |
2835 return; | 2829 return; |
2836 } | 2830 } |
2837 CPDF_LinkExt* link = NULL; | 2831 CPDF_LinkExt* link = NULL; |
2838 link = m_LinkList.GetAt(index); | 2832 link = m_LinkList.GetAt(index); |
2839 if (!link) { | 2833 if (!link) { |
2840 return ; | 2834 return ; |
2841 } | 2835 } |
2842 m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects); | 2836 m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects); |
2843 } | 2837 } |
OLD | NEW |