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