1 // Copyright 2014 PDFium Authors. All rights reserved.
\r
2 // Use of this source code is governed by a BSD-style license that can be
\r
3 // found in the LICENSE file.
\r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
\r
7 #ifndef _FDE_CSSCACHE
\r
8 #define _FDE_CSSCACHE
\r
9 typedef struct _FDE_CSSCACHEITEM : public CFX_Target {
\r
10 _FDE_CSSCACHEITEM(IFDE_CSSStyleSheet *p);
\r
11 ~_FDE_CSSCACHEITEM();
\r
12 IFDE_CSSStyleSheet *pStylesheet;
\r
13 FX_DWORD dwActivity;
\r
14 } FDE_CSSCACHEITEM, * FDE_LPCSSCACHEITEM;
\r
15 class CFDE_CSSStyleSheetCache : public IFDE_CSSStyleSheetCache, public CFX_ThreadLock, public CFX_Target
\r
18 CFDE_CSSStyleSheetCache();
\r
19 ~CFDE_CSSStyleSheetCache();
\r
20 virtual void Release()
\r
25 virtual void SetMaxItems(FX_INT32 iMaxCount = 5)
\r
27 FXSYS_assert(iMaxCount >= 3);
\r
28 m_iMaxItems = iMaxCount;
\r
31 virtual void AddStyleSheet(FX_BSTR szKey, IFDE_CSSStyleSheet *pStyleSheet);
\r
32 virtual IFDE_CSSStyleSheet* GetStyleSheet(FX_BSTR szKey) const;
\r
33 virtual void RemoveStyleSheet(FX_BSTR szKey);
\r
35 void RemoveLowestActivityItem();
\r
36 CFX_MapByteStringToPtr m_Stylesheets;
\r
37 IFX_MEMAllocator *m_pFixedStore;
\r
38 FX_INT32 m_iMaxItems;
\r
40 typedef struct _FDE_CSSTAGCACHE : public CFX_Target {
\r
42 _FDE_CSSTAGCACHE(_FDE_CSSTAGCACHE *parent, IFDE_CSSTagProvider *tag);
\r
43 _FDE_CSSTAGCACHE(const _FDE_CSSTAGCACHE &it);
\r
44 _FDE_CSSTAGCACHE* GetParent() const
\r
48 IFDE_CSSTagProvider* GetTag() const
\r
52 FX_DWORD HashID() const
\r
56 FX_DWORD HashTag() const
\r
60 FX_INT32 CountHashClass() const
\r
62 return dwClassHashs.GetSize();
\r
64 void SetClassIndex(FX_INT32 index)
\r
66 iClassIndex = index;
\r
68 FX_DWORD HashClass() const
\r
70 return iClassIndex < dwClassHashs.GetSize() ? dwClassHashs.GetAt(iClassIndex) : 0;
\r
73 IFDE_CSSTagProvider *pTag;
\r
74 _FDE_CSSTAGCACHE *pParent;
\r
77 FX_INT32 iClassIndex;
\r
78 CFDE_DWordArray dwClassHashs;
\r
79 } FDE_CSSTAGCACHE, * FDE_LPCSSTAGCACHE;
\r
80 typedef CFX_ObjectStackTemplate<FDE_CSSTAGCACHE> CFDE_CSSTagStack;
\r
81 class CFDE_CSSAccelerator : public IFDE_CSSAccelerator, public CFX_Target
\r
84 virtual void OnEnterTag(IFDE_CSSTagProvider *pTag);
\r
85 virtual void OnLeaveTag(IFDE_CSSTagProvider *pTag);
\r
88 m_Stack.RemoveAll();
\r
90 FDE_LPCSSTAGCACHE GetTopElement() const
\r
92 return m_Stack.GetTopElement();
\r
95 CFDE_CSSTagStack m_Stack;
\r