OLD | NEW |
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/fpdf_parser/include/fpdf_parser_decode.h" | 7 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h" |
8 | 8 |
9 #include <limits.h> | 9 #include <limits.h> |
10 #include <utility> | 10 #include <utility> |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 } | 440 } |
441 FX_WCHAR* dest_buf = result.GetBuffer(max_chars); | 441 FX_WCHAR* dest_buf = result.GetBuffer(max_chars); |
442 const uint8_t* uni_str = src_data + 2; | 442 const uint8_t* uni_str = src_data + 2; |
443 int dest_pos = 0; | 443 int dest_pos = 0; |
444 for (uint32_t i = 0; i < max_chars * 2; i += 2) { | 444 for (uint32_t i = 0; i < max_chars * 2; i += 2) { |
445 uint16_t unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) | 445 uint16_t unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) |
446 : (uni_str[i + 1] << 8 | uni_str[i]); | 446 : (uni_str[i + 1] << 8 | uni_str[i]); |
447 if (unicode == 0x1b) { | 447 if (unicode == 0x1b) { |
448 i += 2; | 448 i += 2; |
449 while (i < max_chars * 2) { | 449 while (i < max_chars * 2) { |
450 uint16_t unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) | 450 uint16_t unicode2 = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) |
451 : (uni_str[i + 1] << 8 | uni_str[i]); | 451 : (uni_str[i + 1] << 8 | uni_str[i]); |
452 i += 2; | 452 i += 2; |
453 if (unicode == 0x1b) { | 453 if (unicode2 == 0x1b) |
454 break; | 454 break; |
455 } | |
456 } | 455 } |
457 } else { | 456 } else { |
458 dest_buf[dest_pos++] = unicode; | 457 dest_buf[dest_pos++] = unicode; |
459 } | 458 } |
460 } | 459 } |
461 result.ReleaseBuffer(dest_pos); | 460 result.ReleaseBuffer(dest_pos); |
462 } else { | 461 } else { |
463 FX_WCHAR* dest_buf = result.GetBuffer(src_len); | 462 FX_WCHAR* dest_buf = result.GetBuffer(src_len); |
464 for (uint32_t i = 0; i < src_len; i++) | 463 for (uint32_t i = 0; i < src_len; i++) |
465 dest_buf[i] = PDFDocEncoding[src_data[i]]; | 464 dest_buf[i] = PDFDocEncoding[src_data[i]]; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 result.ReleaseBuffer(0); | 498 result.ReleaseBuffer(0); |
500 return result; | 499 return result; |
501 } | 500 } |
502 | 501 |
503 int encLen = len * 2 + 2; | 502 int encLen = len * 2 + 2; |
504 | 503 |
505 uint8_t* dest_buf2 = (uint8_t*)result.GetBuffer(encLen); | 504 uint8_t* dest_buf2 = (uint8_t*)result.GetBuffer(encLen); |
506 dest_buf2[0] = 0xfe; | 505 dest_buf2[0] = 0xfe; |
507 dest_buf2[1] = 0xff; | 506 dest_buf2[1] = 0xff; |
508 dest_buf2 += 2; | 507 dest_buf2 += 2; |
509 for (int i = 0; i < len; i++) { | 508 for (int j = 0; j < len; j++) { |
510 *dest_buf2++ = pString[i] >> 8; | 509 *dest_buf2++ = pString[i] >> 8; |
511 *dest_buf2++ = (uint8_t)pString[i]; | 510 *dest_buf2++ = (uint8_t)pString[j]; |
512 } | 511 } |
513 result.ReleaseBuffer(encLen); | 512 result.ReleaseBuffer(encLen); |
514 return result; | 513 return result; |
515 } | 514 } |
516 | 515 |
517 CFX_ByteString PDF_EncodeText(const CFX_WideString& str) { | 516 CFX_ByteString PDF_EncodeText(const CFX_WideString& str) { |
518 return PDF_EncodeText(str.c_str(), str.GetLength()); | 517 return PDF_EncodeText(str.c_str(), str.GetLength()); |
519 } | 518 } |
520 | 519 |
521 CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, FX_BOOL bHex) { | 520 CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, FX_BOOL bHex) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 uint32_t src_size, | 577 uint32_t src_size, |
579 uint8_t*& dest_buf, | 578 uint8_t*& dest_buf, |
580 uint32_t& dest_size) { | 579 uint32_t& dest_size) { |
581 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); | 580 CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); |
582 if (pEncoders) { | 581 if (pEncoders) { |
583 return pEncoders->GetFlateModule()->FlateOrLZWDecode( | 582 return pEncoders->GetFlateModule()->FlateOrLZWDecode( |
584 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); | 583 FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); |
585 } | 584 } |
586 return 0; | 585 return 0; |
587 } | 586 } |
OLD | NEW |