common/tools/ats/smoketest/graphics/gdi/src/T_DataFont.cpp
changeset 833 6ffc235847d0
child 872 17498133d9ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/graphics/gdi/src/T_DataFont.cpp	Fri Dec 18 14:46:04 2009 +0000
@@ -0,0 +1,721 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+/**
+@test
+@internalComponent
+
+This contains CT_DataFont
+*/
+
+//	User includes
+#include "T_DataFont.h"
+
+//	Epoc includes
+#include <gdi.h>
+
+/*@{*/
+///	Parameters
+_LIT(KText,									"text");
+_LIT(KWidthAvailable,						"width_available");
+_LIT(KCalculateExcess,						"calculate_excess");
+_LIT(KExpectedExcess,						"expected_excess");
+_LIT(KExpectedResult,						"expected_result");
+_LIT(KExpectedFont,							"expected_font");	
+_LIT(KCharCode,								"char_code");
+_LIT(KUid,									"uid");
+_LIT(KMeasureTextOutput,					"measure_text_output");
+_LIT(KMeasureTextInput,						"measure_text_input");
+
+///	Commands
+_LIT(KCmdFontCapitalAscent,					"FontCapitalAscent");
+_LIT(KCmdFontMaxAscent,						"FontMaxAscent");
+_LIT(KCmdFontStandardDescent,				"FontStandardDescent");
+_LIT(KCmdFontMaxDescent,					"FontMaxDescent");
+_LIT(KCmdFontLineGap,						"FontLineGap");
+_LIT(KCmdFontMaxHeight,						"FontMaxHeight");
+_LIT(KCmdTypeUid,							"TypeUid");
+_LIT(KCmdHeightInPixels,					"HeightInPixels");
+_LIT(KCmdAscentInPixels,					"AscentInPixels");
+_LIT(KCmdDescentInPixels,					"DescentInPixels");
+_LIT(KCmdCharWidthInPixels,					"CharWidthInPixels");
+_LIT(KCmdTextCount,							"TextCount");
+_LIT(KCmdMaxCharWidthInPixels,				"MaxCharWidthInPixels");
+_LIT(KCmdMaxNormalCharWidthInPixels,		"MaxNormalCharWidthInPixels");
+_LIT(KCmdFontSpecInTwips,					"FontSpecInTwips");
+_LIT(KCmdWidthZeroInPixels,					"WidthZeroInPixels");
+_LIT(KCmdBaselineOffsetInPixels,			"BaselineOffsetInPixels");
+_LIT(KCmdGetCharacterData,					"GetCharacterData");
+_LIT(KCmdMeasureText,						"MeasureText");
+_LIT(KCmdExtendedFunction,					"ExtendedFunction");
+_LIT(KCmdTextWidthInPixels,					"TextWidthInPixels");
+/*@}*/
+
+/**
+* Constructor. First phase construction
+*/
+CT_DataFont::CT_DataFont()
+:	CDataWrapperBase()
+	{
+	}
+
+/**
+* Process a command read from the ini file
+*
+* @param aDataWrapper	test step requiring command to be processed
+* @param aCommand	the command to process
+* @param aSection		the entry in the ini file requiring the command to be processed
+*
+* @return ETrue if the command is processed
+*/
+TBool CT_DataFont::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
+	{
+	TBool ret=ETrue;
+
+	if (aCommand == KCmdFontCapitalAscent)
+		{
+		DoCmdFontCapitalAscent(aSection);
+		}
+	else if (aCommand == KCmdFontMaxAscent)
+		{
+		DoCmdFontMaxAscent(aSection);
+		}
+	else if (aCommand == KCmdFontStandardDescent)
+		{
+		DoCmdFontStandardDescent(aSection);
+		}
+	else if (aCommand == KCmdFontMaxDescent)
+		{
+		DoCmdFontMaxDescent(aSection);
+		}
+	else if (aCommand == KCmdFontLineGap)
+		{
+		DoCmdFontLineGap(aSection);
+		}
+	else if (aCommand == KCmdFontMaxHeight)
+		{
+		DoCmdFontMaxHeight(aSection);
+		}
+	else if (aCommand == KCmdTypeUid)
+		{
+		DoCmdTypeUid(aSection);
+		}
+	else if (aCommand == KCmdHeightInPixels)
+		{
+		DoCmdHeightInPixels(aSection);
+		}
+	else if (aCommand == KCmdAscentInPixels)
+		{
+		DoCmdAscentInPixels(aSection);
+		}
+	else if (aCommand == KCmdDescentInPixels)
+		{
+		DoCmdDescentInPixels(aSection);
+		}
+	else if (aCommand == KCmdCharWidthInPixels)
+		{
+		DoCmdCharWidthInPixels(aSection);
+		}
+	else if (aCommand == KCmdTextCount)
+		{
+		DoCmdTextCount(aSection);
+		}
+	else if (aCommand == KCmdMaxCharWidthInPixels)
+		{
+		DoCmdMaxCharWidthInPixels(aSection);
+		}
+	else if (aCommand == KCmdMaxNormalCharWidthInPixels)
+		{
+		DoCmdMaxNormalCharWidthInPixels(aSection);
+		}
+	else if (aCommand == KCmdFontSpecInTwips)
+		{
+		DoCmdFontSpecInTwips(aSection);
+		}
+	else if (aCommand == KCmdWidthZeroInPixels)
+		{
+		DoCmdWidthZeroInPixels(aSection);
+		}
+	else if (aCommand == KCmdBaselineOffsetInPixels)
+		{
+		DoCmdBaselineOffsetInPixels(aSection);
+		}
+	else if (aCommand == KCmdGetCharacterData)
+		{
+		DoCmdGetCharacterData(aSection);
+		}
+	else if (aCommand == KCmdMeasureText)
+		{
+		DoCmdMeasureTextL(aSection);
+		}
+	else if (aCommand == KCmdExtendedFunction)
+		{
+		DoCmdExtendedFunction(aSection);
+		}
+	else if (aCommand == KCmdTextWidthInPixels)
+		{
+		DoCmdTextWidthInPixels(aSection);
+		}
+	else
+		{
+		ret=EFalse;
+		}
+
+	return ret;
+	}
+
+
+////////////////// COMMANDS IMPLEMENTATION  ////////////////////////
+
+
+/** Calls CFont::TextCount() */
+void CT_DataFont::DoCmdTextCount(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::TextCount()"));
+	// get text from parameters
+	TPtrC	text;
+	if ( !GetStringFromConfig(aSection, KText(), text) )
+		{
+		ERR_PRINTF2(_L("No %S"), &KText());
+		SetBlockResult(EFail);
+		}
+
+	// get available width from parameters
+	TInt	widthAvailable = 0;
+	if(!GetIntFromConfig(aSection, KWidthAvailable(), widthAvailable))
+		{
+		ERR_PRINTF2(_L("No %S"), &KWidthAvailable());
+		SetBlockResult(EFail);
+		}
+
+	// get if to use version of TextCount() that calculates excess from parameters
+	TBool	calculateExcess = EFalse;
+	GetBoolFromConfig(aSection, KCalculateExcess(), calculateExcess);
+
+	// call TextCount()
+	TInt	result = KErrNone;
+	if ( calculateExcess )
+		{
+		TInt	excess = 0;
+		result = GetFont()->TextCount(text, widthAvailable, excess);
+
+		// get expected excess from parameters
+		TInt	expectedExcess = 0;
+		if ( GetIntFromConfig(aSection, KExpectedExcess(), expectedExcess) )
+			{
+			ERR_PRINTF1(_L("An expected excess should not be provided if calculate excess is set to false."));
+			SetBlockResult(EFail);
+			}
+		}
+	else
+		{
+		result = GetFont()->TextCount(text, widthAvailable);
+		}
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if ( GetIntFromConfig(aSection, KExpectedResult(), expectedResult) )
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::TextWidthInPixels() */
+void CT_DataFont::DoCmdTextWidthInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::TextWidthInPixels()"));
+	// get text from parameters
+	TPtrC	text;
+	if (!GetStringFromConfig(aSection, KText(), text))
+		{
+		ERR_PRINTF2(_L("No %S"), &KText());
+		SetBlockResult(EFail);
+		}
+
+	// call TextWidthInPixels()
+	TInt	result = GetFont()->TextWidthInPixels(text);
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::CharWidthInPixels() */
+void CT_DataFont::DoCmdCharWidthInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::CharWidthInPixels()"));
+	// get character code from parameters
+	TInt	charCode = 0;
+	if(!GetIntFromConfig(aSection, KCharCode(), charCode))
+		{
+		ERR_PRINTF2(_L("No %S"), &KCharCode());
+		SetBlockResult(EFail);
+		}
+
+	// call CharWidthInPixels()
+	TInt	result = GetFont()->CharWidthInPixels(charCode);
+
+	// get expected result from parameters
+	TInt 	expectedResult = 0;
+	if ( GetIntFromConfig(aSection, KExpectedResult(), expectedResult) )
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontCapitalAscent() */
+void CT_DataFont::DoCmdFontCapitalAscent(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontCapitalAscent()"));
+	// call FontCapitalAscent()
+	TInt	result = GetFont()->FontCapitalAscent();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if ( GetIntFromConfig(aSection, KExpectedResult(), expectedResult) )
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontMaxAscent() */
+void CT_DataFont::DoCmdFontMaxAscent(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontMaxAscent()"));
+	// call FontMaxAscent()
+	TInt	result = GetFont()->FontMaxAscent();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if ( GetIntFromConfig(aSection, KExpectedResult(), expectedResult) )
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontStandardDescent() */
+void CT_DataFont::DoCmdFontStandardDescent(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontStandardDescent()"));
+	// call FontStandardDescent()
+	TInt	result = GetFont()->FontStandardDescent();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontMaxDescent() */
+void CT_DataFont::DoCmdFontMaxDescent(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontMaxDescent()"));
+	// call FontMaxDescent()
+	TInt	result = GetFont()->FontMaxDescent();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontLineGap() */
+void CT_DataFont::DoCmdFontLineGap(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontLineGap()"));
+	// call FontLineGap()
+	TInt	result = GetFont()->FontLineGap();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontMaxHeight() */
+void CT_DataFont::DoCmdFontMaxHeight(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontMaxHeight()"));
+	// call FontMaxHeight()
+	TInt	result = GetFont()->FontMaxHeight();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::TypeUid() */
+void CT_DataFont::DoCmdTypeUid(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::TypeUid()"));
+	// call TypeUid()
+	TUid	result = GetFont()->TypeUid();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != TUid::Uid(expectedResult))
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result.iUid);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::HeightInPixels() */
+void CT_DataFont::DoCmdHeightInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::HeightInPixels()"));
+	// call HeightInPixels()
+	TInt	result = GetFont()->HeightInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::AscentInPixels() */
+void CT_DataFont::DoCmdAscentInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::AscentInPixels()"));
+	// call AscentInPixels()
+	TInt	result = GetFont()->AscentInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::DescentInPixels() */
+void CT_DataFont::DoCmdDescentInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::DescentInPixels()"));
+	// call DescentInPixels()
+	TInt	result = GetFont()->DescentInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::MaxCharWidthInPixels() */
+void CT_DataFont::DoCmdMaxCharWidthInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::MaxCharWidthInPixels()"));
+	// call MaxCharWidthInPixels()
+	TInt	result = GetFont()->MaxCharWidthInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::MaxNormalCharWidthInPixels() */
+void CT_DataFont::DoCmdMaxNormalCharWidthInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::MaxNormalCharWidthInPixels()"));
+	// call MaxNormalCharWidthInPixels()
+	TInt	result = GetFont()->MaxNormalCharWidthInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::FontSpecInTwips() */
+void CT_DataFont::DoCmdFontSpecInTwips(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::FontSpecInTwips()"));
+
+	// call FontSpecInTwips()
+	TFontSpec	fontSpec=GetFont()->FontSpecInTwips();
+	INFO_PRINTF3(_L("iName	%S, iHeight    %d"), &fontSpec.iTypeface.iName,fontSpec.iHeight);
+	
+	TFontSpec expectedFontSpec;
+	if(GetFontSpecFromConfig(aSection, KExpectedFont(), expectedFontSpec))
+		{
+		// just check font name
+		if( fontSpec.iTypeface.iName!=expectedFontSpec.iTypeface.iName)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected font: %S, actual font: %S"),
+					&expectedFontSpec.iTypeface.iName, &fontSpec.iTypeface.iName);
+			SetError(-1);			
+			}
+		}
+	}
+
+
+/** Calls CFont::WidthZeroInPixels() */
+void CT_DataFont::DoCmdWidthZeroInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::WidthZeroInPixels()"));
+	// call WidthZeroInPixels()
+	TInt	result = GetFont()->WidthZeroInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::BaselineOffsetInPixels() */
+void CT_DataFont::DoCmdBaselineOffsetInPixels(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::BaselineOffsetInPixels()"));
+	// call BaselineOffsetInPixels()
+	TInt	result = GetFont()->BaselineOffsetInPixels();
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if(GetIntFromConfig(aSection, KExpectedResult(), expectedResult))
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFont::GetCharacterData() */
+void CT_DataFont::DoCmdGetCharacterData(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::GetCharacterData()"));
+	// get character code from parameters
+	TInt	charCode = 0;
+	if(!GetIntFromConfig(aSection, KCharCode(), charCode))
+		{
+		ERR_PRINTF2(_L("No %S"), &KCharCode());
+		SetBlockResult(EFail);
+		}
+
+	// call GetCharacterData()
+	TUint								code = charCode;
+	TOpenFontCharMetrics				metrics;
+	const TUint8*						bitmapPointer;
+	TSize								bitmapSize;
+	CFont::TCharacterDataAvailability	ret=GetFont()->GetCharacterData(code, metrics, bitmapPointer, bitmapSize);
+	INFO_PRINTF2(_L("CharacterDataAvailability %d"), ret);
+	INFO_PRINTF2(_L("Height                    %d"), bitmapSize.iHeight);
+	INFO_PRINTF2(_L("Width                     %d"), bitmapSize.iWidth);
+	}
+
+
+/** Calls CFont::ExtendedFunction() */
+void CT_DataFont::DoCmdExtendedFunction(const TDesC& aSection)
+	{
+	INFO_PRINTF1(_L("Calls CFont::ExtendedFunction()"));
+	// get function UID from parameters
+	TInt	uidInt = 0;
+	if(!GetHexFromConfig(aSection, KUid(), uidInt))
+		{
+		ERR_PRINTF2(_L("No %S"), &KUid());
+		SetBlockResult(EFail);
+		}
+
+	// call ExtendedFunction()
+	TInt	result=GetFont()->ExtendedFunction(TUid::Uid(uidInt), NULL);
+
+	// get expected result from parameters
+	TInt	expectedResult = 0;
+	if ( GetIntFromConfig(aSection, KExpectedResult(), expectedResult) )
+		{
+		if (result != expectedResult)
+			{
+			ERR_PRINTF3(_L("The result is not as expected! expected: %d, actual: %d"), expectedResult, result);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+
+/** Calls CFbsFont::MeasureText() */
+void CT_DataFont::DoCmdMeasureTextL(const TDesC& aSection)
+	{
+	CFont::TMeasureTextInput*	measureTextInputPointer = NULL;
+	GetMeasureTextInputL(*this, KMeasureTextInput(), aSection, measureTextInputPointer);
+	if ( measureTextInputPointer==NULL )
+		{
+		INFO_PRINTF1(_L("measureTextInputPointer NULL"));
+		}
+
+	CFont::TMeasureTextOutput*	measureTextOutputPointer = NULL;
+	GetMeasureTextOutputL(*this, KMeasureTextOutput(), aSection, measureTextOutputPointer);
+	if ( measureTextOutputPointer==NULL )
+		{
+		INFO_PRINTF1(_L("measureTextOutputPointer NULL"));
+		}
+
+	// get text from parameters
+	TPtrC	text;
+	if (!GetStringFromConfig(aSection, KText(), text))
+		{
+		ERR_PRINTF2(_L("No %S"), &KText());
+		SetBlockResult(EFail);
+		}
+	else
+		{
+		TInt	width=GetFont()->MeasureText(text, measureTextInputPointer, measureTextOutputPointer);
+		INFO_PRINTF2(_L("MeasureText %d"), width);
+		}
+	}
+
+
+////////////////// UTIL METHODS ////////////////////////
+
+
+/**
+* Utility method that fetches TMeasureTextInput pointer by command parameter name from INI-file.
+*/
+TBool CT_DataFont::GetMeasureTextInputL(CDataWrapper& aDataWrapper, const TDesC& aParameterName, const TDesC& aSection, CFont::TMeasureTextInput*& aMeasureTextInput)
+	{
+	// get MeasureTextInputData object from parameters
+	TPtrC	measureTextInputDataObjectName;
+	TBool	ret=aDataWrapper.GetStringFromConfig(aSection, aParameterName, measureTextInputDataObjectName);
+	if ( ret )
+		{
+		// check that the data object was found
+		aMeasureTextInput=static_cast<CFont::TMeasureTextInput*>(aDataWrapper.GetDataObjectL(measureTextInputDataObjectName));
+		}
+
+	return ret;
+	}
+
+
+/**
+* Utility method that fetches TMeasureTextOutput pointer by command parameter name from INI-file.
+*/
+TBool CT_DataFont::GetMeasureTextOutputL(CDataWrapper& aDataWrapper, const TDesC& aParameterName, const TDesC& aSection, CFont::TMeasureTextOutput*& aMeasureTextOutput)
+	{
+	// get MeasureTextOutputData object from parameters
+	TPtrC	measureTextOutputDataObjectName;
+	TBool	ret=aDataWrapper.GetStringFromConfig(aSection, aParameterName, measureTextOutputDataObjectName);
+	if ( ret )
+		{
+		// check that the data object was found
+		aMeasureTextOutput=static_cast<CFont::TMeasureTextOutput*>(aDataWrapper.GetDataObjectL(measureTextOutputDataObjectName));
+		}
+
+	return ret;
+	}