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

Side by Side Diff: core/fpdfapi/parser/fpdf_parser_decode.cpp

Issue 2477443002: Remove FX_BOOL from core (Closed)
Patch Set: 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 | « core/fpdfapi/parser/fpdf_parser_decode.h ('k') | core/fpdfapi/parser/fpdf_parser_utility.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 "core/fpdfapi/parser/fpdf_parser_decode.h" 7 #include "core/fpdfapi/parser/fpdf_parser_decode.h"
8 8
9 #include <limits.h> 9 #include <limits.h>
10 10
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 Columns = pParams->GetIntegerFor("Columns", 1); 290 Columns = pParams->GetIntegerFor("Columns", 1);
291 if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) { 291 if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) {
292 return nullptr; 292 return nullptr;
293 } 293 }
294 } 294 }
295 return CPDF_ModuleMgr::Get()->GetFlateModule()->CreateDecoder( 295 return CPDF_ModuleMgr::Get()->GetFlateModule()->CreateDecoder(
296 src_buf, src_size, width, height, nComps, bpc, predictor, Colors, 296 src_buf, src_size, width, height, nComps, bpc, predictor, Colors,
297 BitsPerComponent, Columns); 297 BitsPerComponent, Columns);
298 } 298 }
299 299
300 uint32_t FPDFAPI_FlateOrLZWDecode(FX_BOOL bLZW, 300 uint32_t FPDFAPI_FlateOrLZWDecode(bool bLZW,
301 const uint8_t* src_buf, 301 const uint8_t* src_buf,
302 uint32_t src_size, 302 uint32_t src_size,
303 CPDF_Dictionary* pParams, 303 CPDF_Dictionary* pParams,
304 uint32_t estimated_size, 304 uint32_t estimated_size,
305 uint8_t*& dest_buf, 305 uint8_t*& dest_buf,
306 uint32_t& dest_size) { 306 uint32_t& dest_size) {
307 int predictor = 0; 307 int predictor = 0;
308 int Colors = 0; 308 int Colors = 0;
309 int BitsPerComponent = 0; 309 int BitsPerComponent = 0;
310 int Columns = 0; 310 int Columns = 0;
311 FX_BOOL bEarlyChange = TRUE; 311 bool bEarlyChange = true;
312 if (pParams) { 312 if (pParams) {
313 predictor = pParams->GetIntegerFor("Predictor"); 313 predictor = pParams->GetIntegerFor("Predictor");
314 bEarlyChange = !!pParams->GetIntegerFor("EarlyChange", 1); 314 bEarlyChange = !!pParams->GetIntegerFor("EarlyChange", 1);
315 Colors = pParams->GetIntegerFor("Colors", 1); 315 Colors = pParams->GetIntegerFor("Colors", 1);
316 BitsPerComponent = pParams->GetIntegerFor("BitsPerComponent", 8); 316 BitsPerComponent = pParams->GetIntegerFor("BitsPerComponent", 8);
317 Columns = pParams->GetIntegerFor("Columns", 1); 317 Columns = pParams->GetIntegerFor("Columns", 1);
318 if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) 318 if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns))
319 return (uint32_t)-1; 319 return (uint32_t)-1;
320 } 320 }
321 return CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode( 321 return CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode(
322 bLZW, src_buf, src_size, bEarlyChange, predictor, Colors, 322 bLZW, src_buf, src_size, bEarlyChange, predictor, Colors,
323 BitsPerComponent, Columns, estimated_size, dest_buf, dest_size); 323 BitsPerComponent, Columns, estimated_size, dest_buf, dest_size);
324 } 324 }
325 325
326 FX_BOOL PDF_DataDecode(const uint8_t* src_buf, 326 bool PDF_DataDecode(const uint8_t* src_buf,
327 uint32_t src_size, 327 uint32_t src_size,
328 const CPDF_Dictionary* pDict, 328 const CPDF_Dictionary* pDict,
329 uint8_t*& dest_buf, 329 uint8_t*& dest_buf,
330 uint32_t& dest_size, 330 uint32_t& dest_size,
331 CFX_ByteString& ImageEncoding, 331 CFX_ByteString& ImageEncoding,
332 CPDF_Dictionary*& pImageParms, 332 CPDF_Dictionary*& pImageParms,
333 uint32_t last_estimated_size, 333 uint32_t last_estimated_size,
334 FX_BOOL bImageAcc) { 334 bool bImageAcc) {
335 CPDF_Object* pDecoder = pDict ? pDict->GetDirectObjectFor("Filter") : nullptr; 335 CPDF_Object* pDecoder = pDict ? pDict->GetDirectObjectFor("Filter") : nullptr;
336 if (!pDecoder || (!pDecoder->IsArray() && !pDecoder->IsName())) 336 if (!pDecoder || (!pDecoder->IsArray() && !pDecoder->IsName()))
337 return FALSE; 337 return false;
338 338
339 CPDF_Object* pParams = 339 CPDF_Object* pParams =
340 pDict ? pDict->GetDirectObjectFor("DecodeParms") : nullptr; 340 pDict ? pDict->GetDirectObjectFor("DecodeParms") : nullptr;
341 341
342 std::vector<std::pair<CFX_ByteString, CPDF_Object*>> DecoderArray; 342 std::vector<std::pair<CFX_ByteString, CPDF_Object*>> DecoderArray;
343 if (CPDF_Array* pDecoders = pDecoder->AsArray()) { 343 if (CPDF_Array* pDecoders = pDecoder->AsArray()) {
344 CPDF_Array* pParamsArray = ToArray(pParams); 344 CPDF_Array* pParamsArray = ToArray(pParams);
345 for (size_t i = 0; i < pDecoders->GetCount(); i++) { 345 for (size_t i = 0; i < pDecoders->GetCount(); i++) {
346 DecoderArray.push_back( 346 DecoderArray.push_back(
347 {pDecoders->GetStringAt(i), 347 {pDecoders->GetStringAt(i),
(...skipping 12 matching lines...) Expand all
360 CPDF_Dictionary* pParam = ToDictionary(DecoderArray[i].second); 360 CPDF_Dictionary* pParam = ToDictionary(DecoderArray[i].second);
361 uint8_t* new_buf = nullptr; 361 uint8_t* new_buf = nullptr;
362 uint32_t new_size = (uint32_t)-1; 362 uint32_t new_size = (uint32_t)-1;
363 int offset = -1; 363 int offset = -1;
364 if (decoder == "FlateDecode" || decoder == "Fl") { 364 if (decoder == "FlateDecode" || decoder == "Fl") {
365 if (bImageAcc && i == nSize - 1) { 365 if (bImageAcc && i == nSize - 1) {
366 ImageEncoding = "FlateDecode"; 366 ImageEncoding = "FlateDecode";
367 dest_buf = (uint8_t*)last_buf; 367 dest_buf = (uint8_t*)last_buf;
368 dest_size = last_size; 368 dest_size = last_size;
369 pImageParms = pParam; 369 pImageParms = pParam;
370 return TRUE; 370 return true;
371 } 371 }
372 offset = FPDFAPI_FlateOrLZWDecode(FALSE, last_buf, last_size, pParam, 372 offset = FPDFAPI_FlateOrLZWDecode(false, last_buf, last_size, pParam,
373 estimated_size, new_buf, new_size); 373 estimated_size, new_buf, new_size);
374 } else if (decoder == "LZWDecode" || decoder == "LZW") { 374 } else if (decoder == "LZWDecode" || decoder == "LZW") {
375 offset = FPDFAPI_FlateOrLZWDecode(TRUE, last_buf, last_size, pParam, 375 offset = FPDFAPI_FlateOrLZWDecode(true, last_buf, last_size, pParam,
376 estimated_size, new_buf, new_size); 376 estimated_size, new_buf, new_size);
377 } else if (decoder == "ASCII85Decode" || decoder == "A85") { 377 } else if (decoder == "ASCII85Decode" || decoder == "A85") {
378 offset = A85Decode(last_buf, last_size, new_buf, new_size); 378 offset = A85Decode(last_buf, last_size, new_buf, new_size);
379 } else if (decoder == "ASCIIHexDecode" || decoder == "AHx") { 379 } else if (decoder == "ASCIIHexDecode" || decoder == "AHx") {
380 offset = HexDecode(last_buf, last_size, new_buf, new_size); 380 offset = HexDecode(last_buf, last_size, new_buf, new_size);
381 } else if (decoder == "RunLengthDecode" || decoder == "RL") { 381 } else if (decoder == "RunLengthDecode" || decoder == "RL") {
382 if (bImageAcc && i == nSize - 1) { 382 if (bImageAcc && i == nSize - 1) {
383 ImageEncoding = "RunLengthDecode"; 383 ImageEncoding = "RunLengthDecode";
384 dest_buf = (uint8_t*)last_buf; 384 dest_buf = (uint8_t*)last_buf;
385 dest_size = last_size; 385 dest_size = last_size;
386 pImageParms = pParam; 386 pImageParms = pParam;
387 return TRUE; 387 return true;
388 } 388 }
389 offset = RunLengthDecode(last_buf, last_size, new_buf, new_size); 389 offset = RunLengthDecode(last_buf, last_size, new_buf, new_size);
390 } else if (decoder == "Crypt") { 390 } else if (decoder == "Crypt") {
391 continue; 391 continue;
392 } else { 392 } else {
393 // If we get here, assume it's an image decoder. 393 // If we get here, assume it's an image decoder.
394 if (decoder == "DCT") { 394 if (decoder == "DCT") {
395 decoder = "DCTDecode"; 395 decoder = "DCTDecode";
396 } else if (decoder == "CCF") { 396 } else if (decoder == "CCF") {
397 decoder = "CCITTFaxDecode"; 397 decoder = "CCITTFaxDecode";
398 } 398 }
399 ImageEncoding = decoder; 399 ImageEncoding = decoder;
400 pImageParms = pParam; 400 pImageParms = pParam;
401 dest_buf = (uint8_t*)last_buf; 401 dest_buf = (uint8_t*)last_buf;
402 dest_size = last_size; 402 dest_size = last_size;
403 if (CPDF_Array* pDecoders = pDecoder->AsArray()) 403 if (CPDF_Array* pDecoders = pDecoder->AsArray())
404 pDecoders->RemoveAt(i + 1, pDecoders->GetCount() - i - 1); 404 pDecoders->RemoveAt(i + 1, pDecoders->GetCount() - i - 1);
405 return TRUE; 405 return true;
406 } 406 }
407 if (last_buf != src_buf) { 407 if (last_buf != src_buf) {
408 FX_Free(last_buf); 408 FX_Free(last_buf);
409 } 409 }
410 if (offset == -1) { 410 if (offset == -1) {
411 FX_Free(new_buf); 411 FX_Free(new_buf);
412 return FALSE; 412 return false;
413 } 413 }
414 last_buf = new_buf; 414 last_buf = new_buf;
415 last_size = new_size; 415 last_size = new_size;
416 } 416 }
417 ImageEncoding = ""; 417 ImageEncoding = "";
418 pImageParms = nullptr; 418 pImageParms = nullptr;
419 dest_buf = last_buf; 419 dest_buf = last_buf;
420 dest_size = last_size; 420 dest_size = last_size;
421 return TRUE; 421 return true;
422 } 422 }
423 423
424 CFX_WideString PDF_DecodeText(const uint8_t* src_data, uint32_t src_len) { 424 CFX_WideString PDF_DecodeText(const uint8_t* src_data, uint32_t src_len) {
425 CFX_WideString result; 425 CFX_WideString result;
426 if (src_len >= 2 && ((src_data[0] == 0xfe && src_data[1] == 0xff) || 426 if (src_len >= 2 && ((src_data[0] == 0xfe && src_data[1] == 0xff) ||
427 (src_data[0] == 0xff && src_data[1] == 0xfe))) { 427 (src_data[0] == 0xff && src_data[1] == 0xfe))) {
428 bool bBE = src_data[0] == 0xfe; 428 bool bBE = src_data[0] == 0xfe;
429 uint32_t max_chars = (src_len - 2) / 2; 429 uint32_t max_chars = (src_len - 2) / 2;
430 if (!max_chars) { 430 if (!max_chars) {
431 return result; 431 return result;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 *dest_buf2++ = (uint8_t)pString[j]; 505 *dest_buf2++ = (uint8_t)pString[j];
506 } 506 }
507 result.ReleaseBuffer(encLen); 507 result.ReleaseBuffer(encLen);
508 return result; 508 return result;
509 } 509 }
510 510
511 CFX_ByteString PDF_EncodeText(const CFX_WideString& str) { 511 CFX_ByteString PDF_EncodeText(const CFX_WideString& str) {
512 return PDF_EncodeText(str.c_str(), str.GetLength()); 512 return PDF_EncodeText(str.c_str(), str.GetLength());
513 } 513 }
514 514
515 CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, FX_BOOL bHex) { 515 CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, bool bHex) {
516 CFX_ByteTextBuf result; 516 CFX_ByteTextBuf result;
517 int srclen = src.GetLength(); 517 int srclen = src.GetLength();
518 if (bHex) { 518 if (bHex) {
519 result.AppendChar('<'); 519 result.AppendChar('<');
520 for (int i = 0; i < srclen; i++) { 520 for (int i = 0; i < srclen; i++) {
521 result.AppendChar("0123456789ABCDEF"[src[i] / 16]); 521 result.AppendChar("0123456789ABCDEF"[src[i] / 16]);
522 result.AppendChar("0123456789ABCDEF"[src[i] % 16]); 522 result.AppendChar("0123456789ABCDEF"[src[i] % 16]);
523 } 523 }
524 result.AppendChar('>'); 524 result.AppendChar('>');
525 return result.MakeString(); 525 return result.MakeString();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 dest_size); 563 dest_size);
564 } 564 }
565 565
566 uint32_t FlateDecode(const uint8_t* src_buf, 566 uint32_t FlateDecode(const uint8_t* src_buf,
567 uint32_t src_size, 567 uint32_t src_size,
568 uint8_t*& dest_buf, 568 uint8_t*& dest_buf,
569 uint32_t& dest_size) { 569 uint32_t& dest_size) {
570 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); 570 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule();
571 if (pEncoders) { 571 if (pEncoders) {
572 return pEncoders->GetFlateModule()->FlateOrLZWDecode( 572 return pEncoders->GetFlateModule()->FlateOrLZWDecode(
573 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); 573 false, src_buf, src_size, false, 0, 0, 0, 0, 0, dest_buf, dest_size);
574 } 574 }
575 return 0; 575 return 0;
576 } 576 }
OLDNEW
« no previous file with comments | « core/fpdfapi/parser/fpdf_parser_decode.h ('k') | core/fpdfapi/parser/fpdf_parser_utility.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698