diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/uigraphicsutils/gulinc/GULFONT.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/uigraphicsutils/gulinc/GULFONT.H Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,125 @@ +// Copyright (c) 1997-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: +// + +#if !defined(__GULFONT_H__) +#define __GULFONT_H__ + +#include +#include + +class TResourceReader; + +class TLogicalFont +/** Packages the attributes of a logical font. + +These attributes include a UID (iFontId) and a category (iCategory), either +of which can be used to identify a required system font. The possible values +for the UID are defined in the UI variant's look and feel layer, so are not +the same as the UID values that may be used to create a physical font. + +An object of this class can be passed by any application to CEikonEnv::Font(), +to return the closest matching system font (a CFont-derived object). + +@publishedAll +@released */ + { +public: + /** Logical font categories. + + The font category specifies the type of font that is required. It can be specified + as an alternative to the logical font UID. The physical fonts associated with + these categories are specified in the LAF layer, so are UI variant-specific. */ + enum TFontCategory + { + /** The normal system font. */ + EView, + /** The font used in buttons. */ + EButton, + /** The font used for annotations. This is smaller than the normal font. + For instance, it is used to draw the page number in some applications. */ + EAnnotation, + /** The font used for titles. */ + ETitle + }; + /** Font styles. */ + enum TFontStyle + { + /** Normal style. */ + ENormal, + /** Bold. */ + EBold, + /** Italics. */ + EItalic, + /** Bold and italics. */ + EBoldItalic, + /** Superscript. */ + ESuperscript, + /** Subscript. */ + ESubscript, + /** Light. This is the opposite of bold, i.e. a smaller than normal pen size is + used to draw it. */ + ELight, + /** Custom font. */ + ECustom + }; +public: + IMPORT_C TLogicalFont(); + IMPORT_C TLogicalFont(TUid aId); + IMPORT_C TLogicalFont(TFontCategory aCategory,TFontStyle aStyle,const TZoomFactor& aZoomFactor); + IMPORT_C TLogicalFont(TUid aId,TFontCategory aCategory,TFontStyle aStyle,const TZoomFactor& aZoomFactor); +public: + /** The logical font ID. */ + TUid iFontId; + /** The logical font category. */ + TFontCategory iCategory; + /** The font style. */ + TFontStyle iStyle; + /** The zoom factor. */ + TZoomFactor iZoomFactor; + }; + + +class CCleanupStackableFont : public CBase +/** Wraps a font (CFbsFont) object that can be pushed onto the cleanup stack. + +By default, the cleanup stack only handles CBase-derived classes, and untyped +(TAny*) objects that can be cleaned up by a simple memory free call. Fonts +must also be released, which this class handles automatically in its destructor. + +The font is initialised from a resource file, and can be identified by name +or UID. + +@publishedAll +@released +@see CFbsFont */ + { +public: + IMPORT_C static CCleanupStackableFont* NewL(TResourceReader& aReader,CWsScreenDevice& aScreenDevice); + IMPORT_C static CCleanupStackableFont* NewLC(TResourceReader& aReader,CWsScreenDevice& aScreenDevice); + IMPORT_C static CCleanupStackableFont* NewByNameL(TResourceReader& aReader,CWsScreenDevice& aScreenDevice); + IMPORT_C static CCleanupStackableFont* NewByNameLC(TResourceReader& aReader,CWsScreenDevice& aScreenDevice); + IMPORT_C virtual ~CCleanupStackableFont(); +public: + IMPORT_C CFbsFont& Font() const; + IMPORT_C CFbsFont* TakeOwnershipOfFont(); +private: + CCleanupStackableFont(CWsScreenDevice& aScreenDevice); + static CCleanupStackableFont* NewLC(TBool aByUid,TResourceReader& aReader, CWsScreenDevice& aScreenDevice); +private: + CWsScreenDevice& iScreenDevice; + CFbsFont* iFont; + }; + +#endif