Index: 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 3edfe58f07be42202dc26e37ff13806811ee2432..c74edf5fd7e5d3bbfb7c4f27c2e54e090ea7c171 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,27 +1492,17 @@ 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); |
+ if (!ret) |
+ HandleFailureWithCache(); |
} 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) |
+ HandleFailureWithoutCache(); |
} |
return ret; |
} |
@@ -1521,26 +1511,32 @@ FX_BOOL CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) { |
FX_BOOL ret; |
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; |
- } |
+ if (!ret) |
+ HandleFailureWithCache(); |
} 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; |
- } |
+ ret = m_pImage->GetImage()->Continue(pPause); |
+ if (!ret) |
+ HandleFailureWithoutCache(); |
} |
return ret; |
} |
+void CPDF_ImageLoaderHandle::HandleFailureWithCache() { |
Wei Li
2016/08/05 22:58:21
Use HandleFailure(bool cached) to reduce to one fu
Lei Zhang
2016/08/06 05:34:25
Done.
|
+ 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; |
+} |
+ |
+void CPDF_ImageLoaderHandle::HandleFailureWithoutCache() { |
+ 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; |
+} |
+ |
FX_BOOL CPDF_ImageLoader::Start( |
const CPDF_ImageObject* pImage, |
CPDF_PageRenderCache* pCache, |