fontservices/fontstore/inc/FNTSTORE.h
branchRCL_3
changeset 54 748ec5531811
parent 15 9a2be90ac9a2
child 55 336bee5c2d35
--- 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<CFontBitmap> iFontBitmapList;
 	CArrayFixFlat<TTypefaceFontBitmap> iTypefaceFontBitmapList;
 	CArrayPtrFlat<COpenFontFile> 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<COpenFontRasterizer> iOpenFontRasterizerList;
 	COpenFontSessionCacheList* iOpenFontSessionCacheList;
 	TInt iOpenFontUid;