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

Side by Side Diff: fpdfsdk/fpdf_flatten.cpp

Issue 2520493002: Make CPDF_Stream() take unique_ptr's to its dictionary. (Closed)
Patch Set: rebase, lint, fix new test. Created 4 years, 1 month 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/cba_fontmap.cpp ('k') | fpdfsdk/fpdf_transformpage.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_flatten.h" 7 #include "public/fpdf_flatten.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 rcRet.top = GetMinMaxValue(*pRectArray, MAX, TOP); 171 rcRet.top = GetMinMaxValue(*pRectArray, MAX, TOP);
172 rcRet.right = GetMinMaxValue(*pRectArray, MAX, RIGHT); 172 rcRet.right = GetMinMaxValue(*pRectArray, MAX, RIGHT);
173 rcRet.bottom = GetMinMaxValue(*pRectArray, MIN, BOTTOM); 173 rcRet.bottom = GetMinMaxValue(*pRectArray, MIN, BOTTOM);
174 174
175 return rcRet; 175 return rcRet;
176 } 176 }
177 177
178 uint32_t NewIndirectContentsStream(const CFX_ByteString& key, 178 uint32_t NewIndirectContentsStream(const CFX_ByteString& key,
179 CPDF_Document* pDocument) { 179 CPDF_Document* pDocument) {
180 CPDF_Stream* pNewContents = pDocument->NewIndirect<CPDF_Stream>( 180 CPDF_Stream* pNewContents = pDocument->NewIndirect<CPDF_Stream>(
181 nullptr, 0, new CPDF_Dictionary(pDocument->GetByteStringPool())); 181 nullptr, 0,
182 pdfium::MakeUnique<CPDF_Dictionary>(pDocument->GetByteStringPool()));
182 CFX_ByteString sStream; 183 CFX_ByteString sStream;
183 sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str()); 184 sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
184 pNewContents->SetData(sStream.raw_str(), sStream.GetLength()); 185 pNewContents->SetData(sStream.raw_str(), sStream.GetLength());
185 return pNewContents->GetObjNum(); 186 return pNewContents->GetObjNum();
186 } 187 }
187 188
188 void SetPageContents(const CFX_ByteString& key, 189 void SetPageContents(const CFX_ByteString& key,
189 CPDF_Dictionary* pPage, 190 CPDF_Dictionary* pPage,
190 CPDF_Document* pDocument) { 191 CPDF_Document* pDocument) {
191 CPDF_Array* pContentsArray = nullptr; 192 CPDF_Array* pContentsArray = nullptr;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 pCropBox->AddNew<CPDF_Number>(rcOriginalCB.bottom); 290 pCropBox->AddNew<CPDF_Number>(rcOriginalCB.bottom);
290 pCropBox->AddNew<CPDF_Number>(rcOriginalCB.right); 291 pCropBox->AddNew<CPDF_Number>(rcOriginalCB.right);
291 pCropBox->AddNew<CPDF_Number>(rcOriginalCB.top); 292 pCropBox->AddNew<CPDF_Number>(rcOriginalCB.top);
292 } 293 }
293 294
294 CPDF_Dictionary* pRes = pPageDict->GetDictFor("Resources"); 295 CPDF_Dictionary* pRes = pPageDict->GetDictFor("Resources");
295 if (!pRes) 296 if (!pRes)
296 pRes = pPageDict->SetNewFor<CPDF_Dictionary>("Resources"); 297 pRes = pPageDict->SetNewFor<CPDF_Dictionary>("Resources");
297 298
298 CPDF_Stream* pNewXObject = pDocument->NewIndirect<CPDF_Stream>( 299 CPDF_Stream* pNewXObject = pDocument->NewIndirect<CPDF_Stream>(
299 nullptr, 0, new CPDF_Dictionary(pDocument->GetByteStringPool())); 300 nullptr, 0,
301 pdfium::MakeUnique<CPDF_Dictionary>(pDocument->GetByteStringPool()));
300 302
301 uint32_t dwObjNum = pNewXObject->GetObjNum(); 303 uint32_t dwObjNum = pNewXObject->GetObjNum();
302 CPDF_Dictionary* pPageXObject = pRes->GetDictFor("XObject"); 304 CPDF_Dictionary* pPageXObject = pRes->GetDictFor("XObject");
303 if (!pPageXObject) 305 if (!pPageXObject)
304 pPageXObject = pRes->SetNewFor<CPDF_Dictionary>("XObject"); 306 pPageXObject = pRes->SetNewFor<CPDF_Dictionary>("XObject");
305 307
306 CFX_ByteString key = ""; 308 CFX_ByteString key = "";
307 int nStreams = pdfium::CollectionSize<int>(ObjectArray); 309 int nStreams = pdfium::CollectionSize<int>(ObjectArray);
308 if (nStreams > 0) { 310 if (nStreams > 0) {
309 for (int iKey = 0; /*iKey < 100*/; iKey++) { 311 for (int iKey = 0; /*iKey < 100*/; iKey++) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 CFX_ByteString sTemp; 420 CFX_ByteString sTemp;
419 CFX_Matrix m = GetMatrix(rcAnnot, rcStream, matrix); 421 CFX_Matrix m = GetMatrix(rcAnnot, rcStream, matrix);
420 sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f, 422 sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f,
421 sFormName.c_str()); 423 sFormName.c_str());
422 sStream += sTemp; 424 sStream += sTemp;
423 pNewXObject->SetData(sStream.raw_str(), sStream.GetLength()); 425 pNewXObject->SetData(sStream.raw_str(), sStream.GetLength());
424 } 426 }
425 pPageDict->RemoveFor("Annots"); 427 pPageDict->RemoveFor("Annots");
426 return FLATTEN_SUCCESS; 428 return FLATTEN_SUCCESS;
427 } 429 }
OLDNEW
« no previous file with comments | « fpdfsdk/formfiller/cba_fontmap.cpp ('k') | fpdfsdk/fpdf_transformpage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698