uiaccelerator_plat/alf_visual_api/inc/alf/alftextstylemanager.h
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alftextstylemanager.h	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2006 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:   Text style manager class.
+*
+*/
+
+
+
+#ifndef C_ALFTEXTSTYLEMANAGER_H
+#define C_ALFTEXTSTYLEMANAGER_H
+
+#include <e32base.h>
+
+/** 
+ * Preconfigured text styles.
+ * Matching text styles always exist in the text style manager.
+ * It is possible to retrieve the associated text style object through
+ * CAlfTextStyleManager::TextStyle() - interface.
+ */
+enum TAlfPreconfiguredTextStyle
+    {
+    EAlfTextStyleNormal = 0,
+    EAlfTextStyleNormalItalic,
+    EAlfTextStyleMenuItem,
+    EAlfTextStyleSmall,
+    EAlfTextStyleMenuSmall,
+    EAlfTextStyleMenuTitle,
+    EAlfTextStyleLarge,
+    EAlfTextStyleSoftkey,
+    EAlfTextStyleSupplement,
+    EAlfTextStyleTitle,
+    
+    /** Not a default alf style, will be treated as normal. */
+    EAlfTextStyleNotAHuiStyle = EAlfTextStyleNormal
+    };
+
+// Forward declarations.
+class CAlfTextStyle;
+class CAlfTextVisual;
+class CAlfEnv;
+
+/**
+ * Text style manager class. This class provides means to create and
+ * query text styles that will be used to render text.
+ * Usage:
+ * 
+ * @code
+ *  //Get Textstyle Manager
+ * CAlfTextStyleManager* styleMgr = &iEnv->TextStyleManager();
+ * 
+ *  // Create a textstyle, by passing fontid and preconfigured textstyle as parent id
+ * TInt newStyleId= styleMgr->CreatePlatformTextStyleL( fontStyleId,
+ * 							 EAlfTextStyleNormal );
+ * CAlfTextStyle* newStyle =  styleMgr->TextStyle( newStyleId );
+ * 
+ * //Copy textstyle
+ * TInt copiedId =  styleMgr->CopyTextStyle( newStyleId );
+ * CAlfTextstyle* copiedStyle =  styleMgr->TextStyle( copiedId );
+ * 
+ * //Delete textstyle
+ * TBool issuccess = styleMgr->DeleteTextStyle( newStyleId );
+ * issuccess = styleMgr->DeleteTextStyle( copiedId );
+ * @endcode
+ * 
+ * @see CAlfTextstyle
+ * @see CAlfEnv::TextstyleManager()
+ * @lib alfclient.lib
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CAlfTextStyleManager ): public CBase
+    {
+public:
+
+    /* Constructors and destructor. */
+    
+    /**
+     * Constructor.
+     */
+    static CAlfTextStyleManager* NewL(CAlfEnv& aEnv);
+    
+    /**
+     * Constructor.
+     */
+    static CAlfTextStyleManager* NewLC(CAlfEnv& aEnv);
+    
+    /**
+     * Destructor.
+     */    
+    ~CAlfTextStyleManager();
+
+public:
+    
+    /**
+     * Creates a new text style object based on the S60 font style id passed into this method. 
+     * Text style font and size are set according to the given S60 id. Ids are defined in
+     * avkon.hrh in TAknLogicalFontId enumeration.
+     * A unique toolkit specific ID is constructed and returned. This text style can be
+     * accessed anytime through the TextStyle - method based on the unique ID. The default 
+     * text style has always ID 0.
+     * Text styles cascade properties from their parent styles. By default all text styles
+     * are descended from EAlfTextStyleNormal text style.
+     * If an invalid parent id is given the created text style will use EAlfTextStyleNormal
+     * as its parent.
+     * @see TextStyle()
+     *
+     * Created text styles must be deleted with DeleteTextStyle.
+     * @see DeleteTextStyle()
+     * 
+     * @param aFontStyleId The S60 font style id based on which the text style object will be created.
+     * @param aParentId Toolkit specific ID of the parent text style. The text styles are cascaded.
+     *      
+     * @return Unique toolkit specific ID for the created text style.
+     */
+    IMPORT_C TInt CreatePlatformTextStyleL(TInt aFontStyleId, TInt aParentId);
+    
+    /**
+     * Creates a new text style object based on the parent text style id passed into this method. 
+     * Text style font and size will be the same as the given parent style has.
+     * A unique toolkit specific ID is constructed and returned. This text style can be
+     * accessed anytime through the TextStyle - method based on the unique ID.
+     * Text styles cascade properties from their parent styles. By default all text styles
+     * are descended from EAlfTextStyleNormal text style.
+     * If an invalid parent id is given the created text style will use EAlfTextStyleNormal
+     * as its parent.
+     * @see TextStyle()
+     *
+     * Created text styles must be deleted with DeleteTextStyle.
+     * @see DeleteTextStyle()
+     * 
+     * @param aParentId Toolkit specific ID of the parent text style. The text styles are cascaded.
+     *                  The parent of the created text style is EAlfTextStyleNormal by default.
+     * @return Unique toolkit specific ID for the created text style.
+     */
+    IMPORT_C TInt CreatePlatformTextStyleL(TInt aParentId = EAlfTextStyleNormal);
+    
+    /**
+     * Returns a text style object based on the text style id passed into this method.
+     * If no matching text style is found from the system the method returns the EAlfTextStyleNormal
+     * text style. There is a collection of preconfigured text styles available. They can
+     * be queried using the id enumerations from TAlfPreconfiguredTextStyle.
+     * @see CreatePlatformTextStyleL()
+     * 
+     * @param aId A text style id identifying the requested text style in the text style manager.
+     * @return A pointer to a requested text style. Various attributes of the text style 
+     * can be changed using the returned pointer.
+     */
+    IMPORT_C CAlfTextStyle* TextStyle(TInt aId);    
+    
+    /**
+     * Creates a new text style object that is identical with the given source text style.
+     *
+     * Created/copied text styles must be deleted with DeleteTextStyle.
+     * @see DeleteTextStyle()
+     *
+     * @param aSourceId A toolkit specific ID of the text style to be cloned.
+     * @return Unique toolkit specific ID for the created text style.
+     */
+    IMPORT_C TInt CopyTextStyleL(TInt aSourceId);
+  
+    /**
+     * Deletes the given text style.
+     *
+     * @param aId Text style ID to delete.
+     *
+     * @return Error code. KErrNone if text style was deleted
+     *                     KErrArgument if there is no style defined with given ID
+     *                     KErrAccessDenied if the ID refers to pre-defined styles.
+     */ 
+    IMPORT_C TInt DeleteTextStyle(TInt aId);
+
+public: // internal utils
+    CAlfTextStyle* SwitchTextStyle(TInt aStyle, CAlfTextVisual* aUser);
+    void Unregister(CAlfTextVisual* aVisual);
+    void RefreshVisuals(TInt aStyle);
+    void ReleaseAllVisuals();
+    void RefreshAllVisuals();
+    
+protected:
+
+    /* Constructors. */
+    
+    /**
+     * Default constructor.
+     */
+    CAlfTextStyleManager();
+    
+    /**
+     * Second-phase constructor.
+     */
+    void ConstructL(CAlfEnv& aEnv);
+    
+private:
+	
+    /**
+     * Constructs a collection of CAlfTextStyle objects to match the ones
+     * in TAlfPreconfiguredTextStyle.
+     * @see TAlfPreconfiguredTextStyle
+     */
+    void ConstructPreconfiguredStylesL();	
+
+    /**
+     * Find free slot index
+     *
+     * @return free slot index
+     */    
+    TInt FindFreeSlotIndex() const;
+    
+    /**
+     * Create a platform style.
+     *
+     * @see CreatePlatformTextStyleL
+     * @see CopyTextStyleL
+     *
+     * @param aFontStyleId The S60 font style id based on which the text style object will be created.
+     * @param aParentId Toolkit specific ID of the parent text style. The text styles are cascaded.
+     * @param aImplementationId 	Describes the type of text style that is created (platform text style, etc.)
+     * @return Unique toolkit specific ID for the created text style.
+     */
+    TInt DoCreatePlatformTextStyleL(TInt aFontStyleId, TInt aParentId, TInt aImplementationId);
+
+private:
+	
+	/* Private data. Owned */
+    struct TPrivateData;    
+    TPrivateData* iData;
+    
+    };
+
+#endif // C_ALFTEXTSTYLEMANAGER_H