| 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 |