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_doc.h" | 7 #include "public/fpdf_doc.h" |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 int* startPos, | 279 int* startPos, |
280 FPDF_LINK* linkAnnot) { | 280 FPDF_LINK* linkAnnot) { |
281 if (!startPos || !linkAnnot) | 281 if (!startPos || !linkAnnot) |
282 return FALSE; | 282 return FALSE; |
283 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 283 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
284 if (!pPage || !pPage->m_pFormDict) | 284 if (!pPage || !pPage->m_pFormDict) |
285 return FALSE; | 285 return FALSE; |
286 CPDF_Array* pAnnots = pPage->m_pFormDict->GetArrayBy("Annots"); | 286 CPDF_Array* pAnnots = pPage->m_pFormDict->GetArrayBy("Annots"); |
287 if (!pAnnots) | 287 if (!pAnnots) |
288 return FALSE; | 288 return FALSE; |
289 for (int i = *startPos; i < (int)pAnnots->GetCount(); i++) { | 289 for (size_t i = *startPos; i < pAnnots->GetCount(); i++) { |
290 CPDF_Dictionary* pDict = | 290 CPDF_Dictionary* pDict = |
291 ToDictionary(static_cast<CPDF_Object*>(pAnnots->GetDirectObjectAt(i))); | 291 ToDictionary(static_cast<CPDF_Object*>(pAnnots->GetDirectObjectAt(i))); |
292 if (!pDict) | 292 if (!pDict) |
293 continue; | 293 continue; |
294 if (pDict->GetStringBy("Subtype") == "Link") { | 294 if (pDict->GetStringBy("Subtype") == "Link") { |
295 *startPos = i + 1; | 295 *startPos = static_cast<int>(i + 1); |
296 *linkAnnot = (FPDF_LINK)pDict; | 296 *linkAnnot = static_cast<FPDF_LINK>(pDict); |
297 return TRUE; | 297 return TRUE; |
298 } | 298 } |
299 } | 299 } |
300 return FALSE; | 300 return FALSE; |
301 } | 301 } |
302 | 302 |
303 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, | 303 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, |
304 FS_RECTF* rect) { | 304 FS_RECTF* rect) { |
305 if (!linkAnnot || !rect) | 305 if (!linkAnnot || !rect) |
306 return FALSE; | 306 return FALSE; |
307 CPDF_Dictionary* pAnnotDict = | 307 CPDF_Dictionary* pAnnotDict = |
308 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); | 308 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
309 CFX_FloatRect rt = pAnnotDict->GetRectBy("Rect"); | 309 CFX_FloatRect rt = pAnnotDict->GetRectBy("Rect"); |
310 rect->left = rt.left; | 310 rect->left = rt.left; |
311 rect->bottom = rt.bottom; | 311 rect->bottom = rt.bottom; |
312 rect->right = rt.right; | 312 rect->right = rt.right; |
313 rect->top = rt.top; | 313 rect->top = rt.top; |
314 return TRUE; | 314 return TRUE; |
315 } | 315 } |
316 | 316 |
317 DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot) { | 317 DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot) { |
318 if (!linkAnnot) | 318 if (!linkAnnot) |
319 return 0; | 319 return 0; |
320 CPDF_Dictionary* pAnnotDict = | 320 CPDF_Dictionary* pAnnotDict = |
321 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); | 321 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
322 CPDF_Array* pArray = pAnnotDict->GetArrayBy("QuadPoints"); | 322 CPDF_Array* pArray = pAnnotDict->GetArrayBy("QuadPoints"); |
323 if (!pArray) | 323 if (!pArray) |
324 return 0; | 324 return 0; |
325 return pArray->GetCount() / 8; | 325 return static_cast<int>(pArray->GetCount() / 8); |
326 } | 326 } |
327 | 327 |
328 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, | 328 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, |
329 int quadIndex, | 329 int quadIndex, |
330 FS_QUADPOINTSF* quadPoints) { | 330 FS_QUADPOINTSF* quadPoints) { |
331 if (!linkAnnot || !quadPoints) | 331 if (!linkAnnot || !quadPoints) |
332 return FALSE; | 332 return FALSE; |
333 CPDF_Dictionary* pAnnotDict = | 333 CPDF_Dictionary* pAnnotDict = |
334 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); | 334 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
335 CPDF_Array* pArray = pAnnotDict->GetArrayBy("QuadPoints"); | 335 CPDF_Array* pArray = pAnnotDict->GetArrayBy("QuadPoints"); |
336 if (pArray) { | 336 if (pArray) { |
337 if (quadIndex < 0 || quadIndex >= (int)pArray->GetCount() / 8 || | 337 if (quadIndex < 0 || |
338 ((quadIndex * 8 + 7) >= (int)pArray->GetCount())) | 338 static_cast<size_t>(quadIndex) >= pArray->GetCount() / 8 || |
| 339 (static_cast<size_t>(quadIndex * 8 + 7) >= pArray->GetCount())) |
339 return FALSE; | 340 return FALSE; |
340 quadPoints->x1 = pArray->GetNumberAt(quadIndex * 8); | 341 quadPoints->x1 = pArray->GetNumberAt(quadIndex * 8); |
341 quadPoints->y1 = pArray->GetNumberAt(quadIndex * 8 + 1); | 342 quadPoints->y1 = pArray->GetNumberAt(quadIndex * 8 + 1); |
342 quadPoints->x2 = pArray->GetNumberAt(quadIndex * 8 + 2); | 343 quadPoints->x2 = pArray->GetNumberAt(quadIndex * 8 + 2); |
343 quadPoints->y2 = pArray->GetNumberAt(quadIndex * 8 + 3); | 344 quadPoints->y2 = pArray->GetNumberAt(quadIndex * 8 + 3); |
344 quadPoints->x3 = pArray->GetNumberAt(quadIndex * 8 + 4); | 345 quadPoints->x3 = pArray->GetNumberAt(quadIndex * 8 + 4); |
345 quadPoints->y3 = pArray->GetNumberAt(quadIndex * 8 + 5); | 346 quadPoints->y3 = pArray->GetNumberAt(quadIndex * 8 + 5); |
346 quadPoints->x4 = pArray->GetNumberAt(quadIndex * 8 + 6); | 347 quadPoints->x4 = pArray->GetNumberAt(quadIndex * 8 + 6); |
347 quadPoints->y4 = pArray->GetNumberAt(quadIndex * 8 + 7); | 348 quadPoints->y4 = pArray->GetNumberAt(quadIndex * 8 + 7); |
348 return TRUE; | 349 return TRUE; |
(...skipping 15 matching lines...) Expand all Loading... |
364 return 0; | 365 return 0; |
365 CFX_WideString text = pInfo->GetUnicodeTextBy(tag); | 366 CFX_WideString text = pInfo->GetUnicodeTextBy(tag); |
366 // Use UTF-16LE encoding | 367 // Use UTF-16LE encoding |
367 CFX_ByteString encodedText = text.UTF16LE_Encode(); | 368 CFX_ByteString encodedText = text.UTF16LE_Encode(); |
368 unsigned long len = encodedText.GetLength(); | 369 unsigned long len = encodedText.GetLength(); |
369 if (buffer && buflen >= len) { | 370 if (buffer && buflen >= len) { |
370 FXSYS_memcpy(buffer, encodedText.c_str(), len); | 371 FXSYS_memcpy(buffer, encodedText.c_str(), len); |
371 } | 372 } |
372 return len; | 373 return len; |
373 } | 374 } |
OLD | NEW |