--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/fonts_api/inc/AknLayoutFont.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 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:
+* Interface for Series 60 font type, incorporating principles of series 60 layout
+*
+*
+*/
+
+
+#ifndef AKNLAYOUTFONT_H
+#define AKNLAYOUTFONT_H
+
+#include <gdi.h>
+#include <fbs.h>
+#include <AknFontSpecification.h>
+#include <AknTextDecorationMetrics.h>
+
+class CBitmapDevice;
+
+/**
+* This abstract class is a CFbsFont that can update itself (re-bind a font) and has standard
+* Series 60 layout API available.
+*
+* Concrete classes derived from this implement constructors and Update methods that
+* supply the specification required for the initially, and newly bound font, respectively.
+* Derived classes must also implement the CreateFont framework method in order to
+* implement the font binding itself.
+*
+* @lib avkon.dll
+* @since 2.8
+*
+* @internal
+*/
+NONSHARABLE_CLASS(CAknLayoutFont) : public CFbsFont
+ {
+
+public:
+ /**
+ * C++ Destructor.
+ */
+ virtual ~CAknLayoutFont();
+
+public: // New functions
+ /**
+ * Update this object's binding to a CFbsFont, using the member data of the derived class.
+ * This method only needs to be called if the client owns the CAknLayoutFont
+ * object, and there has been a layout switch that may affect the font.
+ *
+ * It is functionally equivalent to deleting the CAknLayoutFont object, and
+ * reconstructing it with the same parameters.
+ */
+ IMPORT_C void Update();
+
+ /**
+ * Return the maximum extent of any pixel in the font upwards from the baseline
+ * Measured up, so therefore it is a positive value.
+ *
+ * @return maximum ascent of the font
+ */
+ IMPORT_C TInt MaxAscent() const;
+
+ /**
+ * Return the maximum extent of any pixel in the font down the baseline
+ * Measured down, so therefore it is usually a positive value.
+ *
+ * @return maximum descent of the font
+ */
+ IMPORT_C TInt MaxDescent() const;
+
+ /*
+ * Position of the baseline measured down from the Series 60 layout text pane top
+ *
+ * @return distance from text pane top to baseline
+ */
+ IMPORT_C TInt TextPaneTopToBaseline() const;
+
+ /*
+ * Position of the text pane bottom measured down from the baseline
+ *
+ * @return distance from text pane top to baseline
+ */
+ IMPORT_C TInt BaselineToTextPaneBottom() const;
+
+ /*
+ * Series 60 text pane height.
+ * Always equal to TextPaneTopToBaseline() + BaselineToTextPaneBottom()
+ *
+ * @return text pane height
+ */
+ IMPORT_C TInt TextPaneHeight() const;
+
+ /**
+ * This provides the baseline relative to the top of the combined font for a specific
+ * character code. This value does not include any TopShortfall.
+ **/
+ TInt AscentForCharacter( TChar aCharacter ) const;
+
+ /**
+ * Returns if a font pointer cast to this type if the actual type conforms to this type.
+ *
+ * @returns NULL if the font does not conform to CAknLayoutFont.
+ */
+ IMPORT_C static const CAknLayoutFont* AsCAknLayoutFontOrNull( const CFont* aFont );
+
+ /**
+ * Returns an object describing how the text with this font is to be decorated
+ *
+ * @return text decoration metrics for the font
+ */
+ IMPORT_C TAknTextDecorationMetrics TextDecorationMetrics() const;
+
+ /**
+ * Returns the Avkon font category (EAknFontCategoryPrimary, EAknFontCategorySecondary...)
+ * that was used to generate this font.
+ *
+ * @return font category
+ */
+ IMPORT_C TAknFontCategory FontCategory() const;
+
+ /**
+ * This API allows the font to provide the metrics under which the font was requested.
+ *
+ * @return the font specification for which the font has been supplied
+ */
+ IMPORT_C TAknFontSpecification FontSpecification() const;
+
+public: // Functions from CFont
+
+public:// Functions from CFbsFont
+
+ TFontSpec DoFontSpecInTwips() const;
+
+protected:
+ /**
+ * C++ Constructor.
+ */
+ CAknLayoutFont( CBitmapDevice& aScreenDevice );
+ CBitmapDevice& BitmapDevice() const;
+
+protected: // Internal methods
+
+ void SetExcessAscent( TInt aExcessAscent );
+ void SetExcessDescent( TInt aExcessDescent );
+ void SetBottomShortfall( TInt aBottomShortfall );
+ void SetTextPaneHeight( TInt aTextPaneHeight );
+
+private: // New Framework methods
+ virtual CFbsFont* SupplyFont() = 0;
+ virtual TInt DoAscentForCharacter( TChar aCharacter ) const;
+ virtual TAknTextDecorationMetrics DoTextDecorationMetrics() const = 0;
+ virtual TAknFontSpecification DoFontSpecification() const = 0;
+ virtual void CAknLayoutFont_Reserved_1();
+
+private:
+ void Register();
+ void Deregister();
+
+private:
+
+ CFbsFont* iNonDynamicFont;
+ CBitmapDevice& iScreenDevice;
+ TInt iExcessAscent;
+ TInt iExcessDescent;
+ TInt iBottomShortfall;
+ TInt iTextPaneHeight;
+ TInt iSpare;
+ };
+
+
+#endif //AKNLAYOUTFONT_H