uiaccelerator_plat/alf_tracing_api/inc/alf/alflayoutmetrics.h
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_tracing_api/inc/alf/alflayoutmetrics.h	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,181 @@
+/*
+* Copyright (c) 2007 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:   Layout metrics
+*
+*/
+
+
+
+#ifndef C_ALFLAYOUTMETRICS_H
+#define C_ALFLAYOUTMETRICS_H
+
+#include <e32base.h>
+
+class CAlfTextVisual;
+class CAlfEnv;
+struct TMarkedVisualEntry;
+
+/**
+ *  Layout metrics utility for measuring text visuals. Measuring is
+ *  is done based on text style or font id. Mesuring texts that has been 
+ *  defined using font specification are not yet supported.
+ *  
+ *
+ *  Example of use:
+ *  
+ *  void CHelloWorldAppUi::ConstructL()
+ *     {
+ *     iEnv = CAlfEnv::NewL();
+ *  #ifdef __DEBUG
+ *     // Enable layout metrics utility visual automarking in debug builds.
+ *     iEnv->LayoutMetricsUtility()->EnableAutoMarking(); 
+ *  #endif
+ *     ...
+ *     ...
+ *     // Create some textvisuals, these will be automatically included
+ *     // into metrics reports. 
+ *     iTextVisual = CAlfTextVisual::AddNewL(*this, iLayout);
+ *     iTextVisual->SetText(KMyText);
+ *     iTextVisual->SetStyle(EAlfTextStyleSmall);
+ *     ...
+ *     ...
+ *     }
+ *
+ *   // handle any menu commands
+ *  void CHelloWorldAppUi::HandleCommandL(TInt aCommand)
+ *     {
+ *     switch(aCommand)
+ *         {
+ *         case EHellowWorldCmdMeasureVisuals:
+ *             {
+ *             // Measure currently visible text visuals
+ *             iEnv->LayoutMetricsUtility()->MeasureVisuals();
+ *             // Write a metrics report into a file 
+ *             iEnv->LayoutMetricsUtility()->WriteReport();
+ *             break;
+ *             }
+ *          ...
+ *          ...    
+ *         }
+ *     ...
+ *     }        
+ *
+ *
+ *  @lib alfclient.lib
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CAlfLayoutMetricsUtility ): public CBase
+    {
+public:
+
+    /**
+     * Destructor.
+     */
+    virtual ~CAlfLayoutMetricsUtility();
+    
+    /**
+     * 2-phase constructor.
+     */
+    static CAlfLayoutMetricsUtility* NewL(CAlfEnv& aEnv);
+
+    /**
+     * 2-phase constructor.
+     */
+    static CAlfLayoutMetricsUtility* NewLC(CAlfEnv& aEnv);
+    
+    /**
+     * Marks visual to be included into layout metric reports.
+     * @param aLogicalName Logical name for the visual, e.q. "title_pane_t1" or "qtn_title_text"...
+     *                     If NULL is given, text visual text will be used as logical name
+     *                     in the reports.
+     * @param aVisual      The visual to be included into reports.
+     */
+    IMPORT_C void MarkVisual(TDesC* aLogicalName, CAlfTextVisual* aVisual);
+    
+    /**
+     * Unmarks visual, it will not be included into layout metric reports.
+     * @param aVisual      The visual to be excluded from reports.
+     */
+    IMPORT_C void UnmarkVisual(CAlfTextVisual* aVisual);
+
+    /**
+     * Measures all currently visible visuals.
+     */
+    IMPORT_C void MeasureVisuals();
+
+    /**
+     * Writes a layout metric report into a file, by default C: drive is used.
+     * Report contains metrics data for each visual at the time of last call to the
+     * MeasureVisuals()-method.
+     *
+     * Report is intended to be used when text strings lenghts are decided and localized to 
+     * different language variants.
+     *
+     * Report contains data for each measured textvisual such as:
+     *
+     * - Component type ("Text" for text visual)
+     * - Id (Generated id number)
+     * - Variety (Generated variety id number)
+     * - Logical name (Given with MarkVisual()-method) 
+     * - Alias (Text that the text visual shows)
+     * - Font type (qfn_primary, qfn_secondary...)
+     * - Text width (Text width in pixels)
+     * - Text height (Text height in pixels)
+     * - Visual coordinates relative to parent layout left, right, top and bottom coordinates
+     * - Remarks (Free text, if any)
+     * - Layout parent id (Generated id for parent layout) 
+     * - Layout parent variety id (Generated variety id for parent layout) 
+     * - Wheter text visual is a multi row or not 
+     * - Max number of text rows 
+     * - Font style 1 (plain, bold -attributes)
+     * - Font style 2 (regular, italic -attributes)
+     * - Font style 3 (underline, strikethrough, outline, boxed or shadow)
+     * - Concatenated rows or not
+     *
+     */
+    IMPORT_C void WriteReport();
+
+    /**
+     * Enables (or disables) automarking of visuals. If enabled, when visuals are 
+     * created they are automatical marked to be included into reports.
+     */
+    IMPORT_C void EnableAutoMarking(TBool aEnabled=ETrue);
+
+    /**
+     * Tells if automatic visual marking is enabled.
+     * @retrun ETrue if automatic visual marking is enabled, otherwise EFalse.
+     */     
+    IMPORT_C TBool AutoMarking();
+
+private:
+
+    CAlfLayoutMetricsUtility();
+    
+    void ConstructL(CAlfEnv& aEnv);
+
+    void MarkVisualL(TDesC* aLogicalName, CAlfTextVisual* aVisual);
+
+    void MeasureVisualsL();
+
+    void PrintToFile( TDesC16& aBuf );
+    
+                           
+private:
+
+    struct TMetricsPrivateData;
+    TMetricsPrivateData* iMetricsData;
+    };
+
+
+#endif // C_ALFLAYOUTMETRICS_H