diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/mw/AknTextDecorationMetrics.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/mw/AknTextDecorationMetrics.h Wed Mar 31 12:33:34 2010 +0100 @@ -0,0 +1,157 @@ +/* +* Copyright (c) 2002-2004 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: +* +*/ + + +#ifndef AKNTEXTDECORATIONMETRICS_H +#define AKNTEXTDECORATIONMETRICS_H + +#include +#include + +class CFont; +class TAknFontSpecification; +class TAknWindowComponentLayout; +class TAknTextComponentLayout; + +/** +* This class contains information to decorate a text with highlights, cursors and margins +* +* Construction is performed driven by metrics and style derived from the various object that are +* used in the different contstructors. The metrics used are height, weight, and posture. +* +* From Series 60 font id, the current layout is accessed to provide metrics and style info. +* From a CFont object, the font's own accessible metrics and styles are accessed (e.g. HeightInPixels()) +* From a TFontSpec object, the height and style are extracted via its APIs. +* +* @lib avkon.dll +* @since 2.8 +* +* @internal +*/ +class TAknTextDecorationMetrics + { +public: + // C++ Constructors + /** + * Construct the object with values that are correct for the given font identifier. + * + * @param A Series 60 Font id + */ + IMPORT_C TAknTextDecorationMetrics( TInt aFontId ); + + /** + * Construct the object with values that are correct for the given Symbian Font + * A null pointer passed in will result in a default set of metrics. + * + * @param A generic Symbian font object pointer + */ + IMPORT_C TAknTextDecorationMetrics( const CFont* aFont ); + + /** + * Construct the object with values that are correct for the given Series 60 Font Specification. + * This constructor depends upon the font height and boldness being set in the font specifcation + * object. + * + * @param A Series 60 font specification + */ + IMPORT_C TAknTextDecorationMetrics( const TAknFontSpecification& aFontSpecification ); + +public: + /** + * Fetch the values in pixels for the distances reserved for cursor and highlights + * that extend beyond the font's rendering area (where the glyphs draw) + * + * Values are positive for any normal margin - one that is outside the glyphs area. + * + * @param aLeft number of extra columns of pixels left of glyphs for additional graphics + * @param aRight number of extra rows of pixels right of glyphs for additional graphics + */ + IMPORT_C void GetLeftAndRightMargins( TInt& aLeft, TInt& aRight ) const; + + /** + * Fetch the values in pixels for the distances reserved for cursor and highlights + * that extend beyond the font's rendering area (where the glyphs draw) + * + * Values are positive for any normal margin - one that is outside the glyphs area. + * + * @param aTop number of extra rows of pixels above font ascent for additional graphics + * @param aTop number of extra rows of pixels below font descent for additional graphics + */ + IMPORT_C void GetTopAndBottomMargins( TInt& aTop, TInt& aBottom ) const; + + /** + * Width of the cursor in pixels. This width is to be used when cursor is drawn + * rather than an image. + * + * @return Width of the cursor in pixels. + */ + IMPORT_C TInt CursorWidth() const; + + /** + * Offset distance measured from the bottom of the baseline row of pixels to the + * bottom of the underline. E.g. if this method returns 3, and the underline height + * is 1, then there are 2 pixel rows of gap between the baseline of glyphs and the + * underline. + * + * The baseline referred to is the natural baseline of the glyph, not the formal + * baseline reported by the font. To draw the underline, it may be necessary, depending + * on how the font is compounded, to find the baseline (i.e. ascent) of individual character codes' + * glyphs. + * + * @return Offset distance measured from bottom of glyphs baseline to bottom of underline graphics + */ + IMPORT_C TInt BaselineToUnderlineOffset() const; + + /** + * Height (i.e. thickness) of the drawing of the underline + * Positive for any visible line. e.g. a value of 1, means one row of pixels is drawn. + * + * @return Number of rows pixels in the underline graphics + */ + IMPORT_C TInt UnderlineHeight() const; + +private: // Internal routines for construction + void SetMetricsFromSizeAndBoldness( + TAknFontCategory aCategory, + TInt aTextHeight, + TBool aIsBold ); + void SetDefaultMetrics( + TAknFontCategory aCategory, + TBool aIsBold ); + void GetHighlightLayoutsFromCategory( + TAknFontCategory aCategory, + TAknWindowComponentLayout& aHighlightParentPane, + TAknTextComponentLayout& aHighlightTextPane, + TAknWindowComponentLayout& aHighlightPane ) const; + void GetCursorLayoutsFromCategory( + TAknFontCategory aCategory, + TAknWindowComponentLayout& aCursorLayout, + TAknWindowComponentLayout& aCursorLayoutGraphic ) const; + +private: + TInt16 iTopMargin; + TInt16 iBottomMargin; + TInt16 iLeftMargin; + TInt16 iRightMargin; + TInt16 iCursorWidth; + TInt16 iBaselineToUnderlineOffset; + TInt16 iUnderlineHeight; + TInt16 iSpare; + }; + +#endif +// End of File