diff -r e96e8a131979 -r 6971d1c87c9a fontservices/fontstore/inc/openfontsprivate.h --- a/fontservices/fontstore/inc/openfontsprivate.h Sat Feb 20 00:37:46 2010 +0200 +++ b/fontservices/fontstore/inc/openfontsprivate.h Fri Mar 12 15:51:09 2010 +0200 @@ -19,7 +19,6 @@ #ifndef __OPENFONTS_PRIVATE_H__ #define __OPENFONTS_PRIVATE_H__ -#include class COpenFontShaperCacheEntry; /* MSB is set to indicate a glyph code rather than a unicode value @@ -211,225 +210,6 @@ TInt iCacheOffset; }; -class TFontTableGlyphOutlineCacheMemMonitor - { -public: - TFontTableGlyphOutlineCacheMemMonitor(); - void Inc(TInt aBytes); - void Dec(TInt aBytes); - TInt GetMemUsage(); -private: - TInt iBytes; - }; - -struct TCacheUserInfo { - TInt iSessionHandle; - TInt iRefCount; - TCacheUserInfo(TInt aSessionHandle, TInt aRefCount = 0): - iSessionHandle(aSessionHandle), iRefCount(aRefCount) { } -}; - -class CFontTableCache; - -class CFontTableCacheItem - { -friend class CFontTableCache ; - -public: - CFontTableCacheItem(TUid &aFileUid, const TUint32 aTag, - TInt aOffset, TInt aLength); - ~CFontTableCacheItem(); - - TInt DecRefCount(TInt aSessionHandle); - TInt IncRefCount(TInt aSessionHandle); - - TBool HasOutstandingRefCount(); - TInt FindUser(TInt aSessionHandle, TInt *id); - -#ifdef _DEBUG - void SetUser(RPointerArray users) - { - TInt len = users.Count(); - for( TInt i = 0; i < len ; i++ ) - { - iUsers.Append(users[i]); - } - } -#endif - -private: - CFontTableCacheItem(const CFontTableCacheItem &); // disallow copy construction. - CFontTableCacheItem& operator =(const CFontTableCacheItem &); // disallow assignment. - - TUid iFileUid; - TUint32 iTag; - - - TInt iOffset; - TInt iLength; - RPointerArray iUsers; - }; - - -class CFontTableCache - { -public: - CFontTableCache(RHeap* aHeap, TFontTableGlyphOutlineCacheMemMonitor& aMon); - ~CFontTableCache(); - TInt Append(TUid aFileUid, TUint32 aTag, - TAny*& aContent, TInt aLength); - TInt Find(TUid aFileUid, TUint32 aTag, TAny*& aContent, TInt& aLength, TInt* id); - TInt IncRefCount(TUid FileUid, TUint32 aTag, TInt aSessionHandle); - TInt DecRefCount(TUid aFileUid, TUint32 aTag, TInt aSessionHandle); - TBool HasOutstandingRefCount(); - TBool HasOutstandingRefCountWithUid(TUid aFileUid); - void CleanupCacheOnFbsSessionTermination(TInt aSessionHandle); - void CleanupCacheOnOpenFontFileRemoval(COpenFontFile*); -#ifdef _DEBUG - void SetFontItem(RPointerArray cacheItems) - { - TInt len = cacheItems.Count(); - for(TInt i = 0; i < len; i++) - { - iCacheItems.Append(cacheItems[i]); - } - } -#endif - -private: - CFontTableCache(const CFontTableCache &); // no copy construction. - CFontTableCache& operator =(const CFontTableCache &); // no assignment. -#ifdef _DEBUG - TInt GetCacheState(const char *func); -#endif - - TFontTableGlyphOutlineCacheMemMonitor &iCacheMemMon; - RHeap *iHeap; - RPointerArray iCacheItems; - }; - - -class TUnhintedOutlineCache; - -class TUnhintedOutlineId - { -public: - TUnhintedOutlineId(TUid aFileUid, TInt aFaceIndex, TUint aId); - TUid iFileUid; - TInt iFaceIndex; - TUint iId; - }; - -class COutlineCacheItem { -friend class CUnhintedOutlineCache; -friend class CHintedOutlineCache; - -public: - COutlineCacheItem(TInt aOffset, TInt aLength); - ~COutlineCacheItem() ; - - TInt DecRefCount(TInt aSessionHandle); - TInt IncRefCount(TInt aSessionHandle); -#ifdef _DEBUG - void SetUser(RPointerArray users) - { - TInt len = users.Count(); - for( TInt i = 0; i < len ; i++ ) - { - iUsers.Append(users[i]); - } - } -#endif - -private: - TInt FindUser(TInt aSessionHandle, TInt *id); - - - TInt iOffset; - TInt iLength; - RPointerArray iUsers; -}; - -class CUnhintedOutlineCache { -public: - CUnhintedOutlineCache(RHeap* aHeap, TFontTableGlyphOutlineCacheMemMonitor& aMon); - TInt Find(const TUnhintedOutlineId &aOutlineId, TAny*& aData, TInt& aLength); - TInt IncRefCount(const TUnhintedOutlineId& aOutlineId, TInt aSessionHandle); - TInt DecRefCount(const TUnhintedOutlineId& aOutlineId, TInt aSessionHandle); - TInt CacheUnhintedOutline(const TUnhintedOutlineId& aOutlineId, - TAny * const aData, const TInt aLength, TAny*& aOutline, TInt &aLen); - TInt CleanupCacheOnOpenFontFileRemoval(COpenFontFile* aFontFile); - TInt CleanupCacheOnFbsSessionTermination(TInt aSessionHandle); -#ifdef _DEBUG - TInt GetCacheState(const char *func); -#endif - ~CUnhintedOutlineCache(); - -#ifdef _DEBUG - void SetUnHintedItem(TUnhintedOutlineId id, COutlineCacheItem* item) - { - iItemIdMap.Insert(id, item); - } -#endif - -private: - // disallow assignment and copy-construction - CUnhintedOutlineCache(const CUnhintedOutlineCache &); - CUnhintedOutlineCache& operator =(const CUnhintedOutlineCache &); - - static TUint32 IdHash(const TUnhintedOutlineId& aOutlineId); - static TBool IdIdentity(const TUnhintedOutlineId& id1, const TUnhintedOutlineId& id2); - - TFontTableGlyphOutlineCacheMemMonitor& iCacheMemMon; - RHeap* iHeap; - RHashMap iItemIdMap; // map the identity to an index in 'iCacheItems'. -}; - -class CHintedOutlineCache; - -class THintedOutlineId - { -public: - THintedOutlineId(COpenFont* aFont, TUint aId); - COpenFont *iFont; - TUint iId; - }; - - -class CHintedOutlineCache { -public: - CHintedOutlineCache(RHeap* aHeap, TFontTableGlyphOutlineCacheMemMonitor& aMon); - TInt Find(const THintedOutlineId& aOutlineId, TAny*& aData, TInt& aLength); - TInt IncRefCount(const THintedOutlineId& aOutlineId, TInt aSessionHandle); - TInt DecRefCount(const THintedOutlineId& aOutlineId, TInt aSessionHandle); - TInt CacheHintedOutline(const THintedOutlineId& aOutlineId, - TAny* aData, TInt aLength, TAny*& aOutline, TInt& aLen); - TInt CleanupCacheOnOpenFontRemoval(COpenFont* aFont); - TInt CleanupCacheOnFbsSessionTermination(TInt aSessionHandle); -#ifdef _DEBUG - TInt GetCacheState(const char *func); - void SetHintedItem(THintedOutlineId id, COutlineCacheItem* item) - { - iItemIdMap.Insert(id, item); - } - RHashMap GetHintedMap() - { - return iItemIdMap; - } -#endif - -private: - // disallow assignment and copy-construction - CHintedOutlineCache(const CHintedOutlineCache &); - CHintedOutlineCache& operator =(const CHintedOutlineCache &); - static TUint32 IdHash(const THintedOutlineId& aOutlineId); - static TBool IdIdentity(const THintedOutlineId& id1, const THintedOutlineId& id2); - - TFontTableGlyphOutlineCacheMemMonitor& iCacheMemMon; - RHeap* iHeap; - RHashMap iItemIdMap; // map the identity to an index in 'iCacheItems'. - }; - // inline functions inline COpenFontSessionCacheEntry::COpenFontSessionCacheEntry(const COpenFont* aFont, TInt aCode, TInt aGlyphIndex,const TOpenFontCharMetrics& aMetrics) :