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 "core/fpdfapi/render/cpdf_pagerendercache.h" | 7 #include "core/fpdfapi/render/cpdf_pagerendercache.h" |
8 | 8 |
9 #include "core/fpdfapi/page/cpdf_page.h" | 9 #include "core/fpdfapi/page/cpdf_page.h" |
10 #include "core/fpdfapi/page/pageint.h" | 10 #include "core/fpdfapi/page/pageint.h" |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 return ret; | 285 return ret; |
286 } | 286 } |
287 if (!ret) { | 287 if (!ret) { |
288 delete m_pCurBitmap; | 288 delete m_pCurBitmap; |
289 m_pCurBitmap = nullptr; | 289 m_pCurBitmap = nullptr; |
290 return 0; | 290 return 0; |
291 } | 291 } |
292 ContinueGetCachedBitmap(); | 292 ContinueGetCachedBitmap(); |
293 return 0; | 293 return 0; |
294 } | 294 } |
| 295 |
295 void CPDF_ImageCacheEntry::ContinueGetCachedBitmap() { | 296 void CPDF_ImageCacheEntry::ContinueGetCachedBitmap() { |
296 m_MatteColor = ((CPDF_DIBSource*)m_pCurBitmap)->GetMatteColor(); | 297 m_MatteColor = ((CPDF_DIBSource*)m_pCurBitmap)->GetMatteColor(); |
297 m_pCurMask = ((CPDF_DIBSource*)m_pCurBitmap)->DetachMask(); | 298 m_pCurMask = ((CPDF_DIBSource*)m_pCurBitmap)->DetachMask(); |
298 CPDF_RenderContext* pContext = m_pRenderStatus->GetContext(); | 299 CPDF_RenderContext* pContext = m_pRenderStatus->GetContext(); |
299 CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache(); | 300 CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache(); |
300 m_dwTimeCount = pPageRenderCache->GetTimeCount(); | 301 m_dwTimeCount = pPageRenderCache->GetTimeCount(); |
301 if (m_pCurBitmap->GetPitch() * m_pCurBitmap->GetHeight() < | 302 m_pCachedBitmap = m_pCurBitmap; |
302 FPDF_HUGE_IMAGE_SIZE) { | 303 if (m_pCurMask) |
303 m_pCachedBitmap = m_pCurBitmap->Clone(); | 304 m_pCachedMask = m_pCurMask; |
304 delete m_pCurBitmap; | 305 else |
305 m_pCurBitmap = nullptr; | 306 m_pCurMask = m_pCachedMask; |
306 } else { | |
307 m_pCachedBitmap = m_pCurBitmap; | |
308 } | |
309 if (m_pCurMask) { | |
310 m_pCachedMask = m_pCurMask->Clone(); | |
311 delete m_pCurMask; | |
312 m_pCurMask = nullptr; | |
313 } | |
314 m_pCurBitmap = m_pCachedBitmap; | |
315 m_pCurMask = m_pCachedMask; | |
316 CalcSize(); | 307 CalcSize(); |
317 } | 308 } |
| 309 |
318 int CPDF_ImageCacheEntry::Continue(IFX_Pause* pPause) { | 310 int CPDF_ImageCacheEntry::Continue(IFX_Pause* pPause) { |
319 int ret = ((CPDF_DIBSource*)m_pCurBitmap)->ContinueLoadDIBSource(pPause); | 311 int ret = ((CPDF_DIBSource*)m_pCurBitmap)->ContinueLoadDIBSource(pPause); |
320 if (ret == 2) { | 312 if (ret == 2) { |
321 return ret; | 313 return ret; |
322 } | 314 } |
323 if (!ret) { | 315 if (!ret) { |
324 delete m_pCurBitmap; | 316 delete m_pCurBitmap; |
325 m_pCurBitmap = nullptr; | 317 m_pCurBitmap = nullptr; |
326 return 0; | 318 return 0; |
327 } | 319 } |
328 ContinueGetCachedBitmap(); | 320 ContinueGetCachedBitmap(); |
329 return 0; | 321 return 0; |
330 } | 322 } |
331 void CPDF_ImageCacheEntry::CalcSize() { | 323 void CPDF_ImageCacheEntry::CalcSize() { |
332 m_dwCacheSize = FPDF_ImageCache_EstimateImageSize(m_pCachedBitmap) + | 324 m_dwCacheSize = FPDF_ImageCache_EstimateImageSize(m_pCachedBitmap) + |
333 FPDF_ImageCache_EstimateImageSize(m_pCachedMask); | 325 FPDF_ImageCache_EstimateImageSize(m_pCachedMask); |
334 } | 326 } |
OLD | NEW |