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 "fpdfsdk/include/fsdk_define.h" | 9 #include "fpdfsdk/include/fsdk_define.h" |
10 | 10 |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 } | 258 } |
259 | 259 |
260 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page, | 260 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page, |
261 int* startPos, | 261 int* startPos, |
262 FPDF_LINK* linkAnnot) { | 262 FPDF_LINK* linkAnnot) { |
263 if (!startPos || !linkAnnot) | 263 if (!startPos || !linkAnnot) |
264 return FALSE; | 264 return FALSE; |
265 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 265 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
266 if (!pPage || !pPage->m_pFormDict) | 266 if (!pPage || !pPage->m_pFormDict) |
267 return FALSE; | 267 return FALSE; |
268 CPDF_Array* pAnnots = pPage->m_pFormDict->GetArray("Annots"); | 268 CPDF_Array* pAnnots = pPage->m_pFormDict->GetArrayBy("Annots"); |
269 if (!pAnnots) | 269 if (!pAnnots) |
270 return FALSE; | 270 return FALSE; |
271 for (int i = *startPos; i < (int)pAnnots->GetCount(); i++) { | 271 for (int i = *startPos; i < (int)pAnnots->GetCount(); i++) { |
272 CPDF_Dictionary* pDict = | 272 CPDF_Dictionary* pDict = |
273 ToDictionary(static_cast<CPDF_Object*>(pAnnots->GetElementValue(i))); | 273 ToDictionary(static_cast<CPDF_Object*>(pAnnots->GetElementValue(i))); |
274 if (!pDict) | 274 if (!pDict) |
275 continue; | 275 continue; |
276 if (pDict->GetString("Subtype").Equal("Link")) { | 276 if (pDict->GetStringBy("Subtype").Equal("Link")) { |
277 *startPos = i + 1; | 277 *startPos = i + 1; |
278 *linkAnnot = (FPDF_LINK)pDict; | 278 *linkAnnot = (FPDF_LINK)pDict; |
279 return TRUE; | 279 return TRUE; |
280 } | 280 } |
281 } | 281 } |
282 return FALSE; | 282 return FALSE; |
283 } | 283 } |
284 | 284 |
285 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, | 285 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, |
286 FS_RECTF* rect) { | 286 FS_RECTF* rect) { |
287 if (!linkAnnot || !rect) | 287 if (!linkAnnot || !rect) |
288 return FALSE; | 288 return FALSE; |
289 CPDF_Dictionary* pAnnotDict = | 289 CPDF_Dictionary* pAnnotDict = |
290 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); | 290 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
291 CPDF_Rect rt = pAnnotDict->GetRect("Rect"); | 291 CPDF_Rect rt = pAnnotDict->GetRectBy("Rect"); |
292 rect->left = rt.left; | 292 rect->left = rt.left; |
293 rect->bottom = rt.bottom; | 293 rect->bottom = rt.bottom; |
294 rect->right = rt.right; | 294 rect->right = rt.right; |
295 rect->top = rt.top; | 295 rect->top = rt.top; |
296 return TRUE; | 296 return TRUE; |
297 } | 297 } |
298 | 298 |
299 DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot) { | 299 DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot) { |
300 if (!linkAnnot) | 300 if (!linkAnnot) |
301 return 0; | 301 return 0; |
302 CPDF_Dictionary* pAnnotDict = | 302 CPDF_Dictionary* pAnnotDict = |
303 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); | 303 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
304 CPDF_Array* pArray = pAnnotDict->GetArray("QuadPoints"); | 304 CPDF_Array* pArray = pAnnotDict->GetArrayBy("QuadPoints"); |
305 if (!pArray) | 305 if (!pArray) |
306 return 0; | 306 return 0; |
307 return pArray->GetCount() / 8; | 307 return pArray->GetCount() / 8; |
308 } | 308 } |
309 | 309 |
310 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, | 310 DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, |
311 int quadIndex, | 311 int quadIndex, |
312 FS_QUADPOINTSF* quadPoints) { | 312 FS_QUADPOINTSF* quadPoints) { |
313 if (!linkAnnot || !quadPoints) | 313 if (!linkAnnot || !quadPoints) |
314 return FALSE; | 314 return FALSE; |
315 CPDF_Dictionary* pAnnotDict = | 315 CPDF_Dictionary* pAnnotDict = |
316 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); | 316 ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
317 CPDF_Array* pArray = pAnnotDict->GetArray("QuadPoints"); | 317 CPDF_Array* pArray = pAnnotDict->GetArrayBy("QuadPoints"); |
318 if (pArray) { | 318 if (pArray) { |
319 if (quadIndex < 0 || quadIndex >= (int)pArray->GetCount() / 8 || | 319 if (quadIndex < 0 || quadIndex >= (int)pArray->GetCount() / 8 || |
320 ((quadIndex * 8 + 7) >= (int)pArray->GetCount())) | 320 ((quadIndex * 8 + 7) >= (int)pArray->GetCount())) |
321 return FALSE; | 321 return FALSE; |
322 quadPoints->x1 = pArray->GetNumber(quadIndex * 8); | 322 quadPoints->x1 = pArray->GetNumberAt(quadIndex * 8); |
323 quadPoints->y1 = pArray->GetNumber(quadIndex * 8 + 1); | 323 quadPoints->y1 = pArray->GetNumberAt(quadIndex * 8 + 1); |
324 quadPoints->x2 = pArray->GetNumber(quadIndex * 8 + 2); | 324 quadPoints->x2 = pArray->GetNumberAt(quadIndex * 8 + 2); |
325 quadPoints->y2 = pArray->GetNumber(quadIndex * 8 + 3); | 325 quadPoints->y2 = pArray->GetNumberAt(quadIndex * 8 + 3); |
326 quadPoints->x3 = pArray->GetNumber(quadIndex * 8 + 4); | 326 quadPoints->x3 = pArray->GetNumberAt(quadIndex * 8 + 4); |
327 quadPoints->y3 = pArray->GetNumber(quadIndex * 8 + 5); | 327 quadPoints->y3 = pArray->GetNumberAt(quadIndex * 8 + 5); |
328 quadPoints->x4 = pArray->GetNumber(quadIndex * 8 + 6); | 328 quadPoints->x4 = pArray->GetNumberAt(quadIndex * 8 + 6); |
329 quadPoints->y4 = pArray->GetNumber(quadIndex * 8 + 7); | 329 quadPoints->y4 = pArray->GetNumberAt(quadIndex * 8 + 7); |
330 return TRUE; | 330 return TRUE; |
331 } | 331 } |
332 return FALSE; | 332 return FALSE; |
333 } | 333 } |
334 | 334 |
335 DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc, | 335 DLLEXPORT unsigned long STDCALL FPDF_GetMetaText(FPDF_DOCUMENT doc, |
336 FPDF_BYTESTRING tag, | 336 FPDF_BYTESTRING tag, |
337 void* buffer, | 337 void* buffer, |
338 unsigned long buflen) { | 338 unsigned long buflen) { |
339 if (!tag) | 339 if (!tag) |
340 return 0; | 340 return 0; |
341 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(doc); | 341 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(doc); |
342 if (!pDoc) | 342 if (!pDoc) |
343 return 0; | 343 return 0; |
344 CPDF_Dictionary* pInfo = pDoc->GetInfo(); | 344 CPDF_Dictionary* pInfo = pDoc->GetInfo(); |
345 if (!pInfo) | 345 if (!pInfo) |
346 return 0; | 346 return 0; |
347 CFX_WideString text = pInfo->GetUnicodeText(tag); | 347 CFX_WideString text = pInfo->GetUnicodeTextBy(tag); |
348 // Use UTF-16LE encoding | 348 // Use UTF-16LE encoding |
349 CFX_ByteString encodedText = text.UTF16LE_Encode(); | 349 CFX_ByteString encodedText = text.UTF16LE_Encode(); |
350 unsigned long len = encodedText.GetLength(); | 350 unsigned long len = encodedText.GetLength(); |
351 if (buffer && buflen >= len) { | 351 if (buffer && buflen >= len) { |
352 FXSYS_memcpy(buffer, encodedText.c_str(), len); | 352 FXSYS_memcpy(buffer, encodedText.c_str(), len); |
353 } | 353 } |
354 return len; | 354 return len; |
355 } | 355 } |
OLD | NEW |