From a12159b17085796e2b72d2b49e850092e0b4e8b7 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Wed, 15 Mar 2017 13:26:37 -0700 Subject: Refactor some CPDF_ColorSpace code. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1e30d68dae3bf70cf3c426f6126d593b7f1c3ba4 Reviewed-on: https://pdfium-review.googlesource.com/2991 Commit-Queue: Lei Zhang Reviewed-by: Nicolás Peña --- core/fxcodec/codec/ccodec_iccmodule.h | 2 +- core/fxcodec/codec/fx_codec_flate.cpp | 13 ++++++------- core/fxcodec/codec/fx_codec_icc.cpp | 26 +++++++++++++++----------- 3 files changed, 22 insertions(+), 19 deletions(-) (limited to 'core/fxcodec/codec') diff --git a/core/fxcodec/codec/ccodec_iccmodule.h b/core/fxcodec/codec/ccodec_iccmodule.h index c568a9b3c2..08878acc98 100644 --- a/core/fxcodec/codec/ccodec_iccmodule.h +++ b/core/fxcodec/codec/ccodec_iccmodule.h @@ -22,7 +22,7 @@ class CCodec_IccModule { int32_t intent = 0, uint32_t dwSrcFormat = Icc_FORMAT_DEFAULT); void DestroyTransform(void* pTransform); - void Translate(void* pTransform, float* pSrcValues, float* pDestValues); + void Translate(void* pTransform, const float* pSrcValues, float* pDestValues); void TranslateScanline(void* pTransform, uint8_t* pDest, const uint8_t* pSrc, diff --git a/core/fxcodec/codec/fx_codec_flate.cpp b/core/fxcodec/codec/fx_codec_flate.cpp index 2ba505d059..f908908062 100644 --- a/core/fxcodec/codec/fx_codec_flate.cpp +++ b/core/fxcodec/codec/fx_codec_flate.cpp @@ -161,7 +161,7 @@ int CLZWDecoder::Decode(uint8_t* dest_buf, m_pOutput = dest_buf; m_Early = bEarlyChange ? 1 : 0; m_nCodes = 0; - uint32_t old_code = (uint32_t)-1; + uint32_t old_code = 0xFFFFFFFF; uint8_t last_char = 0; while (1) { if (m_InPos + m_CodeLen > src_size * 8) { @@ -193,20 +193,19 @@ int CLZWDecoder::Decode(uint8_t* dest_buf, } m_OutPos++; last_char = (uint8_t)code; - if (old_code != (uint32_t)-1) { + if (old_code != 0xFFFFFFFF) AddCode(old_code, last_char); - } old_code = code; } else if (code == 256) { m_CodeLen = 9; m_nCodes = 0; - old_code = (uint32_t)-1; + old_code = 0xFFFFFFFF; } else if (code == 257) { break; } else { - if (old_code == (uint32_t)-1) { + if (old_code == 0xFFFFFFFF) return 2; - } + m_StackLen = 0; if (code >= m_nCodes + 258) { if (m_StackLen < sizeof(m_DecodeStack)) { @@ -824,7 +823,7 @@ uint32_t CCodec_FlateModule::FlateOrLZWDecode(bool bLZW, if (bLZW) { { std::unique_ptr decoder(new CLZWDecoder); - dest_size = (uint32_t)-1; + dest_size = 0xFFFFFFFF; offset = src_size; int err = decoder->Decode(nullptr, dest_size, src_buf, offset, bEarlyChange); diff --git a/core/fxcodec/codec/fx_codec_icc.cpp b/core/fxcodec/codec/fx_codec_icc.cpp index 4f701aaed3..b143dcc0c9 100644 --- a/core/fxcodec/codec/fx_codec_icc.cpp +++ b/core/fxcodec/codec/fx_codec_icc.cpp @@ -154,33 +154,32 @@ void IccLib_DestroyTransform(void* pTransform) { cmsDeleteTransform(((CLcmsCmm*)pTransform)->m_hTransform); delete (CLcmsCmm*)pTransform; } + void IccLib_Translate(void* pTransform, uint32_t nSrcComponents, - float* pSrcValues, + const float* pSrcValues, float* pDestValues) { - if (!pTransform) { + if (!pTransform) return; - } + CLcmsCmm* p = (CLcmsCmm*)pTransform; uint8_t output[4]; if (p->m_bLab) { CFX_FixedBufGrow inputs(nSrcComponents); double* input = inputs; - for (uint32_t i = 0; i < nSrcComponents; i++) { + for (uint32_t i = 0; i < nSrcComponents; i++) input[i] = pSrcValues[i]; - } cmsDoTransform(p->m_hTransform, input, output, 1); } else { CFX_FixedBufGrow inputs(nSrcComponents); uint8_t* input = inputs; for (uint32_t i = 0; i < nSrcComponents; i++) { - if (pSrcValues[i] > 1.0f) { + if (pSrcValues[i] > 1.0f) input[i] = 255; - } else if (pSrcValues[i] < 0) { + else if (pSrcValues[i] < 0) input[i] = 0; - } else { - input[i] = (int)(pSrcValues[i] * 255.0f); - } + else + input[i] = static_cast(pSrcValues[i] * 255.0f); } cmsDoTransform(p->m_hTransform, input, output, 1); } @@ -201,6 +200,7 @@ void IccLib_Translate(void* pTransform, break; } } + void IccLib_TranslateImage(void* pTransform, unsigned char* pDest, const unsigned char* pSrc, @@ -225,17 +225,20 @@ void* CCodec_IccModule::CreateTransform_sRGB(const uint8_t* pProfileData, void CCodec_IccModule::DestroyTransform(void* pTransform) { IccLib_DestroyTransform(pTransform); } + void CCodec_IccModule::Translate(void* pTransform, - float* pSrcValues, + const float* pSrcValues, float* pDestValues) { IccLib_Translate(pTransform, m_nComponents, pSrcValues, pDestValues); } + void CCodec_IccModule::TranslateScanline(void* pTransform, uint8_t* pDest, const uint8_t* pSrc, int32_t pixels) { IccLib_TranslateImage(pTransform, pDest, pSrc, pixels); } + const uint8_t g_CMYKSamples[81 * 81 * 3] = { 255, 255, 255, 225, 226, 228, 199, 200, 202, 173, 174, 178, 147, 149, 152, 123, 125, 128, 99, 99, 102, 69, 70, 71, 34, 30, 31, 255, 253, 229, @@ -1551,6 +1554,7 @@ const uint8_t g_CMYKSamples[81 * 81 * 3] = { 33, 28, 32, 22, 19, 23, 11, 6, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, }; + void AdobeCMYK_to_sRGB1(uint8_t c, uint8_t m, uint8_t y, -- cgit v1.2.3