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

Side by Side Diff: fpdfsdk/fpdf_flatten.cpp

Issue 1868293002: Make converstion explicit from CFX_ByteString to uint8_t* (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
« no previous file with comments | « core/fxge/ge/fx_ge_fontmap.cpp ('k') | xfa/fxfa/app/xfa_ffimageedit.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 10
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 194
195 if (!pContentsObj) { 195 if (!pContentsObj) {
196 // Create a new contents dictionary 196 // Create a new contents dictionary
197 if (!key.IsEmpty()) { 197 if (!key.IsEmpty()) {
198 CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary); 198 CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
199 pPage->SetAtReference("Contents", pDocument, 199 pPage->SetAtReference("Contents", pDocument,
200 pDocument->AddIndirectObject(pNewContents)); 200 pDocument->AddIndirectObject(pNewContents));
201 201
202 CFX_ByteString sStream; 202 CFX_ByteString sStream;
203 sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str()); 203 sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
204 pNewContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, 204 pNewContents->SetData(sStream.raw_str(), sStream.GetLength(), FALSE,
205 FALSE); 205 FALSE);
206 } 206 }
207 return; 207 return;
208 } 208 }
209 209
210 CPDF_Array* pContentsArray = NULL; 210 CPDF_Array* pContentsArray = NULL;
211 211
212 switch (pContentsObj->GetType()) { 212 switch (pContentsObj->GetType()) {
213 case CPDF_Object::STREAM: { 213 case CPDF_Object::STREAM: {
214 pContentsArray = new CPDF_Array; 214 pContentsArray = new CPDF_Array;
215 CPDF_Stream* pContents = pContentsObj->AsStream(); 215 CPDF_Stream* pContents = pContentsObj->AsStream();
216 uint32_t dwObjNum = pDocument->AddIndirectObject(pContents); 216 uint32_t dwObjNum = pDocument->AddIndirectObject(pContents);
217 CPDF_StreamAcc acc; 217 CPDF_StreamAcc acc;
218 acc.LoadAllData(pContents); 218 acc.LoadAllData(pContents);
219 CFX_ByteString sStream = "q\n"; 219 CFX_ByteString sStream = "q\n";
220 CFX_ByteString sBody = 220 CFX_ByteString sBody =
221 CFX_ByteString((const FX_CHAR*)acc.GetData(), acc.GetSize()); 221 CFX_ByteString((const FX_CHAR*)acc.GetData(), acc.GetSize());
222 sStream = sStream + sBody + "\nQ"; 222 sStream = sStream + sBody + "\nQ";
223 pContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, 223 pContents->SetData(sStream.raw_str(), sStream.GetLength(), FALSE, FALSE);
224 FALSE);
225 pContentsArray->AddReference(pDocument, dwObjNum); 224 pContentsArray->AddReference(pDocument, dwObjNum);
226 break; 225 break;
227 } 226 }
228 227
229 case CPDF_Object::ARRAY: { 228 case CPDF_Object::ARRAY: {
230 pContentsArray = pContentsObj->AsArray(); 229 pContentsArray = pContentsObj->AsArray();
231 break; 230 break;
232 } 231 }
233 default: 232 default:
234 break; 233 break;
235 } 234 }
236 235
237 if (!pContentsArray) 236 if (!pContentsArray)
238 return; 237 return;
239 238
240 uint32_t dwObjNum = pDocument->AddIndirectObject(pContentsArray); 239 uint32_t dwObjNum = pDocument->AddIndirectObject(pContentsArray);
241 pPage->SetAtReference("Contents", pDocument, dwObjNum); 240 pPage->SetAtReference("Contents", pDocument, dwObjNum);
242 241
243 if (!key.IsEmpty()) { 242 if (!key.IsEmpty()) {
244 CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary); 243 CPDF_Stream* pNewContents = new CPDF_Stream(NULL, 0, new CPDF_Dictionary);
245 dwObjNum = pDocument->AddIndirectObject(pNewContents); 244 dwObjNum = pDocument->AddIndirectObject(pNewContents);
246 pContentsArray->AddReference(pDocument, dwObjNum); 245 pContentsArray->AddReference(pDocument, dwObjNum);
247 246
248 CFX_ByteString sStream; 247 CFX_ByteString sStream;
249 sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str()); 248 sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
250 pNewContents->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE, 249 pNewContents->SetData(sStream.raw_str(), sStream.GetLength(), FALSE, FALSE);
251 FALSE);
252 } 250 }
253 } 251 }
254 252
255 CFX_Matrix GetMatrix(CFX_FloatRect rcAnnot, 253 CFX_Matrix GetMatrix(CFX_FloatRect rcAnnot,
256 CFX_FloatRect rcStream, 254 CFX_FloatRect rcStream,
257 const CFX_Matrix& matrix) { 255 const CFX_Matrix& matrix) {
258 if (rcStream.IsEmpty()) 256 if (rcStream.IsEmpty())
259 return CFX_Matrix(); 257 return CFX_Matrix();
260 258
261 matrix.TransformRect(rcStream); 259 matrix.TransformRect(rcStream);
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 matrix.c = 0.0f; 499 matrix.c = 0.0f;
502 matrix.d = 1.0f; 500 matrix.d = 1.0f;
503 matrix.e = 0.0f; 501 matrix.e = 0.0f;
504 matrix.f = 0.0f; 502 matrix.f = 0.0f;
505 } 503 }
506 504
507 CFX_Matrix m = GetMatrix(rcAnnot, rcStream, matrix); 505 CFX_Matrix m = GetMatrix(rcAnnot, rcStream, matrix);
508 sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f, 506 sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f,
509 sFormName.c_str()); 507 sFormName.c_str());
510 sStream += sTemp; 508 sStream += sTemp;
511 509 pNewXObject->SetData(sStream.raw_str(), sStream.GetLength(), FALSE, FALSE);
512 pNewXObject->SetData((const uint8_t*)sStream, sStream.GetLength(), FALSE,
513 FALSE);
514 } 510 }
515 pPageDict->RemoveAt("Annots"); 511 pPageDict->RemoveAt("Annots");
516 512
517 ObjectArray.RemoveAll(); 513 ObjectArray.RemoveAll();
518 RectArray.RemoveAll(); 514 RectArray.RemoveAll();
519 515
520 return FLATTEN_SUCCESS; 516 return FLATTEN_SUCCESS;
521 } 517 }
OLDNEW
« no previous file with comments | « core/fxge/ge/fx_ge_fontmap.cpp ('k') | xfa/fxfa/app/xfa_ffimageedit.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698