14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef CORE_FPDFAPI_RENDER_CPDF_PAGERENDERCACHE_H_ 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define CORE_FPDFAPI_RENDER_CPDF_PAGERENDERCACHE_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <map> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_system.h" 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "core/fxcrt/retain_ptr.h" 14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "core/fxcrt/unowned_ptr.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass CFX_DIBitmap; 17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass CPDF_Image; 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_ImageCacheEntry; 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_Page; 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_RenderStatus; 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass CPDF_Stream; 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass IFX_PauseIndicator; 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPDF_PageRenderCache { 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann explicit CPDF_PageRenderCache(CPDF_Page* pPage); 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CPDF_PageRenderCache(); 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void CacheOptimization(int32_t dwLimitCacheSize); 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t GetTimeCount() const { return m_nTimeCount; } 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void ResetBitmap(const RetainPtr<CPDF_Image>& pImage, 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const RetainPtr<CFX_DIBitmap>& pBitmap); 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CPDF_Page* GetPage() const { return m_pPage.Get(); } 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_ImageCacheEntry* GetCurImageCacheEntry() const { 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pCurImageCacheEntry; 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool StartGetCachedBitmap(const RetainPtr<CPDF_Image>& pImage, 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bStdCS, 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t GroupFamily, 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bLoadMask, 42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CPDF_RenderStatus* pRenderStatus); 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool Continue(IFX_PauseIndicator* pPause, CPDF_RenderStatus* pRenderStatus); 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private: 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void ClearImageCacheEntry(CPDF_Stream* pStream); 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann UnownedPtr<CPDF_Page> const m_pPage; 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDF_ImageCacheEntry* m_pCurImageCacheEntry; 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::map<CPDF_Stream*, CPDF_ImageCacheEntry*> m_ImageCache; 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t m_nTimeCount; 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t m_nCacheSize; 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bCurFindCache; 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // CORE_FPDFAPI_RENDER_CPDF_PAGERENDERCACHE_H_ 58