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

Side by Side Diff: fpdfsdk/fpdfppo.cpp

Issue 1821043003: Remove FX_WORD in favor of uint16_t. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Use stdint.h directly, bitfield minefield. Created 4 years, 9 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
« no previous file with comments | « fpdfsdk/formfiller/cffl_formfiller.cpp ('k') | fpdfsdk/fsdk_baseannot.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_ppo.h" 7 #include "public/fpdf_ppo.h"
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 10 matching lines...) Expand all
21 #include "third_party/base/stl_util.h" 21 #include "third_party/base/stl_util.h"
22 22
23 class CPDF_PageOrganizer { 23 class CPDF_PageOrganizer {
24 public: 24 public:
25 using ObjectNumberMap = std::map<FX_DWORD, FX_DWORD>; 25 using ObjectNumberMap = std::map<FX_DWORD, FX_DWORD>;
26 CPDF_PageOrganizer(); 26 CPDF_PageOrganizer();
27 ~CPDF_PageOrganizer(); 27 ~CPDF_PageOrganizer();
28 28
29 FX_BOOL PDFDocInit(CPDF_Document* pDestPDFDoc, CPDF_Document* pSrcPDFDoc); 29 FX_BOOL PDFDocInit(CPDF_Document* pDestPDFDoc, CPDF_Document* pSrcPDFDoc);
30 FX_BOOL ExportPage(CPDF_Document* pSrcPDFDoc, 30 FX_BOOL ExportPage(CPDF_Document* pSrcPDFDoc,
31 std::vector<FX_WORD>* pPageNums, 31 std::vector<uint16_t>* pPageNums,
32 CPDF_Document* pDestPDFDoc, 32 CPDF_Document* pDestPDFDoc,
33 int nIndex); 33 int nIndex);
34 CPDF_Object* PageDictGetInheritableTag(CPDF_Dictionary* pDict, 34 CPDF_Object* PageDictGetInheritableTag(CPDF_Dictionary* pDict,
35 CFX_ByteString nSrctag); 35 CFX_ByteString nSrctag);
36 FX_BOOL UpdateReference(CPDF_Object* pObj, 36 FX_BOOL UpdateReference(CPDF_Object* pObj,
37 CPDF_Document* pDoc, 37 CPDF_Document* pDoc,
38 ObjectNumberMap* pObjNumberMap); 38 ObjectNumberMap* pObjNumberMap);
39 FX_DWORD GetNewObjId(CPDF_Document* pDoc, 39 FX_DWORD GetNewObjId(CPDF_Document* pDoc,
40 ObjectNumberMap* pObjNumberMap, 40 ObjectNumberMap* pObjNumberMap,
41 CPDF_Reference* pRef); 41 CPDF_Reference* pRef);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 FX_DWORD Kidsobjnum = pDestPDFDoc->AddIndirectObject(pNewKids); 89 FX_DWORD Kidsobjnum = pDestPDFDoc->AddIndirectObject(pNewKids);
90 90
91 pNewPages->SetAt("Kids", new CPDF_Reference(pDestPDFDoc, Kidsobjnum)); 91 pNewPages->SetAt("Kids", new CPDF_Reference(pDestPDFDoc, Kidsobjnum));
92 pNewPages->SetAt("Count", new CPDF_Number(0)); 92 pNewPages->SetAt("Count", new CPDF_Number(0));
93 } 93 }
94 94
95 return TRUE; 95 return TRUE;
96 } 96 }
97 97
98 FX_BOOL CPDF_PageOrganizer::ExportPage(CPDF_Document* pSrcPDFDoc, 98 FX_BOOL CPDF_PageOrganizer::ExportPage(CPDF_Document* pSrcPDFDoc,
99 std::vector<FX_WORD>* pPageNums, 99 std::vector<uint16_t>* pPageNums,
100 CPDF_Document* pDestPDFDoc, 100 CPDF_Document* pDestPDFDoc,
101 int nIndex) { 101 int nIndex) {
102 int curpage = nIndex; 102 int curpage = nIndex;
103 std::unique_ptr<ObjectNumberMap> pObjNumberMap(new ObjectNumberMap); 103 std::unique_ptr<ObjectNumberMap> pObjNumberMap(new ObjectNumberMap);
104 int nSize = pdfium::CollectionSize<int>(*pPageNums); 104 int nSize = pdfium::CollectionSize<int>(*pPageNums);
105 for (int i = 0; i < nSize; ++i) { 105 for (int i = 0; i < nSize; ++i) {
106 CPDF_Dictionary* pCurPageDict = pDestPDFDoc->CreateNewPage(curpage); 106 CPDF_Dictionary* pCurPageDict = pDestPDFDoc->CreateNewPage(curpage);
107 CPDF_Dictionary* pSrcPageDict = pSrcPDFDoc->GetPage(pPageNums->at(i) - 1); 107 CPDF_Dictionary* pSrcPageDict = pSrcPDFDoc->GetPage(pPageNums->at(i) - 1);
108 if (!pSrcPageDict || !pCurPageDict) 108 if (!pSrcPageDict || !pCurPageDict)
109 return FALSE; 109 return FALSE;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 dwNewObjNum = pDoc->AddIndirectObject(pClone); 307 dwNewObjNum = pDoc->AddIndirectObject(pClone);
308 (*pObjNumberMap)[dwObjnum] = dwNewObjNum; 308 (*pObjNumberMap)[dwObjnum] = dwNewObjNum;
309 if (!UpdateReference(pClone, pDoc, pObjNumberMap)) { 309 if (!UpdateReference(pClone, pDoc, pObjNumberMap)) {
310 pClone->Release(); 310 pClone->Release();
311 return 0; 311 return 0;
312 } 312 }
313 return dwNewObjNum; 313 return dwNewObjNum;
314 } 314 }
315 315
316 FPDF_BOOL ParserPageRangeString(CFX_ByteString rangstring, 316 FPDF_BOOL ParserPageRangeString(CFX_ByteString rangstring,
317 std::vector<FX_WORD>* pageArray, 317 std::vector<uint16_t>* pageArray,
318 int nCount) { 318 int nCount) {
319 if (rangstring.GetLength() != 0) { 319 if (rangstring.GetLength() != 0) {
320 rangstring.Remove(' '); 320 rangstring.Remove(' ');
321 int nLength = rangstring.GetLength(); 321 int nLength = rangstring.GetLength();
322 CFX_ByteString cbCompareString("0123456789-,"); 322 CFX_ByteString cbCompareString("0123456789-,");
323 for (int i = 0; i < nLength; ++i) { 323 for (int i = 0; i < nLength; ++i) {
324 if (cbCompareString.Find(rangstring[i]) == -1) 324 if (cbCompareString.Find(rangstring[i]) == -1)
325 return FALSE; 325 return FALSE;
326 } 326 }
327 CFX_ByteString cbMidRange; 327 CFX_ByteString cbMidRange;
328 int nStringFrom = 0; 328 int nStringFrom = 0;
329 int nStringTo = 0; 329 int nStringTo = 0;
330 while (nStringTo < nLength) { 330 while (nStringTo < nLength) {
331 nStringTo = rangstring.Find(',', nStringFrom); 331 nStringTo = rangstring.Find(',', nStringFrom);
332 if (nStringTo == -1) 332 if (nStringTo == -1)
333 nStringTo = nLength; 333 nStringTo = nLength;
334 cbMidRange = rangstring.Mid(nStringFrom, nStringTo - nStringFrom); 334 cbMidRange = rangstring.Mid(nStringFrom, nStringTo - nStringFrom);
335 int nMid = cbMidRange.Find('-'); 335 int nMid = cbMidRange.Find('-');
336 if (nMid == -1) { 336 if (nMid == -1) {
337 long lPageNum = atol(cbMidRange); 337 long lPageNum = atol(cbMidRange);
338 if (lPageNum <= 0 || lPageNum > nCount) 338 if (lPageNum <= 0 || lPageNum > nCount)
339 return FALSE; 339 return FALSE;
340 pageArray->push_back((FX_WORD)lPageNum); 340 pageArray->push_back((uint16_t)lPageNum);
341 } else { 341 } else {
342 int nStartPageNum = atol(cbMidRange.Mid(0, nMid)); 342 int nStartPageNum = atol(cbMidRange.Mid(0, nMid));
343 if (nStartPageNum == 0) 343 if (nStartPageNum == 0)
344 return FALSE; 344 return FALSE;
345 345
346 ++nMid; 346 ++nMid;
347 int nEnd = cbMidRange.GetLength() - nMid; 347 int nEnd = cbMidRange.GetLength() - nMid;
348 if (nEnd == 0) 348 if (nEnd == 0)
349 return FALSE; 349 return FALSE;
350 350
(...skipping 17 matching lines...) Expand all
368 FPDF_BYTESTRING pagerange, 368 FPDF_BYTESTRING pagerange,
369 int index) { 369 int index) {
370 CPDF_Document* pDestDoc = CPDFDocumentFromFPDFDocument(dest_doc); 370 CPDF_Document* pDestDoc = CPDFDocumentFromFPDFDocument(dest_doc);
371 if (!dest_doc) 371 if (!dest_doc)
372 return FALSE; 372 return FALSE;
373 373
374 CPDF_Document* pSrcDoc = CPDFDocumentFromFPDFDocument(src_doc); 374 CPDF_Document* pSrcDoc = CPDFDocumentFromFPDFDocument(src_doc);
375 if (!pSrcDoc) 375 if (!pSrcDoc)
376 return FALSE; 376 return FALSE;
377 377
378 std::vector<FX_WORD> pageArray; 378 std::vector<uint16_t> pageArray;
379 int nCount = pSrcDoc->GetPageCount(); 379 int nCount = pSrcDoc->GetPageCount();
380 if (pagerange) { 380 if (pagerange) {
381 if (!ParserPageRangeString(pagerange, &pageArray, nCount)) 381 if (!ParserPageRangeString(pagerange, &pageArray, nCount))
382 return FALSE; 382 return FALSE;
383 } else { 383 } else {
384 for (int i = 1; i <= nCount; ++i) { 384 for (int i = 1; i <= nCount; ++i) {
385 pageArray.push_back(i); 385 pageArray.push_back(i);
386 } 386 }
387 } 387 }
388 388
(...skipping 17 matching lines...) Expand all
406 if (!pSrcDict) 406 if (!pSrcDict)
407 return FALSE; 407 return FALSE;
408 408
409 CPDF_Dictionary* pDstDict = pDstDoc->GetRoot(); 409 CPDF_Dictionary* pDstDict = pDstDoc->GetRoot();
410 if (!pDstDict) 410 if (!pDstDict)
411 return FALSE; 411 return FALSE;
412 412
413 pDstDict->SetAt("ViewerPreferences", pSrcDict->Clone(TRUE)); 413 pDstDict->SetAt("ViewerPreferences", pSrcDict->Clone(TRUE));
414 return TRUE; 414 return TRUE;
415 } 415 }
OLDNEW
« no previous file with comments | « fpdfsdk/formfiller/cffl_formfiller.cpp ('k') | fpdfsdk/fsdk_baseannot.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698