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

Side by Side Diff: fpdfsdk/fpdfdoc.cpp

Issue 2519343002: Add APIs for limited use of document tagged code. (Closed)
Patch Set: More nits Created 4 years 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
« no previous file with comments | « fpdfsdk/fpdf_structtree_embeddertest.cpp ('k') | fpdfsdk/fpdfview.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 if (!pHolder->get()) 57 if (!pHolder->get())
58 pHolder->reset(new CPDF_LinkList); 58 pHolder->reset(new CPDF_LinkList);
59 return pHolder->get(); 59 return pHolder->get();
60 } 60 }
61 61
62 unsigned long Utf16EncodeMaybeCopyAndReturnLength(const CFX_WideString& text, 62 unsigned long Utf16EncodeMaybeCopyAndReturnLength(const CFX_WideString& text,
63 void* buffer, 63 void* buffer,
64 unsigned long buflen) { 64 unsigned long buflen) {
65 CFX_ByteString encodedText = text.UTF16LE_Encode(); 65 CFX_ByteString encodedText = text.UTF16LE_Encode();
66 unsigned long len = encodedText.GetLength(); 66 unsigned long len = encodedText.GetLength();
67 if (buffer && buflen >= len) 67 if (buffer && len <= buflen)
68 FXSYS_memcpy(buffer, encodedText.c_str(), len); 68 FXSYS_memcpy(buffer, encodedText.c_str(), len);
69 return len; 69 return len;
70 } 70 }
71 71
72 } // namespace 72 } // namespace
73 73
74 DLLEXPORT FPDF_BOOKMARK STDCALL 74 DLLEXPORT FPDF_BOOKMARK STDCALL
75 FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict) { 75 FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict) {
76 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 76 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
77 if (!pDoc) 77 if (!pDoc)
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 DLLEXPORT unsigned long STDCALL FPDFAction_GetFilePath(FPDF_ACTION pDict, 179 DLLEXPORT unsigned long STDCALL FPDFAction_GetFilePath(FPDF_ACTION pDict,
180 void* buffer, 180 void* buffer,
181 unsigned long buflen) { 181 unsigned long buflen) {
182 unsigned long type = FPDFAction_GetType(pDict); 182 unsigned long type = FPDFAction_GetType(pDict);
183 if (type != PDFACTION_REMOTEGOTO && type != PDFACTION_LAUNCH) 183 if (type != PDFACTION_REMOTEGOTO && type != PDFACTION_LAUNCH)
184 return 0; 184 return 0;
185 185
186 CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict))); 186 CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict)));
187 CFX_ByteString path = action.GetFilePath().UTF8Encode(); 187 CFX_ByteString path = action.GetFilePath().UTF8Encode();
188 unsigned long len = path.GetLength() + 1; 188 unsigned long len = path.GetLength() + 1;
189 if (buffer && buflen >= len) 189 if (buffer && len <= buflen)
190 FXSYS_memcpy(buffer, path.c_str(), len); 190 FXSYS_memcpy(buffer, path.c_str(), len);
191 return len; 191 return len;
192 } 192 }
193 193
194 DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document, 194 DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document,
195 FPDF_ACTION pDict, 195 FPDF_ACTION pDict,
196 void* buffer, 196 void* buffer,
197 unsigned long buflen) { 197 unsigned long buflen) {
198 if (!pDict) 198 if (!pDict)
199 return 0; 199 return 0;
200 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 200 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
201 if (!pDoc) 201 if (!pDoc)
202 return 0; 202 return 0;
203 CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict))); 203 CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict)));
204 CFX_ByteString path = action.GetURI(pDoc); 204 CFX_ByteString path = action.GetURI(pDoc);
205 unsigned long len = path.GetLength() + 1; 205 unsigned long len = path.GetLength() + 1;
206 if (buffer && buflen >= len) 206 if (buffer && len <= buflen)
207 FXSYS_memcpy(buffer, path.c_str(), len); 207 FXSYS_memcpy(buffer, path.c_str(), len);
208 return len; 208 return len;
209 } 209 }
210 210
211 DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document, 211 DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document,
212 FPDF_DEST pDict) { 212 FPDF_DEST pDict) {
213 if (!pDict) 213 if (!pDict)
214 return 0; 214 return 0;
215 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 215 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
216 if (!pDoc) 216 if (!pDoc)
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 if (page_index < 0) 403 if (page_index < 0)
404 return 0; 404 return 0;
405 405
406 // CPDF_PageLabel can deal with NULL |document|. 406 // CPDF_PageLabel can deal with NULL |document|.
407 CPDF_PageLabel label(CPDFDocumentFromFPDFDocument(document)); 407 CPDF_PageLabel label(CPDFDocumentFromFPDFDocument(document));
408 CFX_WideString str; 408 CFX_WideString str;
409 if (!label.GetLabel(page_index, &str)) 409 if (!label.GetLabel(page_index, &str))
410 return 0; 410 return 0;
411 return Utf16EncodeMaybeCopyAndReturnLength(str, buffer, buflen); 411 return Utf16EncodeMaybeCopyAndReturnLength(str, buffer, buflen);
412 } 412 }
OLDNEW
« no previous file with comments | « fpdfsdk/fpdf_structtree_embeddertest.cpp ('k') | fpdfsdk/fpdfview.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698