diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/uigraphicsutils/tef/T_DigitWidth.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/uigraphicsutils/tef/T_DigitWidth.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,307 @@ +// 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 "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: +// + +/** + @file + @internalComponent - Internal Symbian test code +*/ + +#include +#include +#include +#include +#include "T_DigitWidth.h" + +CTestFont::CTestFont(CT_DigitWidth* aDigitWidth):iDigitWidth(aDigitWidth) + { + } + +CTestFont::~CTestFont() + { + } + +TUid CTestFont::DoTypeUid() const + { + return TUid::Uid(1010); + } + +TInt CTestFont::DoHeightInPixels() const + { + return 12; + } + +TInt CTestFont::DoAscentInPixels() const + { + return 10; + } + +TInt CTestFont::DoCharWidthInPixels(TChar aChar) const + { + switch (aChar) + { + //EDigitTypeWestern = 0x0030 + case 0x0030: + return 6; + case 0x0031: + return 6; + case 0x0032: + return 6; + case 0x0033: + return 6; + case 0x0034: + return 6; + case 0x0035: + return 7; //widest + case 0x0036: + return 6; + case 0x0037: + return 6; + case 0x0038: + return 6; + case 0x0039: + return 6; + //EDigitTypeArabicIndic = 0x0660 + case 0x0660: + return 8; + case 0x0661: + return 8; + case 0x0662: + return 9; //widest + case 0x0663: + return 8; + case 0x0664: + return 8; + case 0x0665: + return 8; + case 0x0666: + return 8; + case 0x0667: + return 8; + case 0x0668: + return 8; + case 0x0669: + return 8; + //EDigitTypeEasternArabicIndic = 0x6F0 + case 0x06F0: + return 4; + case 0x06F1: + return 4; + case 0x06F2: + return 4; + case 0x06F3: + return 4; + case 0x06F4: + return 4; + case 0x06F5: + return 4; + case 0x06F6: + return 4; + case 0x06F7: + return 4; + case 0x06F8: + return 4; + case 0x06F9: + return 5; //widest + //EDigitTypeDevanagari = 0x0966 + case 0x0966: + return 11;//widest + case 0x0967: + return 10; + case 0x0968: + return 10; + case 0x0969: + return 10; + case 0x096A: + return 10; + case 0x096B: + return 10; + case 0x096C: + return 10; + case 0x096D: + return 10; + case 0x096E: + return 10; + case 0x096F: + return 10; + //EDigitTypeThai = 0x0E50 + case 0x0E50: + return 15; + case 0x0E51: + return 15; + case 0x0E52: + return 15; + case 0x0E53: + return 15; + case 0x0E54: + return 15; + case 0x0E55: + return 15; + case 0x0E56: + return 15; + case 0x0E57: + return 15; + case 0x0E58: + return 16;//widest + case 0x0E59: + return 15; + } + iDigitWidth->TEST(EFalse); + return 0; + } + +TInt CTestFont::DoTextWidthInPixels(const TDesC& aText) const + { + TInt total = 0; + const TText* p = aText.Ptr(); + const TText* end = p + aText.Length(); + for (;p != end; ++p) + total += CharWidthInPixels(*p); + return total; + } + +TInt CTestFont::DoBaselineOffsetInPixels() const + { + return 10; + } + +TInt CTestFont::DoTextCount(const TDesC& aText,TInt aWidthInPixels) const + { + TInt excess; + return TextCount(aText, aWidthInPixels, excess); + } + +TInt CTestFont::DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const + { + aExcessWidthInPixels = aWidthInPixels; + const TText* start = aText.Ptr(); + const TText* end = start + aText.Length(); + const TText* p = start; + TInt width; + while (p != end + && (width = CharWidthInPixels(*p)) <= aExcessWidthInPixels) + { + aExcessWidthInPixels -= width; + ++p; + } + return p - start; + } + +TInt CTestFont::DoMaxCharWidthInPixels() const + { + return 10; + } + +TInt CTestFont::DoMaxNormalCharWidthInPixels() const + { + return 10; + } + +TFontSpec CTestFont::DoFontSpecInTwips() const + { + return TFontSpec(KTestFontName, 12); + } + + +/*void CTestFont::testResult(TInt aResult) + { + if (aResult==1) + INFO_PRINTF1(_L("test passed\n")); +// else +// INFO_PRINTF1(_L("test failed\n")); + }*/ + +TInt CT_DigitWidth::TestFindWidthOfWidestDigitType(CFont* aFont, TDigitType aDigitType) + { + TFindWidthOfWidestDigitType finder(aDigitType); + return finder.MaximumWidthInPixels(*aFont); + } + +void CT_DigitWidth::TestFontsL() + { + CTestFont font(this); + TFontSpec font_spec = font.FontSpecInTwips(); + + INFO_PRINTF1(_L("-------------\r\n")); + INFO_PRINTF2(_L("Font: %S\r\n"), &(font_spec.iTypeface.iName)); + + TInt maxWidth = 0; + + maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeWestern); + INFO_PRINTF2(_L("EDigitTypeWestern, MaxWidth=%d\r\n"), maxWidth); + TEST(maxWidth == 7); + + maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeArabicIndic); + INFO_PRINTF2(_L("EDigitTypeArabicIndic, MaxWidth=%d\r\n"), maxWidth); + TEST(maxWidth == 9); + + maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeEasternArabicIndic); + INFO_PRINTF2(_L("EDigitTypeEasternArabicIndic, MaxWidth=%d\r\n"), maxWidth); + TEST(maxWidth == 5); + + maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeDevanagari); + INFO_PRINTF2(_L("EDigitTypeDevanagari, MaxWidth=%d\r\n"), maxWidth); + TEST(maxWidth == 11); + + maxWidth = TestFindWidthOfWidestDigitType(&font, EDigitTypeThai); + INFO_PRINTF2(_L("EDigitTypeThai, MaxWidth=%d\r\n"), maxWidth); + TEST(maxWidth == 16); + } + +void CT_DigitWidth::DoTestsL() + { + + INFO_PRINTF1(_L("Test WidestDigitType")); + TestFontsL(); + + } + + + +CT_DigitWidth::~CT_DigitWidth() +/** + Destructor + */ + { + } + + +CT_DigitWidth::CT_DigitWidth() +/** + Constructor + */ + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KT_DigitWidth); + } + + +TVerdict CT_DigitWidth::doTestStepL() +{ + INFO_PRINTF1(_L("Test Started")); + + __UHEAP_MARK; + + INFO_PRINTF1(_L("Digit Width")); + + TRAPD(err, DoTestsL()); + TEST(err==KErrNone); + + + INFO_PRINTF1(_L("Test Finished")); + + __UHEAP_MARKEND; + + return TestStepResult(); +}