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/fxge/dib/dib_int.h" | 7 #include "core/fxge/dib/dib_int.h" |
8 | 8 |
9 #include "core/include/fxge/fx_dib.h" | 9 #include "core/include/fxge/fx_dib.h" |
10 | 10 |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 dest_step -= 2; | 222 dest_step -= 2; |
223 } | 223 } |
224 for (int row = row_start; row < row_end; row++) { | 224 for (int row = row_start; row < row_end; row++) { |
225 int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - | 225 int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - |
226 dest_clip.left; | 226 dest_clip.left; |
227 uint8_t* dest_scan = dest_buf + dest_col * nBytes; | 227 uint8_t* dest_scan = dest_buf + dest_col * nBytes; |
228 if (bYFlip) { | 228 if (bYFlip) { |
229 dest_scan += (result_height - 1) * dest_pitch; | 229 dest_scan += (result_height - 1) * dest_pitch; |
230 } | 230 } |
231 if (nBytes == 4) { | 231 if (nBytes == 4) { |
232 FX_DWORD* src_scan = (FX_DWORD*)GetScanline(row) + col_start; | 232 uint32_t* src_scan = (uint32_t*)GetScanline(row) + col_start; |
233 for (int col = col_start; col < col_end; col++) { | 233 for (int col = col_start; col < col_end; col++) { |
234 *(FX_DWORD*)dest_scan = *src_scan++; | 234 *(uint32_t*)dest_scan = *src_scan++; |
235 dest_scan += dest_step; | 235 dest_scan += dest_step; |
236 } | 236 } |
237 } else { | 237 } else { |
238 const uint8_t* src_scan = GetScanline(row) + col_start * nBytes; | 238 const uint8_t* src_scan = GetScanline(row) + col_start * nBytes; |
239 if (nBytes == 1) { | 239 if (nBytes == 1) { |
240 for (int col = col_start; col < col_end; col++) { | 240 for (int col = col_start; col < col_end; col++) { |
241 *dest_scan = *src_scan++; | 241 *dest_scan = *src_scan++; |
242 dest_scan += dest_step; | 242 dest_scan += dest_step; |
243 } | 243 } |
244 } else { | 244 } else { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 } else { | 292 } else { |
293 rect.top = clip.left; | 293 rect.top = clip.left; |
294 rect.bottom = clip.right; | 294 rect.bottom = clip.right; |
295 } | 295 } |
296 rect.Normalize(); | 296 rect.Normalize(); |
297 return rect; | 297 return rect; |
298 } | 298 } |
299 CFX_DIBitmap* CFX_DIBSource::TransformTo(const CFX_Matrix* pDestMatrix, | 299 CFX_DIBitmap* CFX_DIBSource::TransformTo(const CFX_Matrix* pDestMatrix, |
300 int& result_left, | 300 int& result_left, |
301 int& result_top, | 301 int& result_top, |
302 FX_DWORD flags, | 302 uint32_t flags, |
303 const FX_RECT* pDestClip) const { | 303 const FX_RECT* pDestClip) const { |
304 CFX_ImageTransformer transformer; | 304 CFX_ImageTransformer transformer; |
305 transformer.Start(this, pDestMatrix, flags, pDestClip); | 305 transformer.Start(this, pDestMatrix, flags, pDestClip); |
306 transformer.Continue(NULL); | 306 transformer.Continue(NULL); |
307 result_left = transformer.m_ResultLeft; | 307 result_left = transformer.m_ResultLeft; |
308 result_top = transformer.m_ResultTop; | 308 result_top = transformer.m_ResultTop; |
309 CFX_DIBitmap* pTransformed = transformer.m_Storer.Detach(); | 309 CFX_DIBitmap* pTransformed = transformer.m_Storer.Detach(); |
310 return pTransformed; | 310 return pTransformed; |
311 } | 311 } |
312 CFX_DIBitmap* CFX_DIBSource::StretchTo(int dest_width, | 312 CFX_DIBitmap* CFX_DIBSource::StretchTo(int dest_width, |
313 int dest_height, | 313 int dest_height, |
314 FX_DWORD flags, | 314 uint32_t flags, |
315 const FX_RECT* pClip) const { | 315 const FX_RECT* pClip) const { |
316 FX_RECT clip_rect(0, 0, FXSYS_abs(dest_width), FXSYS_abs(dest_height)); | 316 FX_RECT clip_rect(0, 0, FXSYS_abs(dest_width), FXSYS_abs(dest_height)); |
317 if (pClip) { | 317 if (pClip) { |
318 clip_rect.Intersect(*pClip); | 318 clip_rect.Intersect(*pClip); |
319 } | 319 } |
320 if (clip_rect.IsEmpty()) { | 320 if (clip_rect.IsEmpty()) { |
321 return NULL; | 321 return NULL; |
322 } | 322 } |
323 if (dest_width == m_Width && dest_height == m_Height) { | 323 if (dest_width == m_Width && dest_height == m_Height) { |
324 return Clone(&clip_rect); | 324 return Clone(&clip_rect); |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 *dest_scan = *src_pixel; | 616 *dest_scan = *src_pixel; |
617 } | 617 } |
618 dest_scan++; | 618 dest_scan++; |
619 } | 619 } |
620 } | 620 } |
621 } | 621 } |
622 } else { | 622 } else { |
623 int Bpp = m_Storer.GetBitmap()->GetBPP() / 8; | 623 int Bpp = m_Storer.GetBitmap()->GetBPP() / 8; |
624 int destBpp = pTransformed->GetBPP() / 8; | 624 int destBpp = pTransformed->GetBPP() / 8; |
625 if (Bpp == 1) { | 625 if (Bpp == 1) { |
626 FX_DWORD argb[256]; | 626 uint32_t argb[256]; |
627 FX_ARGB* pPal = m_Storer.GetBitmap()->GetPalette(); | 627 FX_ARGB* pPal = m_Storer.GetBitmap()->GetPalette(); |
628 if (pPal) { | 628 if (pPal) { |
629 for (int i = 0; i < 256; i++) { | 629 for (int i = 0; i < 256; i++) { |
630 argb[i] = pPal[i]; | 630 argb[i] = pPal[i]; |
631 } | 631 } |
632 } else { | 632 } else { |
633 if (m_Storer.GetBitmap()->IsCmykImage()) { | 633 if (m_Storer.GetBitmap()->IsCmykImage()) { |
634 for (int i = 0; i < 256; i++) { | 634 for (int i = 0; i < 256; i++) { |
635 argb[i] = 255 - i; | 635 argb[i] = 255 - i; |
636 } | 636 } |
(...skipping 23 matching lines...) Expand all Loading... |
660 int src_col_r = src_col_l + 1; | 660 int src_col_r = src_col_l + 1; |
661 int src_row_r = src_row_l + 1; | 661 int src_row_r = src_row_l + 1; |
662 if (src_col_r == stretch_width) { | 662 if (src_col_r == stretch_width) { |
663 src_col_r--; | 663 src_col_r--; |
664 } | 664 } |
665 if (src_row_r == stretch_height) { | 665 if (src_row_r == stretch_height) { |
666 src_row_r--; | 666 src_row_r--; |
667 } | 667 } |
668 int row_offset_l = src_row_l * stretch_pitch; | 668 int row_offset_l = src_row_l * stretch_pitch; |
669 int row_offset_r = src_row_r * stretch_pitch; | 669 int row_offset_r = src_row_r * stretch_pitch; |
670 FX_DWORD r_bgra_cmyk = argb[bilinear_interpol( | 670 uint32_t r_bgra_cmyk = argb[bilinear_interpol( |
671 stretch_buf, row_offset_l, row_offset_r, src_col_l, src_col_r, | 671 stretch_buf, row_offset_l, row_offset_r, src_col_l, src_col_r, |
672 res_x, res_y, 1, 0)]; | 672 res_x, res_y, 1, 0)]; |
673 if (transformF == FXDIB_Rgba) { | 673 if (transformF == FXDIB_Rgba) { |
674 dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); | 674 dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); |
675 dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); | 675 dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); |
676 dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); | 676 dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); |
677 } else { | 677 } else { |
678 *(FX_DWORD*)dest_pos = r_bgra_cmyk; | 678 *(uint32_t*)dest_pos = r_bgra_cmyk; |
679 } | 679 } |
680 } | 680 } |
681 dest_pos += destBpp; | 681 dest_pos += destBpp; |
682 } | 682 } |
683 } | 683 } |
684 } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { | 684 } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { |
685 CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); | 685 CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); |
686 for (int row = 0; row < m_ResultHeight; row++) { | 686 for (int row = 0; row < m_ResultHeight; row++) { |
687 uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); | 687 uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); |
688 for (int col = 0; col < m_ResultWidth; col++) { | 688 for (int col = 0; col < m_ResultWidth; col++) { |
689 int src_col_l, src_row_l, res_x, res_y; | 689 int src_col_l, src_row_l, res_x, res_y; |
690 result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, | 690 result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, |
691 res_y); | 691 res_y); |
692 if (src_col_l >= 0 && src_col_l <= stretch_width && | 692 if (src_col_l >= 0 && src_col_l <= stretch_width && |
693 src_row_l >= 0 && src_row_l <= stretch_height) { | 693 src_row_l >= 0 && src_row_l <= stretch_height) { |
694 int pos_pixel[8]; | 694 int pos_pixel[8]; |
695 int u_w[4], v_w[4]; | 695 int u_w[4], v_w[4]; |
696 if (src_col_l == stretch_width) { | 696 if (src_col_l == stretch_width) { |
697 src_col_l--; | 697 src_col_l--; |
698 } | 698 } |
699 if (src_row_l == stretch_height) { | 699 if (src_row_l == stretch_height) { |
700 src_row_l--; | 700 src_row_l--; |
701 } | 701 } |
702 bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, | 702 bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, |
703 res_x, res_y, stretch_width, | 703 res_x, res_y, stretch_width, |
704 stretch_height); | 704 stretch_height); |
705 FX_DWORD r_bgra_cmyk = | 705 uint32_t r_bgra_cmyk = |
706 argb[bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, | 706 argb[bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, |
707 u_w, v_w, res_x, res_y, 1, 0)]; | 707 u_w, v_w, res_x, res_y, 1, 0)]; |
708 if (transformF == FXDIB_Rgba) { | 708 if (transformF == FXDIB_Rgba) { |
709 dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); | 709 dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); |
710 dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); | 710 dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); |
711 dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); | 711 dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); |
712 } else { | 712 } else { |
713 *(FX_DWORD*)dest_pos = r_bgra_cmyk; | 713 *(uint32_t*)dest_pos = r_bgra_cmyk; |
714 } | 714 } |
715 } | 715 } |
716 dest_pos += destBpp; | 716 dest_pos += destBpp; |
717 } | 717 } |
718 } | 718 } |
719 } else { | 719 } else { |
720 CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); | 720 CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); |
721 for (int row = 0; row < m_ResultHeight; row++) { | 721 for (int row = 0; row < m_ResultHeight; row++) { |
722 uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); | 722 uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); |
723 for (int col = 0; col < m_ResultWidth; col++) { | 723 for (int col = 0; col < m_ResultWidth; col++) { |
724 int src_col, src_row; | 724 int src_col, src_row; |
725 result2stretch_fix.Transform(col, row, src_col, src_row); | 725 result2stretch_fix.Transform(col, row, src_col, src_row); |
726 if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && | 726 if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && |
727 src_row <= stretch_height) { | 727 src_row <= stretch_height) { |
728 if (src_col == stretch_width) { | 728 if (src_col == stretch_width) { |
729 src_col--; | 729 src_col--; |
730 } | 730 } |
731 if (src_row == stretch_height) { | 731 if (src_row == stretch_height) { |
732 src_row--; | 732 src_row--; |
733 } | 733 } |
734 FX_DWORD r_bgra_cmyk = | 734 uint32_t r_bgra_cmyk = |
735 argb[stretch_buf[src_row * stretch_pitch + src_col]]; | 735 argb[stretch_buf[src_row * stretch_pitch + src_col]]; |
736 if (transformF == FXDIB_Rgba) { | 736 if (transformF == FXDIB_Rgba) { |
737 dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); | 737 dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); |
738 dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); | 738 dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); |
739 dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); | 739 dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); |
740 } else { | 740 } else { |
741 *(FX_DWORD*)dest_pos = r_bgra_cmyk; | 741 *(uint32_t*)dest_pos = r_bgra_cmyk; |
742 } | 742 } |
743 } | 743 } |
744 dest_pos += destBpp; | 744 dest_pos += destBpp; |
745 } | 745 } |
746 } | 746 } |
747 } | 747 } |
748 } else { | 748 } else { |
749 FX_BOOL bHasAlpha = m_Storer.GetBitmap()->HasAlpha(); | 749 FX_BOOL bHasAlpha = m_Storer.GetBitmap()->HasAlpha(); |
750 int destBpp = pTransformed->GetBPP() / 8; | 750 int destBpp = pTransformed->GetBPP() / 8; |
751 if (!(m_Flags & FXDIB_DOWNSAMPLE) && | 751 if (!(m_Flags & FXDIB_DOWNSAMPLE) && |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 if (bHasAlpha) { | 787 if (bHasAlpha) { |
788 if (transformF != FXDIB_Argb) { | 788 if (transformF != FXDIB_Argb) { |
789 if (transformF == FXDIB_Rgba) { | 789 if (transformF == FXDIB_Rgba) { |
790 dest_pos[0] = r_pos_blue_c_r; | 790 dest_pos[0] = r_pos_blue_c_r; |
791 dest_pos[1] = r_pos_green_m_r; | 791 dest_pos[1] = r_pos_green_m_r; |
792 dest_pos[2] = r_pos_red_y_r; | 792 dest_pos[2] = r_pos_red_y_r; |
793 } else { | 793 } else { |
794 r_pos_k_r = bilinear_interpol( | 794 r_pos_k_r = bilinear_interpol( |
795 stretch_buf, row_offset_l, row_offset_r, src_col_l, | 795 stretch_buf, row_offset_l, row_offset_r, src_col_l, |
796 src_col_r, res_x, res_y, Bpp, 3); | 796 src_col_r, res_x, res_y, Bpp, 3); |
797 *(FX_DWORD*)dest_pos = | 797 *(uint32_t*)dest_pos = |
798 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, | 798 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, |
799 r_pos_red_y_r, r_pos_k_r)); | 799 r_pos_red_y_r, r_pos_k_r)); |
800 } | 800 } |
801 } else { | 801 } else { |
802 uint8_t r_pos_a_r = bilinear_interpol( | 802 uint8_t r_pos_a_r = bilinear_interpol( |
803 stretch_buf, row_offset_l, row_offset_r, src_col_l, | 803 stretch_buf, row_offset_l, row_offset_r, src_col_l, |
804 src_col_r, res_x, res_y, Bpp, 3); | 804 src_col_r, res_x, res_y, Bpp, 3); |
805 *(FX_DWORD*)dest_pos = FXARGB_TODIB( | 805 *(uint32_t*)dest_pos = FXARGB_TODIB( |
806 FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, | 806 FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, |
807 r_pos_blue_c_r)); | 807 r_pos_blue_c_r)); |
808 } | 808 } |
809 } else { | 809 } else { |
810 r_pos_k_r = 0xff; | 810 r_pos_k_r = 0xff; |
811 if (transformF == FXDIB_Cmyka) { | 811 if (transformF == FXDIB_Cmyka) { |
812 r_pos_k_r = bilinear_interpol( | 812 r_pos_k_r = bilinear_interpol( |
813 stretch_buf, row_offset_l, row_offset_r, src_col_l, | 813 stretch_buf, row_offset_l, row_offset_r, src_col_l, |
814 src_col_r, res_x, res_y, Bpp, 3); | 814 src_col_r, res_x, res_y, Bpp, 3); |
815 *(FX_DWORD*)dest_pos = | 815 *(uint32_t*)dest_pos = |
816 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, | 816 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, |
817 r_pos_red_y_r, r_pos_k_r)); | 817 r_pos_red_y_r, r_pos_k_r)); |
818 } else { | 818 } else { |
819 *(FX_DWORD*)dest_pos = FXARGB_TODIB( | 819 *(uint32_t*)dest_pos = FXARGB_TODIB( |
820 FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, | 820 FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, |
821 r_pos_blue_c_r)); | 821 r_pos_blue_c_r)); |
822 } | 822 } |
823 } | 823 } |
824 } | 824 } |
825 dest_pos += destBpp; | 825 dest_pos += destBpp; |
826 } | 826 } |
827 } | 827 } |
828 } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { | 828 } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { |
829 CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); | 829 CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); |
(...skipping 28 matching lines...) Expand all Loading... |
858 if (bHasAlpha) { | 858 if (bHasAlpha) { |
859 if (transformF != FXDIB_Argb) { | 859 if (transformF != FXDIB_Argb) { |
860 if (transformF == FXDIB_Rgba) { | 860 if (transformF == FXDIB_Rgba) { |
861 dest_pos[0] = r_pos_blue_c_r; | 861 dest_pos[0] = r_pos_blue_c_r; |
862 dest_pos[1] = r_pos_green_m_r; | 862 dest_pos[1] = r_pos_green_m_r; |
863 dest_pos[2] = r_pos_red_y_r; | 863 dest_pos[2] = r_pos_red_y_r; |
864 } else { | 864 } else { |
865 r_pos_k_r = | 865 r_pos_k_r = |
866 bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, | 866 bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, |
867 u_w, v_w, res_x, res_y, Bpp, 3); | 867 u_w, v_w, res_x, res_y, Bpp, 3); |
868 *(FX_DWORD*)dest_pos = | 868 *(uint32_t*)dest_pos = |
869 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, | 869 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, |
870 r_pos_red_y_r, r_pos_k_r)); | 870 r_pos_red_y_r, r_pos_k_r)); |
871 } | 871 } |
872 } else { | 872 } else { |
873 uint8_t r_pos_a_r = | 873 uint8_t r_pos_a_r = |
874 bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, | 874 bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, |
875 u_w, v_w, res_x, res_y, Bpp, 3); | 875 u_w, v_w, res_x, res_y, Bpp, 3); |
876 *(FX_DWORD*)dest_pos = FXARGB_TODIB( | 876 *(uint32_t*)dest_pos = FXARGB_TODIB( |
877 FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, | 877 FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, |
878 r_pos_blue_c_r)); | 878 r_pos_blue_c_r)); |
879 } | 879 } |
880 } else { | 880 } else { |
881 r_pos_k_r = 0xff; | 881 r_pos_k_r = 0xff; |
882 if (transformF == FXDIB_Cmyka) { | 882 if (transformF == FXDIB_Cmyka) { |
883 r_pos_k_r = | 883 r_pos_k_r = |
884 bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, | 884 bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, |
885 u_w, v_w, res_x, res_y, Bpp, 3); | 885 u_w, v_w, res_x, res_y, Bpp, 3); |
886 *(FX_DWORD*)dest_pos = | 886 *(uint32_t*)dest_pos = |
887 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, | 887 FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, |
888 r_pos_red_y_r, r_pos_k_r)); | 888 r_pos_red_y_r, r_pos_k_r)); |
889 } else { | 889 } else { |
890 *(FX_DWORD*)dest_pos = FXARGB_TODIB( | 890 *(uint32_t*)dest_pos = FXARGB_TODIB( |
891 FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, | 891 FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, |
892 r_pos_blue_c_r)); | 892 r_pos_blue_c_r)); |
893 } | 893 } |
894 } | 894 } |
895 } | 895 } |
896 dest_pos += destBpp; | 896 dest_pos += destBpp; |
897 } | 897 } |
898 } | 898 } |
899 } else { | 899 } else { |
900 CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); | 900 CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); |
(...skipping 12 matching lines...) Expand all Loading... |
913 } | 913 } |
914 const uint8_t* src_pos = | 914 const uint8_t* src_pos = |
915 stretch_buf + src_row * stretch_pitch + src_col * Bpp; | 915 stretch_buf + src_row * stretch_pitch + src_col * Bpp; |
916 if (bHasAlpha) { | 916 if (bHasAlpha) { |
917 if (transformF != FXDIB_Argb) { | 917 if (transformF != FXDIB_Argb) { |
918 if (transformF == FXDIB_Rgba) { | 918 if (transformF == FXDIB_Rgba) { |
919 dest_pos[0] = src_pos[0]; | 919 dest_pos[0] = src_pos[0]; |
920 dest_pos[1] = src_pos[1]; | 920 dest_pos[1] = src_pos[1]; |
921 dest_pos[2] = src_pos[2]; | 921 dest_pos[2] = src_pos[2]; |
922 } else { | 922 } else { |
923 *(FX_DWORD*)dest_pos = FXCMYK_TODIB(CmykEncode( | 923 *(uint32_t*)dest_pos = FXCMYK_TODIB(CmykEncode( |
924 src_pos[0], src_pos[1], src_pos[2], src_pos[3])); | 924 src_pos[0], src_pos[1], src_pos[2], src_pos[3])); |
925 } | 925 } |
926 } else { | 926 } else { |
927 *(FX_DWORD*)dest_pos = FXARGB_TODIB(FXARGB_MAKE( | 927 *(uint32_t*)dest_pos = FXARGB_TODIB(FXARGB_MAKE( |
928 src_pos[3], src_pos[2], src_pos[1], src_pos[0])); | 928 src_pos[3], src_pos[2], src_pos[1], src_pos[0])); |
929 } | 929 } |
930 } else { | 930 } else { |
931 if (transformF == FXDIB_Cmyka) { | 931 if (transformF == FXDIB_Cmyka) { |
932 *(FX_DWORD*)dest_pos = FXCMYK_TODIB(CmykEncode( | 932 *(uint32_t*)dest_pos = FXCMYK_TODIB(CmykEncode( |
933 src_pos[0], src_pos[1], src_pos[2], src_pos[3])); | 933 src_pos[0], src_pos[1], src_pos[2], src_pos[3])); |
934 } else { | 934 } else { |
935 *(FX_DWORD*)dest_pos = FXARGB_TODIB( | 935 *(uint32_t*)dest_pos = FXARGB_TODIB( |
936 FXARGB_MAKE(0xff, src_pos[2], src_pos[1], src_pos[0])); | 936 FXARGB_MAKE(0xff, src_pos[2], src_pos[1], src_pos[0])); |
937 } | 937 } |
938 } | 938 } |
939 } | 939 } |
940 dest_pos += destBpp; | 940 dest_pos += destBpp; |
941 } | 941 } |
942 } | 942 } |
943 } | 943 } |
944 } | 944 } |
945 } | 945 } |
946 m_Storer.Replace(pTransformed); | 946 m_Storer.Replace(pTransformed); |
947 return FALSE; | 947 return FALSE; |
948 } | 948 } |
OLD | NEW |