diff -r f902e87c146f -r 748ec5531811 fontservices/fontstore/inc/FNTSTORE.h --- a/fontservices/fontstore/inc/FNTSTORE.h Wed Jun 09 11:40:52 2010 +0300 +++ b/fontservices/fontstore/inc/FNTSTORE.h Tue Aug 31 17:01:26 2010 +0300 @@ -52,6 +52,7 @@ class COpenFontRasterizer; class CLinkedTypefaceGroup; IMPORT_C extern const TInt8 KLinkedFontDrive; +IMPORT_C extern const TUint32 KFontTable_GlyphOutline_CacheMaxMem; /** WARNING: Class for internal use ONLY. Compatibility is not guaranteed in future releases. @@ -149,7 +150,14 @@ inline COpenFont* OpenFont() const; inline TGlyphBitmapType GlyphBitmapType() const; IMPORT_C TUint32 UniqueFontId(); - + IMPORT_C TInt GetFontTable(TUint32 aTag, TAny*& aTableContent, + TInt& aLength, TInt aSessionHandle); + IMPORT_C TInt GetGlyphOutline(TUint aCode, + TBool aHinted, TAny*& aOutline, TInt& aLength, TInt aSessionHandle); + IMPORT_C void ReleaseGlyphOutlines(TInt aCount, const TUint* aCodes, + TBool aHinted, TInt aSessionHandle); + IMPORT_C void ReleaseFontTable(TUint32 aTag, TInt aSessionHandle); + private: // From CFont IMPORT_C virtual TUid DoTypeUid() const; @@ -262,6 +270,15 @@ IMPORT_C void operator = (const COpenFontLinkedTypefaceSpecification& aRhs); }; + + +class TUnhintedOutlineId; +class THintedOutlineId; +class CFontTableCache; +class CUnhintedOutlineCache; +class CHintedOutlineCache; +class TFontTableGlyphOutlineCacheMemMonitor; + class CFontStore : public CTypefaceStore /** A store for fonts. @@ -320,6 +337,27 @@ IMPORT_C void UpdateLinkedTypefaceL(const TLinkedTypefaceSpecificationArgs& aLinkedTypefaceSpec); IMPORT_C void LoadFontsAtStartupL(); IMPORT_C TBool GetFontFilePath(const TDesC& aFontName, TFileName& aFilePath) const; + IMPORT_C void CleanupCacheOnFbsSessionTermination(TInt aSessionHandle); + + TInt CacheFontTable(TUid aFileUid, TUint32 aTag, TAny*& aContent, TInt aLength); + TInt ReleaseFontTable(TUid aFileUid, TUint32 aTag, TInt aSessionHandle); + TInt FindFontTableInCache(TUid aFileUid, TUint32 aTag, TAny*& aContent, TInt& aLength); + TInt IncFontTableRefCount(TUid aFileUid, TUint32 aTag, TInt aSessionHandle); + TInt DecFontTableRefCount(TUid aFileUid, TUint32 aTag, TInt aSessionHandle); + TInt CacheUnhintedOutline(const TUnhintedOutlineId& aOutlineId, TAny* aData, + TInt aLength, TAny*& aOutline, TInt& aLen); + TInt CacheHintedOutline(const THintedOutlineId& aOutlineId, TAny* aData, TInt aLength, + TAny*& aOutline, TInt& aLen); + TInt ReleaseUnhintedOutline(const TUnhintedOutlineId& aOutlineId, TInt aSessionHandle); + TInt ReleaseHintedOutline(const THintedOutlineId& aOutlineId, TInt aSessionHandle); + TInt IncreaseUnhintedOutlineRefCount(const TUnhintedOutlineId& aOutlineId, TInt aSessionHandle); + TInt IncreaseHintedOutlineRefCount(const THintedOutlineId& aOutlineId, TInt aSessionHandle); + TInt FindUnhintedOutlineInCache(const TUnhintedOutlineId& aOutlineId, TAny*& aData, + TInt &aLength); + TInt FindHintedOutlineInCache(const THintedOutlineId& aOutlineId, TAny*& aData, TInt& aLength); + void CleanupCacheOnOpenFontRemoval(COpenFont* aFont); + void CleanupCacheOnOpenFontFileRemoval(COpenFontFile* aFontFile); + private: CFontStore(RHeap* aHeap); void ConstructL(); @@ -382,7 +420,11 @@ CArrayPtrFlat iFontBitmapList; CArrayFixFlat iTypefaceFontBitmapList; CArrayPtrFlat iOpenFontFileList; - TInt iReserved[6]; // keep iDefaultBitmapType at the correct offset + TInt iReserved[2]; // keep iDefaultBitmapType at the correct offset + CFontTableCache *iFontTableCache; + CUnhintedOutlineCache *iUnhintedOutlineCache; + CHintedOutlineCache *iHintedOutlineCache; + TFontTableGlyphOutlineCacheMemMonitor *iCacheMemMon; CArrayPtrFlat iOpenFontRasterizerList; COpenFontSessionCacheList* iOpenFontSessionCacheList; TInt iOpenFontUid;