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

Side by Side Diff: core/src/fxcodec/codec/fx_codec_fax.cpp

Issue 1252613002: FX_BOOL considered harmful. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Manual edits. Created 5 years, 5 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/src/fxcodec/codec/fx_codec.cpp ('k') | core/src/fxcodec/codec/fx_codec_flate.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 "../../../include/fxcodec/fx_codec.h" 7 #include "../../../include/fxcodec/fx_codec.h"
8 #include "codec_int.h" 8 #include "codec_int.h"
9 const uint8_t OneLeadPos[256] = { 9 const uint8_t OneLeadPos[256] = {
10 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 10 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 } 72 }
73 if (byte_pos == max_byte) { 73 if (byte_pos == max_byte) {
74 return max_pos; 74 return max_pos;
75 } 75 }
76 int pos = leading_pos[data_buf[byte_pos]] + byte_pos * 8; 76 int pos = leading_pos[data_buf[byte_pos]] + byte_pos * 8;
77 if (pos > max_pos) { 77 if (pos > max_pos) {
78 pos = max_pos; 78 pos = max_pos;
79 } 79 }
80 return pos; 80 return pos;
81 } 81 }
82 void _FaxG4FindB1B2(const uint8_t* ref_buf, int columns, int a0, FX_BOOL a0color , int& b1, int& b2) 82 void _FaxG4FindB1B2(const uint8_t* ref_buf, int columns, int a0, bool a0color, i nt& b1, int& b2)
83 { 83 {
84 if (a0color) { 84 if (a0color) {
85 a0color = 1; 85 a0color = 1;
86 } 86 }
87 uint8_t first_bit = (a0 < 0) ? 1 : ((ref_buf[a0 / 8] & (1 << (7 - a0 % 8))) != 0); 87 uint8_t first_bit = (a0 < 0) ? 1 : ((ref_buf[a0 / 8] & (1 << (7 - a0 % 8))) != 0);
88 b1 = _FindBit(ref_buf, columns, a0 + 1, !first_bit); 88 b1 = _FindBit(ref_buf, columns, a0 + 1, !first_bit);
89 if (b1 >= columns) { 89 if (b1 >= columns) {
90 b1 = b2 = columns; 90 b1 = b2 = columns;
91 return; 91 return;
92 } 92 }
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 } 393 }
394 bitpos ++; 394 bitpos ++;
395 int next_off = ins_off + ins * 3; 395 int next_off = ins_off + ins * 3;
396 for (; ins_off < next_off; ins_off += 3) { 396 for (; ins_off < next_off; ins_off += 3) {
397 if (ins_array[ins_off] == code) { 397 if (ins_array[ins_off] == code) {
398 return ins_array[ins_off + 1] + ins_array[ins_off + 2] * 256; 398 return ins_array[ins_off + 1] + ins_array[ins_off + 2] * 256;
399 } 399 }
400 } 400 }
401 } 401 }
402 } 402 }
403 FX_BOOL _FaxG4GetRow(const uint8_t* src_buf, int bitsize, int& bitpos, uint8_t* dest_buf, const uint8_t* ref_buf, int columns) 403 bool _FaxG4GetRow(const uint8_t* src_buf, int bitsize, int& bitpos, uint8_t* des t_buf, const uint8_t* ref_buf, int columns)
404 { 404 {
405 int a0 = -1, a0color = 1; 405 int a0 = -1, a0color = 1;
406 while (1) { 406 while (1) {
407 if (bitpos >= bitsize) { 407 if (bitpos >= bitsize) {
408 return FALSE; 408 return false;
409 } 409 }
410 int a1, a2, b1, b2; 410 int a1, a2, b1, b2;
411 _FaxG4FindB1B2(ref_buf, columns, a0, a0color, b1, b2); 411 _FaxG4FindB1B2(ref_buf, columns, a0, a0color, b1, b2);
412 FX_BOOL bit = NEXTBIT; 412 bool bit = NEXTBIT;
413 int v_delta = 0; 413 int v_delta = 0;
414 if (bit) { 414 if (bit) {
415 } else { 415 } else {
416 if (bitpos >= bitsize) { 416 if (bitpos >= bitsize) {
417 return FALSE; 417 return false;
418 } 418 }
419 FX_BOOL bit1 = NEXTBIT; 419 bool bit1 = NEXTBIT;
420 if (bitpos >= bitsize) { 420 if (bitpos >= bitsize) {
421 return FALSE; 421 return false;
422 } 422 }
423 FX_BOOL bit2 = NEXTBIT; 423 bool bit2 = NEXTBIT;
424 if (bit1 && bit2) { 424 if (bit1 && bit2) {
425 v_delta = 1; 425 v_delta = 1;
426 } else if (bit1) { 426 } else if (bit1) {
427 v_delta = -1; 427 v_delta = -1;
428 } else if (bit2) { 428 } else if (bit2) {
429 int run_len1 = 0; 429 int run_len1 = 0;
430 while (1) { 430 while (1) {
431 int run = _FaxGetRun(a0color ? FaxWhiteRunIns : FaxBlackRunI ns, src_buf, bitpos, bitsize); 431 int run = _FaxGetRun(a0color ? FaxWhiteRunIns : FaxBlackRunI ns, src_buf, bitpos, bitsize);
432 run_len1 += run; 432 run_len1 += run;
433 if (run < 64) { 433 if (run < 64) {
(...skipping 16 matching lines...) Expand all
450 } 450 }
451 } 451 }
452 a2 = a1 + run_len2; 452 a2 = a1 + run_len2;
453 if (a0color) { 453 if (a0color) {
454 _FaxFillBits(dest_buf, columns, a1, a2); 454 _FaxFillBits(dest_buf, columns, a1, a2);
455 } 455 }
456 a0 = a2; 456 a0 = a2;
457 if (a0 < columns) { 457 if (a0 < columns) {
458 continue; 458 continue;
459 } 459 }
460 return TRUE; 460 return true;
461 } else { 461 } else {
462 if (bitpos >= bitsize) { 462 if (bitpos >= bitsize) {
463 return FALSE; 463 return false;
464 } 464 }
465 bit = NEXTBIT; 465 bit = NEXTBIT;
466 if (bit) { 466 if (bit) {
467 if (!a0color) { 467 if (!a0color) {
468 _FaxFillBits(dest_buf, columns, a0, b2); 468 _FaxFillBits(dest_buf, columns, a0, b2);
469 } 469 }
470 if (b2 >= columns) { 470 if (b2 >= columns) {
471 return TRUE; 471 return true;
472 } 472 }
473 a0 = b2; 473 a0 = b2;
474 continue; 474 continue;
475 } else { 475 } else {
476 if (bitpos >= bitsize) { 476 if (bitpos >= bitsize) {
477 return FALSE; 477 return false;
478 } 478 }
479 FX_BOOL bit1 = NEXTBIT; 479 bool bit1 = NEXTBIT;
480 if (bitpos >= bitsize) { 480 if (bitpos >= bitsize) {
481 return FALSE; 481 return false;
482 } 482 }
483 FX_BOOL bit2 = NEXTBIT; 483 bool bit2 = NEXTBIT;
484 if (bit1 && bit2) { 484 if (bit1 && bit2) {
485 v_delta = 2; 485 v_delta = 2;
486 } else if (bit1) { 486 } else if (bit1) {
487 v_delta = -2; 487 v_delta = -2;
488 } else if (bit2) { 488 } else if (bit2) {
489 if (bitpos >= bitsize) { 489 if (bitpos >= bitsize) {
490 return FALSE; 490 return false;
491 } 491 }
492 bit = NEXTBIT; 492 bit = NEXTBIT;
493 if (bit) { 493 if (bit) {
494 v_delta = 3; 494 v_delta = 3;
495 } else { 495 } else {
496 v_delta = -3; 496 v_delta = -3;
497 } 497 }
498 } else { 498 } else {
499 if (bitpos >= bitsize) { 499 if (bitpos >= bitsize) {
500 return FALSE; 500 return false;
501 } 501 }
502 bit = NEXTBIT; 502 bit = NEXTBIT;
503 if (bit) { 503 if (bit) {
504 bitpos += 3; 504 bitpos += 3;
505 continue; 505 continue;
506 } else { 506 } else {
507 bitpos += 5; 507 bitpos += 5;
508 return TRUE; 508 return true;
509 } 509 }
510 } 510 }
511 } 511 }
512 } 512 }
513 } 513 }
514 a1 = b1 + v_delta; 514 a1 = b1 + v_delta;
515 if (!a0color) { 515 if (!a0color) {
516 _FaxFillBits(dest_buf, columns, a0, a1); 516 _FaxFillBits(dest_buf, columns, a0, a1);
517 } 517 }
518 if (a1 >= columns) { 518 if (a1 >= columns) {
519 return TRUE; 519 return true;
520 } 520 }
521 a0 = a1; 521 a0 = a1;
522 a0color = !a0color; 522 a0color = !a0color;
523 } 523 }
524 } 524 }
525 FX_BOOL _FaxSkipEOL(const uint8_t* src_buf, int bitsize, int& bitpos) 525 bool _FaxSkipEOL(const uint8_t* src_buf, int bitsize, int& bitpos)
526 { 526 {
527 int startbit = bitpos; 527 int startbit = bitpos;
528 while (bitpos < bitsize) { 528 while (bitpos < bitsize) {
529 int bit = NEXTBIT; 529 int bit = NEXTBIT;
530 if (bit) { 530 if (bit) {
531 if (bitpos - startbit <= 11) { 531 if (bitpos - startbit <= 11) {
532 bitpos = startbit; 532 bitpos = startbit;
533 } 533 }
534 return TRUE; 534 return true;
535 } 535 }
536 } 536 }
537 return FALSE; 537 return false;
538 } 538 }
539 FX_BOOL _FaxGet1DLine(const uint8_t* src_buf, int bitsize, int& bitpos, uint8_t* dest_buf, int columns) 539 bool _FaxGet1DLine(const uint8_t* src_buf, int bitsize, int& bitpos, uint8_t* de st_buf, int columns)
540 { 540 {
541 int color = TRUE; 541 int color = true;
542 int startpos = 0; 542 int startpos = 0;
543 while (1) { 543 while (1) {
544 if (bitpos >= bitsize) { 544 if (bitpos >= bitsize) {
545 return FALSE; 545 return false;
546 } 546 }
547 int run_len = 0; 547 int run_len = 0;
548 while (1) { 548 while (1) {
549 int run = _FaxGetRun(color ? FaxWhiteRunIns : FaxBlackRunIns, src_bu f, bitpos, bitsize); 549 int run = _FaxGetRun(color ? FaxWhiteRunIns : FaxBlackRunIns, src_bu f, bitpos, bitsize);
550 if (run < 0) { 550 if (run < 0) {
551 while (bitpos < bitsize) { 551 while (bitpos < bitsize) {
552 int bit = NEXTBIT; 552 int bit = NEXTBIT;
553 if (bit) { 553 if (bit) {
554 return TRUE; 554 return true;
555 } 555 }
556 } 556 }
557 return FALSE; 557 return false;
558 } 558 }
559 run_len += run; 559 run_len += run;
560 if (run < 64) { 560 if (run < 64) {
561 break; 561 break;
562 } 562 }
563 } 563 }
564 if (!color) { 564 if (!color) {
565 _FaxFillBits(dest_buf, columns, startpos, startpos + run_len); 565 _FaxFillBits(dest_buf, columns, startpos, startpos + run_len);
566 } 566 }
567 startpos += run_len; 567 startpos += run_len;
568 if (startpos >= columns) { 568 if (startpos >= columns) {
569 break; 569 break;
570 } 570 }
571 color = !color; 571 color = !color;
572 } 572 }
573 return TRUE; 573 return true;
574 } 574 }
575 class CCodec_FaxDecoder : public CCodec_ScanlineDecoder 575 class CCodec_FaxDecoder : public CCodec_ScanlineDecoder
576 { 576 {
577 public: 577 public:
578 CCodec_FaxDecoder(); 578 CCodec_FaxDecoder();
579 virtual ~CCodec_FaxDecoder(); 579 virtual ~CCodec_FaxDecoder();
580 FX_BOOL» » » » Create(const uint8_t* src_buf, FX_DWORD src_size, int width, int height, 580 bool» » » » Create(const uint8_t* src_buf, FX_DWORD src_size, int width, int height,
581 int K, FX_BOOL EndOfLine, FX_BOOL EncodedByteAlig n, FX_BOOL BlackIs1, int Columns, int Rows); 581 int K, bool EndOfLine, bool EncodedByteAlign, boo l BlackIs1, int Columns, int Rows);
582 virtual void v_DownScale(int dest_width, int dest_height) {} 582 virtual void v_DownScale(int dest_width, int dest_height) {}
583 virtual FX_BOOL» » v_Rewind(); 583 virtual bool» » v_Rewind();
584 virtual uint8_t* v_GetNextLine(); 584 virtual uint8_t* v_GetNextLine();
585 virtual FX_DWORD GetSrcOffset(); 585 virtual FX_DWORD GetSrcOffset();
586 int m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack; 586 int m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack;
587 int bitpos; 587 int bitpos;
588 const uint8_t* m_pSrcBuf; 588 const uint8_t* m_pSrcBuf;
589 FX_DWORD m_SrcSize; 589 FX_DWORD m_SrcSize;
590 uint8_t* m_pScanlineBuf; 590 uint8_t* m_pScanlineBuf;
591 uint8_t* m_pRefBuf; 591 uint8_t* m_pRefBuf;
592 }; 592 };
593 CCodec_FaxDecoder::CCodec_FaxDecoder() 593 CCodec_FaxDecoder::CCodec_FaxDecoder()
594 { 594 {
595 m_pScanlineBuf = NULL; 595 m_pScanlineBuf = NULL;
596 m_pRefBuf = NULL; 596 m_pRefBuf = NULL;
597 } 597 }
598 CCodec_FaxDecoder::~CCodec_FaxDecoder() 598 CCodec_FaxDecoder::~CCodec_FaxDecoder()
599 { 599 {
600 if (m_pScanlineBuf) { 600 if (m_pScanlineBuf) {
601 FX_Free(m_pScanlineBuf); 601 FX_Free(m_pScanlineBuf);
602 } 602 }
603 if (m_pRefBuf) { 603 if (m_pRefBuf) {
604 FX_Free(m_pRefBuf); 604 FX_Free(m_pRefBuf);
605 } 605 }
606 } 606 }
607 FX_BOOL CCodec_FaxDecoder::Create(const uint8_t* src_buf, FX_DWORD src_size, int width, int height, 607 bool CCodec_FaxDecoder::Create(const uint8_t* src_buf, FX_DWORD src_size, int wi dth, int height,
608 int K, FX_BOOL EndOfLine, FX_BOOL EncodedByteA lign, FX_BOOL BlackIs1, int Columns, int Rows) 608 int K, bool EndOfLine, bool EncodedByteAlign, bool BlackIs1, int Columns, int Rows)
609 { 609 {
610 m_Encoding = K; 610 m_Encoding = K;
611 m_bEndOfLine = EndOfLine; 611 m_bEndOfLine = EndOfLine;
612 m_bByteAlign = EncodedByteAlign; 612 m_bByteAlign = EncodedByteAlign;
613 m_bBlack = BlackIs1; 613 m_bBlack = BlackIs1;
614 m_OrigWidth = Columns; 614 m_OrigWidth = Columns;
615 m_OrigHeight = Rows; 615 m_OrigHeight = Rows;
616 if (m_OrigWidth == 0) { 616 if (m_OrigWidth == 0) {
617 m_OrigWidth = width; 617 m_OrigWidth = width;
618 } 618 }
619 if (m_OrigHeight == 0) { 619 if (m_OrigHeight == 0) {
620 m_OrigHeight = height; 620 m_OrigHeight = height;
621 } 621 }
622 m_Pitch = (m_OrigWidth + 31) / 32 * 4; 622 m_Pitch = (m_OrigWidth + 31) / 32 * 4;
623 m_OutputWidth = m_OrigWidth; 623 m_OutputWidth = m_OrigWidth;
624 m_OutputHeight = m_OrigHeight; 624 m_OutputHeight = m_OrigHeight;
625 m_pScanlineBuf = FX_Alloc(uint8_t, m_Pitch); 625 m_pScanlineBuf = FX_Alloc(uint8_t, m_Pitch);
626 m_pRefBuf = FX_Alloc(uint8_t, m_Pitch); 626 m_pRefBuf = FX_Alloc(uint8_t, m_Pitch);
627 m_pSrcBuf = src_buf; 627 m_pSrcBuf = src_buf;
628 m_SrcSize = src_size; 628 m_SrcSize = src_size;
629 m_nComps = 1; 629 m_nComps = 1;
630 m_bpc = 1; 630 m_bpc = 1;
631 m_bColorTransformed = FALSE; 631 m_bColorTransformed = false;
632 return TRUE; 632 return true;
633 } 633 }
634 FX_BOOL CCodec_FaxDecoder::v_Rewind() 634 bool CCodec_FaxDecoder::v_Rewind()
635 { 635 {
636 FXSYS_memset(m_pRefBuf, 0xff, m_Pitch); 636 FXSYS_memset(m_pRefBuf, 0xff, m_Pitch);
637 bitpos = 0; 637 bitpos = 0;
638 return TRUE; 638 return true;
639 } 639 }
640 uint8_t* CCodec_FaxDecoder::v_GetNextLine() 640 uint8_t* CCodec_FaxDecoder::v_GetNextLine()
641 { 641 {
642 int bitsize = m_SrcSize * 8; 642 int bitsize = m_SrcSize * 8;
643 _FaxSkipEOL(m_pSrcBuf, bitsize, bitpos); 643 _FaxSkipEOL(m_pSrcBuf, bitsize, bitpos);
644 if (bitpos >= bitsize) { 644 if (bitpos >= bitsize) {
645 return NULL; 645 return NULL;
646 } 646 }
647 FXSYS_memset(m_pScanlineBuf, 0xff, m_Pitch); 647 FXSYS_memset(m_pScanlineBuf, 0xff, m_Pitch);
648 if (m_Encoding < 0) { 648 if (m_Encoding < 0) {
649 _FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, m_Or igWidth); 649 _FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, m_Or igWidth);
650 FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch); 650 FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch);
651 } else if (m_Encoding == 0) { 651 } else if (m_Encoding == 0) {
652 _FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidth); 652 _FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidth);
653 } else { 653 } else {
654 FX_BOOL bNext1D = m_pSrcBuf[bitpos / 8] & (1 << (7 - bitpos % 8)); 654 bool bNext1D = m_pSrcBuf[bitpos / 8] & (1 << (7 - bitpos % 8));
655 bitpos ++; 655 bitpos ++;
656 if (bNext1D) { 656 if (bNext1D) {
657 _FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidt h); 657 _FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidt h);
658 } else { 658 } else {
659 _FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, m_OrigWidth); 659 _FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, m_OrigWidth);
660 } 660 }
661 FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch); 661 FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch);
662 } 662 }
663 if (m_bEndOfLine) { 663 if (m_bEndOfLine) {
664 _FaxSkipEOL(m_pSrcBuf, bitsize, bitpos); 664 _FaxSkipEOL(m_pSrcBuf, bitsize, bitpos);
665 } 665 }
666 if (m_bByteAlign && bitpos < bitsize) { 666 if (m_bByteAlign && bitpos < bitsize) {
667 int bitpos0 = bitpos; 667 int bitpos0 = bitpos;
668 int bitpos1 = (bitpos + 7) / 8 * 8; 668 int bitpos1 = (bitpos + 7) / 8 * 8;
669 while (m_bByteAlign && bitpos0 < bitpos1) { 669 while (m_bByteAlign && bitpos0 < bitpos1) {
670 int bit = m_pSrcBuf[bitpos0 / 8] & (1 << (7 - bitpos0 % 8)); 670 int bit = m_pSrcBuf[bitpos0 / 8] & (1 << (7 - bitpos0 % 8));
671 if (bit != 0) { 671 if (bit != 0) {
672 m_bByteAlign = FALSE; 672 m_bByteAlign = false;
673 } else { 673 } else {
674 bitpos0 ++; 674 bitpos0 ++;
675 } 675 }
676 } 676 }
677 if (m_bByteAlign) { 677 if (m_bByteAlign) {
678 bitpos = bitpos1; 678 bitpos = bitpos1;
679 } 679 }
680 } 680 }
681 if (m_bBlack) { 681 if (m_bBlack) {
682 for (int i = 0; i < m_Pitch; i ++) { 682 for (int i = 0; i < m_Pitch; i ++) {
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
839 }; 839 };
840 static void _AddBitStream(uint8_t* dest_buf, int& dest_bitpos, int data, int bit len) 840 static void _AddBitStream(uint8_t* dest_buf, int& dest_bitpos, int data, int bit len)
841 { 841 {
842 for (int i = bitlen - 1; i >= 0; i --) { 842 for (int i = bitlen - 1; i >= 0; i --) {
843 if (data & (1 << i)) { 843 if (data & (1 << i)) {
844 dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); 844 dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8);
845 } 845 }
846 dest_bitpos ++; 846 dest_bitpos ++;
847 } 847 }
848 } 848 }
849 static void _FaxEncodeRun(uint8_t* dest_buf, int& dest_bitpos, int run, FX_BOOL bWhite) 849 static void _FaxEncodeRun(uint8_t* dest_buf, int& dest_bitpos, int run, bool bWh ite)
850 { 850 {
851 while (run >= 2560) { 851 while (run >= 2560) {
852 _AddBitStream(dest_buf, dest_bitpos, 0x1f, 12); 852 _AddBitStream(dest_buf, dest_bitpos, 0x1f, 12);
853 run -= 2560; 853 run -= 2560;
854 } 854 }
855 if (run >= 64) { 855 if (run >= 64) {
856 int markup = run - run % 64; 856 int markup = run - run % 64;
857 const uint8_t* p = bWhite ? WhiteRunMarkup : BlackRunMarkup; 857 const uint8_t* p = bWhite ? WhiteRunMarkup : BlackRunMarkup;
858 p += (markup / 64 - 1) * 2; 858 p += (markup / 64 - 1) * 2;
859 _AddBitStream(dest_buf, dest_bitpos, *p, p[1]); 859 _AddBitStream(dest_buf, dest_bitpos, *p, p[1]);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 dest_bitpos %= 8; 965 dest_bitpos %= 8;
966 FXSYS_memcpy(m_pRefLine, scan_line, m_Pitch); 966 FXSYS_memcpy(m_pRefLine, scan_line, m_Pitch);
967 } 967 }
968 if (dest_bitpos) { 968 if (dest_bitpos) {
969 m_DestBuf.AppendByte(last_byte); 969 m_DestBuf.AppendByte(last_byte);
970 } 970 }
971 dest_buf = m_DestBuf.GetBuffer(); 971 dest_buf = m_DestBuf.GetBuffer();
972 dest_size = m_DestBuf.GetSize(); 972 dest_size = m_DestBuf.GetSize();
973 m_DestBuf.DetachBuffer(); 973 m_DestBuf.DetachBuffer();
974 } 974 }
975 FX_BOOL»CCodec_FaxModule::Encode(const uint8_t* src_buf, int width, int height, int pitch, uint8_t*& dest_buf, FX_DWORD& dest_size) 975 bool» CCodec_FaxModule::Encode(const uint8_t* src_buf, int width, int height, int pitch, uint8_t*& dest_buf, FX_DWORD& dest_size)
976 { 976 {
977 CCodec_FaxEncoder encoder(src_buf, width, height, pitch); 977 CCodec_FaxEncoder encoder(src_buf, width, height, pitch);
978 encoder.Encode(dest_buf, dest_size); 978 encoder.Encode(dest_buf, dest_size);
979 return TRUE; 979 return true;
980 } 980 }
981 ICodec_ScanlineDecoder* CCodec_FaxModule::CreateDecoder(const uint8_t* src_buf, FX_DWORD src_size, int width, int height, 981 ICodec_ScanlineDecoder* CCodec_FaxModule::CreateDecoder(const uint8_t* src_buf, FX_DWORD src_size, int width, int height,
982 int K, FX_BOOL EndOfLine, FX_BOOL EncodedByteAlign, FX_BOOL BlackIs1, in t Columns, int Rows) 982 int K, bool EndOfLine, bool EncodedByteAlign, bool BlackIs1, int Columns , int Rows)
983 { 983 {
984 CCodec_FaxDecoder* pDecoder = new CCodec_FaxDecoder; 984 CCodec_FaxDecoder* pDecoder = new CCodec_FaxDecoder;
985 pDecoder->Create(src_buf, src_size, width, height, K, EndOfLine, EncodedByte Align, BlackIs1, Columns, Rows); 985 pDecoder->Create(src_buf, src_size, width, height, K, EndOfLine, EncodedByte Align, BlackIs1, Columns, Rows);
986 return pDecoder; 986 return pDecoder;
987 } 987 }
OLDNEW
« no previous file with comments | « core/src/fxcodec/codec/fx_codec.cpp ('k') | core/src/fxcodec/codec/fx_codec_flate.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698