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 "public/fpdf_text.h" | 7 #include "public/fpdf_text.h" |
8 | 8 |
9 #include "core/include/fpdfdoc/fpdf_doc.h" | 9 #include "core/include/fpdfdoc/fpdf_doc.h" |
10 #include "core/include/fpdftext/fpdf_text.h" | 10 #include "core/include/fpdftext/fpdf_text.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 double bottom, | 148 double bottom, |
149 unsigned short* buffer, | 149 unsigned short* buffer, |
150 int buflen) { | 150 int buflen) { |
151 if (!text_page) | 151 if (!text_page) |
152 return 0; | 152 return 0; |
153 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page; | 153 IPDF_TextPage* textpage = (IPDF_TextPage*)text_page; |
154 CFX_FloatRect rect((FX_FLOAT)left, (FX_FLOAT)bottom, (FX_FLOAT)right, | 154 CFX_FloatRect rect((FX_FLOAT)left, (FX_FLOAT)bottom, (FX_FLOAT)right, |
155 (FX_FLOAT)top); | 155 (FX_FLOAT)top); |
156 CFX_WideString str = textpage->GetTextByRect(rect); | 156 CFX_WideString str = textpage->GetTextByRect(rect); |
157 | 157 |
158 if (buflen <= 0 || buffer == NULL) { | 158 if (buflen <= 0 || !buffer) { |
159 return str.GetLength(); | 159 return str.GetLength(); |
160 } | 160 } |
161 | 161 |
162 CFX_ByteString cbUTF16Str = str.UTF16LE_Encode(); | 162 CFX_ByteString cbUTF16Str = str.UTF16LE_Encode(); |
163 int len = cbUTF16Str.GetLength() / sizeof(unsigned short); | 163 int len = cbUTF16Str.GetLength() / sizeof(unsigned short); |
164 int size = buflen > len ? len : buflen; | 164 int size = buflen > len ? len : buflen; |
165 FXSYS_memcpy(buffer, cbUTF16Str.GetBuffer(size * sizeof(unsigned short)), | 165 FXSYS_memcpy(buffer, cbUTF16Str.GetBuffer(size * sizeof(unsigned short)), |
166 size * sizeof(unsigned short)); | 166 size * sizeof(unsigned short)); |
167 cbUTF16Str.ReleaseBuffer(size * sizeof(unsigned short)); | 167 cbUTF16Str.ReleaseBuffer(size * sizeof(unsigned short)); |
168 | 168 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 int link_index, | 235 int link_index, |
236 unsigned short* buffer, | 236 unsigned short* buffer, |
237 int buflen) { | 237 int buflen) { |
238 if (!link_page) | 238 if (!link_page) |
239 return 0; | 239 return 0; |
240 IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page; | 240 IPDF_LinkExtract* pageLink = (IPDF_LinkExtract*)link_page; |
241 CFX_WideString url = pageLink->GetURL(link_index); | 241 CFX_WideString url = pageLink->GetURL(link_index); |
242 | 242 |
243 CFX_ByteString cbUTF16URL = url.UTF16LE_Encode(); | 243 CFX_ByteString cbUTF16URL = url.UTF16LE_Encode(); |
244 int len = cbUTF16URL.GetLength() / sizeof(unsigned short); | 244 int len = cbUTF16URL.GetLength() / sizeof(unsigned short); |
245 if (buffer == NULL || buflen <= 0) | 245 if (!buffer || buflen <= 0) |
246 return len; | 246 return len; |
247 int size = len < buflen ? len : buflen; | 247 int size = len < buflen ? len : buflen; |
248 if (size > 0) { | 248 if (size > 0) { |
249 FXSYS_memcpy(buffer, cbUTF16URL.GetBuffer(size * sizeof(unsigned short)), | 249 FXSYS_memcpy(buffer, cbUTF16URL.GetBuffer(size * sizeof(unsigned short)), |
250 size * sizeof(unsigned short)); | 250 size * sizeof(unsigned short)); |
251 cbUTF16URL.ReleaseBuffer(size * sizeof(unsigned short)); | 251 cbUTF16URL.ReleaseBuffer(size * sizeof(unsigned short)); |
252 } | 252 } |
253 return size; | 253 return size; |
254 } | 254 } |
255 DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page, | 255 DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page, |
(...skipping 21 matching lines...) Expand all Loading... |
277 CFX_FloatRect rect = rectArray.GetAt(rect_index); | 277 CFX_FloatRect rect = rectArray.GetAt(rect_index); |
278 *left = rect.left; | 278 *left = rect.left; |
279 *right = rect.right; | 279 *right = rect.right; |
280 *top = rect.top; | 280 *top = rect.top; |
281 *bottom = rect.bottom; | 281 *bottom = rect.bottom; |
282 } | 282 } |
283 } | 283 } |
284 DLLEXPORT void STDCALL FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page) { | 284 DLLEXPORT void STDCALL FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page) { |
285 delete (IPDF_LinkExtract*)link_page; | 285 delete (IPDF_LinkExtract*)link_page; |
286 } | 286 } |
OLD | NEW |