From f41d9dc1ead47a1218e1cd37bd74ec850c8baaa3 Mon Sep 17 00:00:00 2001 From: thestig Date: Fri, 5 Aug 2016 22:34:58 -0700 Subject: Add CPDF_ImageObject::GetImage(). And use it where appropriate. Review-Url: https://codereview.chromium.org/2224623002 --- core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp | 70 +++++++++------------- 1 file changed, 29 insertions(+), 41 deletions(-) (limited to 'core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp') diff --git a/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp index 3edfe58f07..2fe6730479 100644 --- a/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp +++ b/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp @@ -28,11 +28,11 @@ unsigned int GetBits8(const uint8_t* pData, uint64_t bitpos, size_t nbits) { ASSERT(nbits == 1 || nbits == 2 || nbits == 4 || nbits == 8 || nbits == 16); ASSERT((bitpos & (nbits - 1)) == 0); unsigned int byte = pData[bitpos / 8]; - if (nbits == 8) { + if (nbits == 8) return byte; - } else if (nbits == 16) { + + if (nbits == 16) return byte * 256 + pData[bitpos / 8 + 1]; - } return (byte >> (8 - nbits - (bitpos % 8))) & ((1 << nbits) - 1); } @@ -1492,53 +1492,41 @@ FX_BOOL CPDF_ImageLoaderHandle::Start(CPDF_ImageLoader* pImageLoader, m_nDownsampleHeight = nDownsampleHeight; FX_BOOL ret; if (pCache) { - ret = pCache->StartGetCachedBitmap(pImage->m_pImage->GetStream(), bStdCS, - GroupFamily, bLoadMask, pRenderStatus, - m_nDownsampleWidth, m_nDownsampleHeight); - if (!ret) { - m_pImageLoader->m_bCached = TRUE; - m_pImageLoader->m_pBitmap = - pCache->GetCurImageCacheEntry()->DetachBitmap(); - m_pImageLoader->m_pMask = pCache->GetCurImageCacheEntry()->DetachMask(); - m_pImageLoader->m_MatteColor = - pCache->GetCurImageCacheEntry()->m_MatteColor; - } + ret = pCache->StartGetCachedBitmap( + m_pImage->GetImage()->GetStream(), bStdCS, GroupFamily, bLoadMask, + pRenderStatus, m_nDownsampleWidth, m_nDownsampleHeight); } else { - ret = pImage->m_pImage->StartLoadDIBSource(pRenderStatus->m_pFormResource, - pRenderStatus->m_pPageResource, - bStdCS, GroupFamily, bLoadMask); - if (!ret) { - m_pImageLoader->m_bCached = FALSE; - m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap(); - m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask(); - m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor; - } + ret = m_pImage->GetImage()->StartLoadDIBSource( + pRenderStatus->m_pFormResource, pRenderStatus->m_pPageResource, bStdCS, + GroupFamily, bLoadMask); } + if (!ret) + HandleFailure(); return ret; } FX_BOOL CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) { - FX_BOOL ret; + FX_BOOL ret = m_pCache ? m_pCache->Continue(pPause) + : m_pImage->GetImage()->Continue(pPause); + if (!ret) + HandleFailure(); + return ret; +} + +void CPDF_ImageLoaderHandle::HandleFailure() { if (m_pCache) { - ret = m_pCache->Continue(pPause); - if (!ret) { - m_pImageLoader->m_bCached = TRUE; - m_pImageLoader->m_pBitmap = - m_pCache->GetCurImageCacheEntry()->DetachBitmap(); - m_pImageLoader->m_pMask = m_pCache->GetCurImageCacheEntry()->DetachMask(); - m_pImageLoader->m_MatteColor = - m_pCache->GetCurImageCacheEntry()->m_MatteColor; - } + CPDF_ImageCacheEntry* entry = m_pCache->GetCurImageCacheEntry(); + m_pImageLoader->m_bCached = TRUE; + m_pImageLoader->m_pBitmap = entry->DetachBitmap(); + m_pImageLoader->m_pMask = entry->DetachMask(); + m_pImageLoader->m_MatteColor = entry->m_MatteColor; } else { - ret = m_pImage->m_pImage->Continue(pPause); - if (!ret) { - m_pImageLoader->m_bCached = FALSE; - m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap(); - m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask(); - m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor; - } + CPDF_Image* pImage = m_pImage->GetImage(); + m_pImageLoader->m_bCached = FALSE; + m_pImageLoader->m_pBitmap = pImage->DetachBitmap(); + m_pImageLoader->m_pMask = pImage->DetachMask(); + m_pImageLoader->m_MatteColor = pImage->m_MatteColor; } - return ret; } FX_BOOL CPDF_ImageLoader::Start( -- cgit v1.2.3