Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: fpdfsdk/fpdfdoc.cpp

Issue 1867183002: Use std::vector as internal storage for CPDF_Array (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698