diff -r 000000000000 -r 1fb32624e06b fontservices/fontstore/src/ShaperCache.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fontservices/fontstore/src/ShaperCache.H Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* SHAPERCACHE.CPP +* +*/ + + +#include +#include +#include "FNTSTD.H" +#include + +const TInt KMaxShaperSesssionCacheMemory = 64*1024; + +//class to store the handle the handle-reference count +class THandleCount + { +public: + THandleCount(TInt aSessionHandle) + :iSessionHandle(aSessionHandle),iRefCount(1),iNext(NULL){} +public: + TInt iSessionHandle; + TInt iRefCount; + THandleCount* iNext; + }; + +/******************** SHAPER CACHE CLASSES*************************************/ +class COpenFontShaperCacheEntry: public CBase + { +public: + static COpenFontShaperCacheEntry* New(RHeap* aHeap, CShaper::TInput aInput, TShapeHeader* aShapeHeader); + static COpenFontShaperCacheEntry* New(RHeap* aHeap); + static void Delete (RHeap* aHeap, COpenFontShaperCacheEntry* aCache); + TBool IsSentinel(){return iShapeHeader==NULL;} + TInt IncRefCount(TInt aSessionHandle); + TInt DecRefCount(TInt aSessionHandle,TBool aReset=EFalse); +private: + COpenFontShaperCacheEntry(RHeap* aHeap,CShaper::TInput aInput) + :iStart(aInput.iStart),iEnd(aInput.iEnd),iScript(aInput.iScript), iHeap(aHeap){} + COpenFontShaperCacheEntry(){} + TInt Construct(CShaper::TInput aInput,TShapeHeader* aShapeHeader); +public: + COpenFontShaperCacheEntry* iPrevious; // pointer to previous node in tree + COpenFontShaperCacheEntry* iNext; // pointer to next shaping info node in the list + + /** The shaped information that is cached */ + TShapeHeader* iShapeHeader; + /** Input information */ + TUint16* iText; + TInt iStart; + TInt iEnd; + TInt iScript; + /** pointer to a private heap for allocating the handle-refcount array*/ + RHeap* iHeap; + /** linked list of THandleCount to store the handle-refcount information */ + THandleCount* iHandleRefList; + TInt iHandleRefCount; + }; + +/***********************SHAPER CACHE ENDS HERE********************************/ +