From 83ae996e5860edb31c061e12abdbf7d4a955a0b3 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 3 Nov 2017 23:34:09 +0000 Subject: Remove C-style casts in cpdf_colorspace.cpp. Change-Id: Icce0751713dc39d2b3f3c3f23f7ed45df3d4952f Reviewed-on: https://pdfium-review.googlesource.com/17771 Reviewed-by: Henrique Nakashima Commit-Queue: Lei Zhang --- core/fpdfapi/page/cpdf_colorspace.cpp | 87 ++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp index ec45160ef8..f9214c75d6 100644 --- a/core/fpdfapi/page/cpdf_colorspace.cpp +++ b/core/fpdfapi/page/cpdf_colorspace.cpp @@ -178,7 +178,7 @@ class CPDF_ICCBasedCS : public CPDF_ColorSpace { MaybeOwned m_pAlterCS; RetainPtr m_pProfile; - uint8_t* m_pCache; + mutable uint8_t* m_pCache; float* m_pRanges; }; @@ -474,16 +474,14 @@ void CPDF_ColorSpace::Release() { } int CPDF_ColorSpace::GetBufSize() const { - if (m_Family == PDFCS_PATTERN) { + if (m_Family == PDFCS_PATTERN) return sizeof(PatternValue); - } return m_nComponents * sizeof(float); } float* CPDF_ColorSpace::CreateBuf() { int size = GetBufSize(); - uint8_t* pBuf = FX_Alloc(uint8_t, size); - return (float*)pBuf; + return reinterpret_cast(FX_Alloc(uint8_t, size)); } void CPDF_ColorSpace::GetDefaultColor(float* buf) const { @@ -644,9 +642,9 @@ bool CPDF_CalRGB::GetRGB(float* pBuf, float* R, float* G, float* B) const { float B_ = pBuf[1]; float C_ = pBuf[2]; if (m_bGamma) { - A_ = (float)FXSYS_pow(A_, m_Gamma[0]); - B_ = (float)FXSYS_pow(B_, m_Gamma[1]); - C_ = (float)FXSYS_pow(C_, m_Gamma[2]); + A_ = FXSYS_pow(A_, m_Gamma[0]); + B_ = FXSYS_pow(B_, m_Gamma[1]); + C_ = FXSYS_pow(C_, m_Gamma[2]); } float X; @@ -773,12 +771,13 @@ void CPDF_LabCS::TranslateImageLine(uint8_t* pDestBuf, bool bTransMask) const { for (int i = 0; i < pixels; i++) { float lab[3]; + lab[0] = pSrcBuf[0] * 100 / 255.0f; + lab[1] = pSrcBuf[1] - 128; + lab[2] = pSrcBuf[2] - 128; + float R; float G; float B; - lab[0] = (pSrcBuf[0] * 100 / 255.0f); - lab[1] = (float)(pSrcBuf[1] - 128); - lab[2] = (float)(pSrcBuf[2] - 128); GetRGB(lab, &R, &G, &B); pDestBuf[0] = static_cast(B * 255); pDestBuf[1] = static_cast(G * 255); @@ -790,7 +789,6 @@ void CPDF_LabCS::TranslateImageLine(uint8_t* pDestBuf, CPDF_ICCBasedCS::CPDF_ICCBasedCS(CPDF_Document* pDoc) : CPDF_ColorSpace(pDoc, PDFCS_ICCBASED, 0), - m_pProfile(nullptr), m_pCache(nullptr), m_pRanges(nullptr) {} @@ -889,45 +887,50 @@ void CPDF_ICCBasedCS::TranslateImageLine(uint8_t* pDestBuf, bool bTransMask) const { if (IsSRGB()) { ReverseRGB(pDestBuf, pSrcBuf, pixels); - } else if (m_pProfile->transform()) { + return; + } + if (m_pProfile->transform()) { int nMaxColors = 1; - for (uint32_t i = 0; i < m_nComponents; i++) { + for (uint32_t i = 0; i < m_nComponents; i++) nMaxColors *= 52; - } + if (m_nComponents > 3 || image_width * image_height < nMaxColors * 3 / 2) { CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( m_pProfile->transform(), pDestBuf, pSrcBuf, pixels); - } else { - if (!m_pCache) { - ((CPDF_ICCBasedCS*)this)->m_pCache = FX_Alloc2D(uint8_t, nMaxColors, 3); - uint8_t* temp_src = FX_Alloc2D(uint8_t, nMaxColors, m_nComponents); - uint8_t* pSrc = temp_src; - for (int i = 0; i < nMaxColors; i++) { - uint32_t color = i; - uint32_t order = nMaxColors / 52; - for (uint32_t c = 0; c < m_nComponents; c++) { - *pSrc++ = (uint8_t)(color / order * 5); - color %= order; - order /= 52; - } - } - CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( - m_pProfile->transform(), m_pCache, temp_src, nMaxColors); - FX_Free(temp_src); - } - for (int i = 0; i < pixels; i++) { - int index = 0; + return; + } + + if (!m_pCache) { + m_pCache = FX_Alloc2D(uint8_t, nMaxColors, 3); + uint8_t* temp_src = FX_Alloc2D(uint8_t, nMaxColors, m_nComponents); + uint8_t* pSrc = temp_src; + for (int i = 0; i < nMaxColors; i++) { + uint32_t color = i; + uint32_t order = nMaxColors / 52; for (uint32_t c = 0; c < m_nComponents; c++) { - index = index * 52 + (*pSrcBuf) / 5; - pSrcBuf++; + *pSrc++ = static_cast(color / order * 5); + color %= order; + order /= 52; } - index *= 3; - *pDestBuf++ = m_pCache[index]; - *pDestBuf++ = m_pCache[index + 1]; - *pDestBuf++ = m_pCache[index + 2]; } + CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( + m_pProfile->transform(), m_pCache, temp_src, nMaxColors); + FX_Free(temp_src); + } + for (int i = 0; i < pixels; i++) { + int index = 0; + for (uint32_t c = 0; c < m_nComponents; c++) { + index = index * 52 + (*pSrcBuf) / 5; + pSrcBuf++; + } + index *= 3; + *pDestBuf++ = m_pCache[index]; + *pDestBuf++ = m_pCache[index + 1]; + *pDestBuf++ = m_pCache[index + 2]; } - } else if (m_pAlterCS) { + return; + } + if (m_pAlterCS) { m_pAlterCS->TranslateImageLine(pDestBuf, pSrcBuf, pixels, image_width, image_height, false); } -- cgit v1.2.3