| 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 "../../../include/fxge/fx_ge.h" | 7 #include "../../../include/fxge/fx_ge.h" |
| 8 #include "../../../include/fxcodec/fx_codec.h" | 8 #include "../../../include/fxcodec/fx_codec.h" |
| 9 #include "dib_int.h" | 9 #include "dib_int.h" |
| 10 const uint8_t _color_sqrt[256] = { | 10 const uint8_t _color_sqrt[256] = { |
| (...skipping 4038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4049 } | 4049 } |
| 4050 return TRUE; | 4050 return TRUE; |
| 4051 } | 4051 } |
| 4052 inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, | 4052 inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, |
| 4053 FXDIB_Format dest_format, | 4053 FXDIB_Format dest_format, |
| 4054 FX_DWORD*& pDestPalette, | 4054 FX_DWORD*& pDestPalette, |
| 4055 FX_DWORD* pSrcPalette, | 4055 FX_DWORD* pSrcPalette, |
| 4056 void* icc_module, | 4056 void* icc_module, |
| 4057 void* pIccTransform) { | 4057 void* pIccTransform) { |
| 4058 ICodec_IccModule* pIccModule = (ICodec_IccModule*)icc_module; | 4058 ICodec_IccModule* pIccModule = (ICodec_IccModule*)icc_module; |
| 4059 FX_BOOL isSrcCmyk = src_format & 0x0400 ? TRUE : FALSE; | 4059 FX_BOOL isSrcCmyk = !!(src_format & 0x0400); |
| 4060 FX_BOOL isDstCmyk = dest_format & 0x0400 ? TRUE : FALSE; | 4060 FX_BOOL isDstCmyk = !!(dest_format & 0x0400); |
| 4061 pDestPalette = NULL; | 4061 pDestPalette = NULL; |
| 4062 if (pIccTransform) { | 4062 if (pIccTransform) { |
| 4063 if (pSrcPalette) { | 4063 if (pSrcPalette) { |
| 4064 if ((dest_format & 0xff) == 8) { | 4064 if ((dest_format & 0xff) == 8) { |
| 4065 int pal_count = 1 << (src_format & 0xff); | 4065 int pal_count = 1 << (src_format & 0xff); |
| 4066 uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); | 4066 uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); |
| 4067 pDestPalette = (FX_DWORD*)gray_pal; | 4067 pDestPalette = (FX_DWORD*)gray_pal; |
| 4068 for (int i = 0; i < pal_count; i++) { | 4068 for (int i = 0; i < pal_count; i++) { |
| 4069 FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) | 4069 FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) |
| 4070 : FXARGB_TODIB(pSrcPalette[i]); | 4070 : FXARGB_TODIB(pSrcPalette[i]); |
| (...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4905 color_p[2], color_p[1], color_p[0]); | 4905 color_p[2], color_p[1], color_p[0]); |
| 4906 else if (!(alpha_flag >> 8) && IsCmykImage()) { | 4906 else if (!(alpha_flag >> 8) && IsCmykImage()) { |
| 4907 return FALSE; | 4907 return FALSE; |
| 4908 } | 4908 } |
| 4909 } | 4909 } |
| 4910 if (!IsCmykImage()) { | 4910 if (!IsCmykImage()) { |
| 4911 color_p[3] = (uint8_t)src_alpha; | 4911 color_p[3] = (uint8_t)src_alpha; |
| 4912 } | 4912 } |
| 4913 int Bpp = m_bpp / 8; | 4913 int Bpp = m_bpp / 8; |
| 4914 FX_BOOL bAlpha = HasAlpha(); | 4914 FX_BOOL bAlpha = HasAlpha(); |
| 4915 FX_BOOL bArgb = GetFormat() == FXDIB_Argb ? TRUE : FALSE; | 4915 FX_BOOL bArgb = GetFormat() == FXDIB_Argb; |
| 4916 if (src_alpha == 255) { | 4916 if (src_alpha == 255) { |
| 4917 for (int row = rect.top; row < rect.bottom; row++) { | 4917 for (int row = rect.top; row < rect.bottom; row++) { |
| 4918 uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left * Bpp; | 4918 uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left * Bpp; |
| 4919 uint8_t* dest_scan_alpha = | 4919 uint8_t* dest_scan_alpha = |
| 4920 m_pAlphaMask ? (uint8_t*)m_pAlphaMask->GetScanline(row) + rect.left | 4920 m_pAlphaMask ? (uint8_t*)m_pAlphaMask->GetScanline(row) + rect.left |
| 4921 : NULL; | 4921 : NULL; |
| 4922 if (dest_scan_alpha) { | 4922 if (dest_scan_alpha) { |
| 4923 FXSYS_memset(dest_scan_alpha, 0xff, width); | 4923 FXSYS_memset(dest_scan_alpha, 0xff, width); |
| 4924 } | 4924 } |
| 4925 if (Bpp == 4) { | 4925 if (Bpp == 4) { |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5189 } | 5189 } |
| 5190 src_alpha_scan = m_pScanlineAlphaV; | 5190 src_alpha_scan = m_pScanlineAlphaV; |
| 5191 dest_alpha_scan = dest_alpha_buf; | 5191 dest_alpha_scan = dest_alpha_buf; |
| 5192 if (dest_alpha_scan) { | 5192 if (dest_alpha_scan) { |
| 5193 for (i = 0; i < m_DestHeight; i++) { | 5193 for (i = 0; i < m_DestHeight; i++) { |
| 5194 *dest_alpha_scan = *src_alpha_scan++; | 5194 *dest_alpha_scan = *src_alpha_scan++; |
| 5195 dest_alpha_scan += y_alpha_step; | 5195 dest_alpha_scan += y_alpha_step; |
| 5196 } | 5196 } |
| 5197 } | 5197 } |
| 5198 } | 5198 } |
| OLD | NEW |