| 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 |