1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef CORE_FPDFAPI_RENDER_CPDF_DOCRENDERDATA_H_
8 #define CORE_FPDFAPI_RENDER_CPDF_DOCRENDERDATA_H_
9 
10 #include <map>
11 
12 #include "core/fpdfapi/page/cpdf_countedobject.h"
13 
14 class CPDF_Document;
15 class CPDF_Font;
16 class CPDF_Object;
17 class CPDF_TransferFunc;
18 class CPDF_Type3Cache;
19 class CPDF_Type3Font;
20 
21 class CPDF_DocRenderData {
22  public:
23   explicit CPDF_DocRenderData(CPDF_Document* pPDFDoc);
24   ~CPDF_DocRenderData();
25 
26   CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont);
27   void ReleaseCachedType3(CPDF_Type3Font* pFont);
28   CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj);
29   void ReleaseTransferFunc(CPDF_Object* pObj);
30   void Clear(bool bRelease);
31 
32  private:
33   using CPDF_Type3CacheMap =
34       std::map<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache>*>;
35   using CPDF_TransferFuncMap =
36       std::map<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*>;
37 
38   CPDF_Document* m_pPDFDoc;  // Not Owned
39   CPDF_Type3CacheMap m_Type3FaceMap;
40   CPDF_TransferFuncMap m_TransferFuncMap;
41 };
42 
43 #endif  // CORE_FPDFAPI_RENDER_CPDF_DOCRENDERDATA_H_
44