diff -r 000000000000 -r bde4ae8d615e os/textandloc/fontservices/textshaperplugin/test/HindiDemo/source/hindiDemoApp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/textandloc/fontservices/textshaperplugin/test/HindiDemo/source/hindiDemoApp.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,1776 @@ +/* +* Copyright (c) 2007-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: +* hindiDemo.cpp +* hindiDemo application +* +*/ + + +#include <e32keys.h> +#include <coemain.h> +#include <eikenv.h> +#include <eikdef.h> +#include <eikstart.h> +#include <techview/eikfontd.h> + +#include <hindidemo.rsg> +#include "hindiDemo.hrh" +#include "hindiDemoApp.h" +#include <techview/eiklabel.h> +#include <techview/eikcmbut.h> +#include <techview/eikrted.h> +#include <barsread.h> +#include <badesca.h> + + +// hindi sample text +// sample 1 +_LIT16(KHindi1,"\x0915\x094D\x0937\x0924\x094D\x0930\x093F\x092F\x0020\x0909\x0926\x094D\x0926\x0947\x0936\x094D\x0020\x0915\x094D\x0937\x093F\x092A\x094D\x0930"); +_LIT16(KHindi2,"\x092d\x0942\x0930\x094d\x092d\x0941\x0935\x0903\x0020\x0938\x094d\x0935\x0903\x0020\x0924\x0924\x094d\x0938\x0935\x093f\x0924\x0941\x0930\x094d\x0935\x0930\x0947\x0923\x094d\x092f\x0902"); +_LIT16(KHindi3,"\x092d\x0930\x094d\x0917\x094b\x0020\x0926\x0947\x0935\x0938\x094d\x092f\x0020\x0927\x0940\x092e\x0939\x093f\x0020\x0927\x093f\x092f\x094b\x0020\x092f\x094b\x0928\x0903\x0020\x092a\x094d\x0930\x091a\x094b\x0926\x092f\x093e\x0924\x094d\x0020"); + +// sample 2 +_LIT16(KHindi4,"\x092f\x0924\x094d\x0930\x0020\x092f\x094b\x0917\x0947\x0936\x094d\x0935\x0930\x0020\x0915\x0943\x0937\x094d\x0923\x094b\x0020\x092f\x0924\x094d\x0930\x0020\x092a\x093e\x0930\x094d\x0925\x094b\x0020\x0927\x0930\x094d\x0928\x0941\x0927\x0930\x0903"); +_LIT16(KHindi5,"\x0924\x0924\x094d\x0930\x0020\x0936\x094d\x0930\x0940\x0930\x094d\x0935\x093f\x091c\x092f\x094b\x0020\x092d\x0942\x0924\x093f\x0930\x094d\x0927\x0941\x0935\x093e\x0020\x0928\x0940\x0924\x093f\x0930\x094d\x092e\x0924\x093f\x0930\x094d\x092e\x092e"); +_LIT16(KHindi6,"\x0915\x0941\x0924\x0938\x094d\x0924\x094d\x0935\x093e\x0020\x0915\x0936\x094d\x092e\x0932\x092e\x093f\x0926\x0902\x0020\x0935\x093f\x0936\x092e\x0947\x0020\x0938\x092e\x0941\x092a\x0938\x094d\x0925\x093f\x0924\x092e\x094d"); + +// sample 3 +_LIT16(KHindi7,"\x0905\x0928\x093e\x0930\x094d\x092f\x091c\x0941\x0937\x094d\x091f\x092e\x0938\x094d\x0935\x0930\x094d\x0917\x094d\x092f\x092e\x0915\x0940\x0930\x094d\x0924\x093f\x0915\x0930\x092e\x0930\x094d\x091c\x0941\x0928"); +_LIT16(KHindi8,"\x0915\x094d\x0932\x0948\x092c\x094d\x092f\x0902\x0020\x092e\x0020\x0938\x094d\x092e\x0020\x0917\x092e\x0903\x0020\x092a\x093e\x0930\x094d\x0925\x0928\x0948\x0924\x0924\x094d\x0924\x094d\x0935\x092f\x094d\x092f\x0941\x092a\x092a\x0926\x094d\x092f\x0924\x0947"); +_LIT16(KHindi9,"\x0915\x094d\x0937\x0941\x0926\x094d\x0930\x0902\x0020\x0939\x0943\x0926\x092f\x0926\x094c\x0930\x094d\x092c\x0932\x094d\x092f\x0902\x0020\x0924\x094d\x092f\x0915\x094d\x0924\x094d\x0935\x094b\x0924\x094d\x0924\x093f\x0937\x094d\x091f\x0020\x092a\x0930\x0902\x0924\x092a"); + +// test 4 - two character test data +_LIT16(KTest1,"\x091c\x092e\x094d\x0918\x0940\x0902\x091a\x094d\x092f\x0940"); +_LIT16(KTest2,"\x092e\x092e\x0020"); +_LIT16(KTest3,"\x0915\x094D\x0937\x0924\x094D\x0930\x093F\x092F\x0020"); + +//Kannada sample text +// sample 1 +_LIT16(KKannada1,"\x0CA8\x0CAE\x0CCD\x0CAE\x0020\x0CB0\x0CBE\x0CB7\x0CCD\x0C9F\x0CCD\x0CB0\x0020\x0CAD\x0CBE\x0CB0\x0CA4"); +_LIT16(KKannada2,"\x0CB2\x0C95\x0CCD\x0CB7\x0CCD\x0CAE\x0CCD\x0CAF\x0CBE"); +_LIT16(KKannada3,"\x0C95\x0CCD\x0C95\x0CCD\x0C95\x0CCD\x0C95\x0CCD\x0C95\x0CCB\x0C82"); +// sample 2 +_LIT16(KKannada4,"\x0CB6\x0CCD\x0CB0\x0CC0\x0020\x0CAD\x0C97\x0CB5\x0CBE\x0CA8\x0CC1\x0CB5\x0CBE\x0C9A\x0C95\x0CC1\x0CA4\x0CB8\x0CCD\x0CA4\x0CCD\x0CB5\x0CBE\x0020\x0C95\x0CB6\x0CCD\x0CAE\x0CB2\x0CAE\x0CBF\x0CA6\x0C82\x0020\x0CB5\x0CBF\x0CB7\x0CAE\x0020\x0CB8\x0CAE\x0CC1\x0CAA\x0CB8\x0CCD\x0CA5\x0CBF\x0CA4\x0CAE\x0CCD"); +_LIT16(KKannada5,"\x0C85\x0CA8\x0CBE\x0CB0\x0CCD\x0CAF\x0C9C\x0CC1\x0CB7\x0CCD\x0CA0\x0CAE\x0CB8\x0CCD\x0CB5\x0CB0\x0CCD\x0C97\x0CCD\x0CAF\x0CAE\x0C95\x0CC0\x0CB0\x0CCD\x0CA4\x0CBF\x0C95\x0CB0\x0CAE\x0CB0\x0CCD\x0C9C\x0CC1\x0CA8"); +_LIT16(KKannada6,"\x0C95\x0CCD\x0CB2\x0CC8\x0CAC\x0CCD\x0CAF\x0C82\x0020\x0CAE\x0CBE\x0020\x0CB8\x0CCD\x0CAE\x0020\x0C97\x0CAE\x0C83\x0020\x0CAA\x0CBE\x0CB0\x0CCD\x0CA5\x0020\x0CA8\x0CC8\x0CA4\x0CA4\x0CCD\x0CA4\x0CCD\x0CB5\x0CAF\x0CCD\x0CAF\x0CC1\x0CAA\x0CAA\x0CA7\x0CCD\x0CAF\x0CA4\x0CC7"); +// sample 3 +_LIT16(KKannada7,"\x0CB8\x0CC1\x0CAA\x0CCD\x0CB0\x0CB8\x0CBE\x0CA6\x0C83\x0020\x0CAA\x0CCD\x0CB0\x0CB8\x0CA8\x0CCD\x0CA8\x0CBE\x0CA4\x0CCD\x0CAE\x0CBE"); +_LIT16(KKannada8,"\x0CB5\x0CBF\x0CB6\x0CCD\x0CB5\x0CA7\x0CC3\x0C97\x0CCD\x0CB5\x0CBF\x0CB6\x0CCD\x0CB5\x0CAD\x0CC1\x0C97\x0CCD\x0CB5\x0CBF\x0CAD\x0CC1\x0C83\x0CB8\x0CA4\x0CCD\x0C95\x0CB0\x0CBE\x0CA4\x0CBE\x0020\x0CB8\x0CA4\x0CCD\x0C95\x0CC3\x0C83\x0020\x0CB8\x0CBE\x0CA7\x0CC1"); +_LIT16(KKannada9,"\x0CB0\x0CCD\x0C9C\x0CB9\x0CCD\x0CA8\x0CC1\x0CB0\x0CCD\x0CA8\x0CBE\x0CB0\x0CBE\x0CAF\x0CA3\x0CCB\x0020\x0CA8\x0CB0\x0C83\x0C95\x0CCD\x0CB7\x0CC1\x0CA6\x0CCD\x0CB0\x0C82\x0020\x0CB9\x0CC3\x0CA6\x0CAF\x0CA6\x0CCC\x0CB0\x0CCD\x0CAC\x0CB2\x0CCD\x0CAF\x0C82\x0020\x0CA4\x0CCD\x0CAF\x0C95\x0CCD\x0CA4\x0CCD\x0CB5\x0CCB\x0CA4\x0CCD\x0CA4\x0CBF\x0CB7\x0CCD\x0CA0\x0020\x0CAA\x0CB0\x0CA8\x0CCD\x0CA4\x0CAA"); + +// Sample 4 +_LIT16(KTestKannada1,"\x0C85\x0CB8\x0C82\x0C96\x0CCD\x0CAF\x0CC7\x0CAF\x0CCB\x0C85\x0CAA\x0CCD\x0CB0\x0CAE\x0CC7\x0CAF\x0CBE\x0CA4\x0CCD\x0CAE\x0CBE\x0020\x0CB5\x0CBF\x0CB6\x0CBF\x0CB7\x0CCD\x0C9F\x0C83"); +_LIT16(KTestKannada2,"\x0CB6\x0CBF\x0CB7\x0CCD\x0C9F\x0C95\x0CC3\x0C9A\x0CCD\x0C9B\x0CC1\x0C9A\x0CBF\x0C83\x0CB8\x0CBF\x0CA6\x0CCD\x0CA7\x0CBE\x0CB0\x0CCD\x0CA5\x0C83\x0020\x0CB8\x0CBF\x0CA6\x0CCD\x0CA7\x0CB8\x0C82\x0C95\x0CB2\x0CCD\x0CAA\x0C83\x0020\x0CB8\x0CBF\x0CA6\x0CCD\x0CA7\x0CBF\x0CA6\x0C83"); +_LIT16(KTestKannada3,"\x0CB8\x0CBF\x0CA6\x0CCD\x0CA7\x0CBF\x0CB8\x0CBE\x0CA7\x0CA8\x0C83"); + +//Gujarati sample text +// sample 1 +_LIT16(KGujarati1,"\x0AAA\x0ACD\x0AB0\x0AA4\x0ABF\x0AB7\x0ACD\x0AA0\x0ABE\x0020\x0A85\x0AA8\x0AC7\x0020\x0A85\x0AA7\x0ABF\x0A95\x0ABE\x0AB0\x0ACB\x0AA8\x0AC0\x0020\x0AA6\x0AC3\x0AB7\x0ACD\x0A9F\x0ABF\x0A8F\x0020\x0AB8\x0AB0\x0ACD\x0AB5\x0020\x0AAE\x0ABE\x0AA8\x0AB5\x0ACB\x0020\x0A9C\x0AA8\x0ACD\x0AAE\x0AA5\x0AC0\x0020\x0AB8\x0ACD\x0AB5\x0AA4\x0A82\x0AA4\x0ACD\x0AB0\x0020\x0A85\x0AA8\x0AC7\x0020\x0AB8\x0AAE\x0ABE\x0AA8\x0020\x0AB9\x0ACB\x0AAF\x0020\x0A9B\x0AC7"); +_LIT16(KGujarati2,"\x0AA4\x0AC7\x0AAE\x0AA8\x0ABE\x0AAE\x0ABE\x0A82\x0020\x0AB5\x0ABF\x0A9A\x0ABE\x0AB0\x0AB6\x0A95\x0ACD\x0AA4\x0ABF\x0020\x0A85\x0AA8\x0AC7\x0020\x0A85\x0A82\x0AA4\x0A83\x0A95\x0AB0\x0AA3\x0020\x0AB9\x0ACB\x0AAF\x0020\x0A9B\x0AC7\x0020\x0A85\x0AA8\x0AC7\x0020\x0AA4\x0AC7\x0AAE\x0AA3\x0AC7\x0020\x0AAA\x0AB0\x0AB8\x0ACD\x0AAA\x0AB0\x0020\x0AAC\x0A82\x0AA7\x0AC1\x0AA4\x0ACD\x0AB5\x0AA8\x0AC0\x0020\x0AAD\x0ABE\x0AB5\x0AA8\x0ABE\x0AAF\x0AC0\x0020\x0AB5\x0AB0\x0ACD\x0AA4\x0AB5\x0AC1\x0A82"); +_LIT16(KGujarati3,"\x0A9C\x0ACB\x0A88\x0A8F"); +// sample 2 +_LIT16(KGujarati4,"\x0AB0\x0ABE\x0AB7\x0ACD\x0A9F\x0ACD\x0AB0\x0AC0\x0AAF\x0020\x0AB6\x0ABF\x0A95\x0ACD\x0AB7\x0AA3\x0020\x0AA8\x0AC0\x0AA4\x0AC0\x0AA8\x0ABE\x0020\x0A85\x0AA8\x0AC1\x0AB8\x0A82\x0AA7\x0ABE\x0AA8\x0AAE\x0ABE\x0A82\x0020\x0AA4\x0AC8\x0AAF\x0ABE\x0AB0\x0020\x0AA5\x0AAF\x0AC7\x0AB2\x0ABE\x0020\x0AA8\x0AB5\x0ABE\x0020\x0A85\x0AAD\x0ACD\x0AAF\x0ABE\x0AB8\x0A95\x0ACD\x0AB0\x0AAE\x0AAE\x0ABE\x0A82"); +_LIT16(KGujarati5,"\x0AA6\x0AB0\x0AC7\x0A95\x0020\x0AB5\x0ABF\x0AB7\x0AAF\x0AA8\x0ABE\x0020\x0AAA\x0ABE\x0AA0\x0ACD\x0AAF\x0A95\x0ACD\x0AB0\x0AAE\x0AA8\x0AC7\x0020\x0AB5\x0AA7\x0AC1\x0020\x0AB8\x0AA7\x0AA8\x0020\x0A85\x0AA8\x0AC7\x0020\x0A85\x0AA7\x0ACD\x0AAF\x0AA4\x0AA8\x0020\x0A95\x0AB0\x0AB5\x0ABE\x0AA8\x0ACB\x0020\x0AAA\x0ACD\x0AB0\x0AAF\x0AA4\x0ACD\x0AA8\x0020\x0A95\x0AB0\x0AB5\x0ABE\x0AAE\x0ABE\x0A82"); +_LIT16(KGujarati6,"\x0A86\x0AB5\x0ACD\x0AAF\x0ACB\x0020\x0A9B\x0AC7\x002E\x0020\x0020\x0AB0\x0ABE\x0AB7\x0ACD\x0A9F\x0ACD\x0AB0\x0AC0\x0AAF\x0020\x0AB6\x0ABF\x0A95\x0ACD\x0AB7\x0AA3\x0020\x0AA8\x0AC0\x0AA4\x0ABF\x0AA8\x0ABE\x0020\x0AAE\x0AC1\x0AB8\x0AA6\x0ABE\x0AAE\x0ABE\x0A82\x0020\x0AB8\x0AAE\x0ABE\x0AA8\x0020\x0A85\x0AAD\x0ACD\x0AAF\x0ABE\x0AB8\x0A95\x0ACD\x0AB0\x0AAE\x0ACB\x0AA8\x0AC0\x0020\x0A85\x0AAE\x0AB2"); +// sample 3 +_LIT16(KGujarati7,"\x0A95\x0AB0\x0AB5\x0ABE\x0020\x0AB8\x0ABE\x0AA5\x0AC7\x0020\x0A95\x0AC7\x0A9F\x0AB2\x0ABE\x0A82\x0A95\x0020\x0AB9\x0ABE\x0AB0\x0ACD\x0AA6\x0AB6\x0ACD\x0AAA\x0020\x0AA4\x0AA4\x0ACD\x0AA4\x0ACD\x0AB5\x0ACB\x0020\x0AA6\x0ABE\x0A96\x0AB2\x0020\x0A95\x0AB0\x0AB5\x0ABE\x0AA8\x0AC1\x0A82\x0020\x0AA8\x0A95\x0ACD\x0A95\x0AC0\x0020\x0A95\x0AB0\x0AB5\x0ABE\x0AAE\x0ABE\x0A82\x0020\x0A85\x0AB5\x0ACD\x0AAF\x0AC1\x0A82\x0020\x0A9B\x0AC7\x002E"); +_LIT16(KGujarati8,"\x0A86\x0020\x0AB9\x0ABE\x0AB0\x0ACD\x0AA6\x0AB6\x0ACD\x0AAA\x0020\x0AA4\x0AA4\x0ACD\x0AA4\x0ACD\x0AB5\x0ACB\x0A82\x0AAE\x0ABE\x0A82\x0020\x0AAD\x0ABE\x0AB0\x0AA4\x0AA8\x0AC0\x0020\x0AB8\x0ACD\x0AB5\x0AA4\x0A82\x0AA4\x0ACD\x0AB0\x0ACD\x0AAF\x0020\x0A9A\x0AB3\x0AB5\x0AB3\x002C\x0020\x0A86\x0AB5\x0AA3\x0AC0\x0020\x0AAC\x0A82\x0AA7\x0ABE\x0AB0\x0AA3\x0AC0\x0AAF\x0020\x0A9C\x0AB5\x0ABE\x0AAC\x0AA6\x0ABE\x0AB0\x0AC0\x0A93\x002C"); +_LIT16(KGujarati9,"\x0AB0\x0ABE\x0AB7\x0ACD\x0A9F\x0ACD\x0AB0\x0AC0\x0AAF\x0020\x0A90\x0A95\x0ACD\x0AAF\x002C\x0020\x0A86\x0AB5\x0AA3\x0ACB\x0020\x0AB8\x0ABE\x0A82\x0AB8\x0ACD\x0A95\x0AC3\x0AA4\x0ABF\x0A95\x0020\x0AB5\x0ABE\x0AB0\x0AB8\x0ACB\x002C\x0020\x0AB8\x0AB0\x0ACD\x0AB5\x0A9C\x0AA8\x0AB8\x0AAE\x0ABE\x0AA8\x0AA4\x0ABE\x002C\x0020\x0AB2\x0ACB\x0A95\x0AB6\x0ABE\x0AB9\x0AC0\x0020\x0A85\x0AA8\x0AC7"); + +// Sample 4 +_LIT16(KTestGujarati1,"\x0AAC\x0ABF\x0AA8\x0AB8\x0ABE\x0A82\x0AAA\x0ACD\x0AB0\x0AA6\x0ABE\x0AAF\x0ABF\x0A95\x0AA4\x0ABE\x002C\x0020\x0A9C\x0ABE\x0AA4\x0ABE\x0AAF\x0020\x0AB8\x0AAE\x0ABE\x0AA8\x0AA4\x0ABE\x002C\x0020\x0AAA\x0AB0\x0ACD\x0AAF\x0ABE\x0AB5\x0AB0\x0AA3\x0020\x0AB8\x0AC1\x0AB0\x0A95\x0ACD\x0AB7\x0ABE\x002C\x0020\x0AB8\x0ABE\x0AAE\x0ABE\x0A9C\x0ABF\x0A95\x0020\x0A85\x0AB5\x0AB0\x0ACB\x0AA7\x0ACB\x0AA8\x0AC1\x0A82"); +_LIT16(KTestGujarati2,"\x0AA8\x0ABF\x0AB5\x0ABE\x0AB0\x0AA3\x0020\x0AA4\x0AA5\x0ABE\x0020\x0AB5\x0AC8\x0A9C\x0ACD\x0A9E\x0ABE\x0AA8\x0ABF\x0A95\x0020\x0A95\x0AC7\x0AB3\x0AB5\x0AA3\x0AC0\x0020\x0A9C\x0AC7\x0AB5\x0AC0\x0020\x0AAC\x0ABE\x0AAC\x0AA4\x0ACB\x0AA8\x0AC0\x0020\x0AB8\x0AAE\x0ABE\x0AB5\x0AC7\x0AB6\x0020\x0AA5\x0ABE\x0AAF\x0020\x0A9B\x0AC7\x002E\x0020\x0AB5\x0AB3\x0AC0"); +_LIT16(KTestGujarati3,"\x0AAE\x0ABE\x0AA7\x0ACD\x0AAF\x0AAE\x0ABF\x0A95\x0020\x0A95\x0AC7\x0020\x0A89\x0AAF\x0ACD\x0AAF\x0AA4\x0AB0\x0020\x0AAE\x0ABE\x0AA7\x0ACD\x0AAF\x0AAE\x0ABF\x0A95\x0020\x0A95\x0A95\x0ACD\x0AB7\x0ABE\x0A8F\x0020\x0A86\x0020\x0AAC\x0AA7\x0AC0\x0020\x0A9C\x0020\x0AAC\x0ABE\x0AAC\x0AA4\x0ACB\x0AA8\x0AC1\x0A82\x0020\x0AB5\x0AA7\x0AC1\x0020\x0AB8\x0AA7\x0AA8\x0AB6\x0ABF\x0A95\x0ACD\x0AB7\x0AA3\x0020\x0A86\x0AAA\x0AB5\x0ABE\x0AA8\x0ACB\x0020\x0A89\x0AA6\x0ACD\x0AA6\x0AC7\x0AB6\x0020\x0AAA\x0AA3\x0020\x0AB8\x0ACD\x0AB5\x0AC0\x0A95\x0ABE\x0AB0\x0ABE\x0AAF\x0ACB\x0020\x0A9B\x0AC7"); + + +//Bengali sample text +// sample 1 +_LIT16(KBengali1," \x098F\x0995\x0020\x09AC\x09CB\x0995\x09BE\x0020\x099C\x09CB\x09B2\x09BE\x0020\x099B\x09BF\x09B2\x0964\x0020\x09B8\x09C7\x0020\x0020\x098F\x0995\x09A6\x09BF\x09A8\x0020\x0995\x09BE\x09B8\x09CD\x09A4\x09C7\x0020\x09A8\x09BF\x09DF\x09C7\x0020\x09A7\x09BE\x09A8\x0020\x0995\x09BE\x099F\x09A4\x09C7\x0020\x0997"); +_LIT16(KBengali2,"\x09BF\x09DF\x09C7\x0020\x0996\x09C7\x09A4\x09C7\x09B0\x0020\x09AE\x09BE\x099D\x0996\x09BE\x09A8\x09C7\x0987\x0020\x0998\x09C1\x09AE\x09BF\x09DF\x09C7\x0020\x09AA\x09DC\x09B2\x0964\x0020\x0998\x09C1\x09AE\x0020\x09A5\x09C7\x0995\x09C7\x0020\x0989\x09A0\x09C7\x0020\x0986\x09AC\x09BE\x09B0\x0020\x0995\x09BE\x09B8"); +_LIT16(KBengali3,"\x09CD\x09A4\x09C7\x0020\x09B9\x09BE\x09A4\x09C7\x0020\x09A8\x09BF\x09DF\x09C7\x0020\x09A6\x09C7\x0996\x09B2\x002C\x0020\x09B8\x09C7\x099F\x09BE\x0020\x09AC\x09A1\x09CD\x09A1\x0020\x0997\x09B0\x09AE\x0020\x09B9\x09DF\x09C7\x099B\x09C7\x0964\x0020\x0995\x09BE\x09B8\x09CD\x09A4\x09C7\x0996\x09BE\x09A8"); +// sample 2 +_LIT16(KBengali4,"\x09BE\x0020\x09B0\x09CB\x09A6\x0020\x09B2\x09C7\x0997\x09C7\x0020\x0997\x09B0\x09AE\x0020\x09B9\x09DF\x09C7\x099B\x09BF\x09B2\x002C\x0020\x0995\x09BF\x09A8\x09CD\x09A4\x09C1\x0020\x099C\x09CB\x09B2\x09BE\x0020\x09AD\x09BE\x09AC\x09B2\x09C7\x0020\x09A4\x09BE\x09B0\x0020\x099C\x09CD\x09AC\x09B0\x0020\x09B9"); +_LIT16(KBengali5,"\x09DF\x09C7\x099B\x09C7\x0964\x0020\x09A4\x0996\x09A8\x0020\x09B8\x09C7\x0020\x0060\x0986\x09AE\x09BE\x09B0\x0020\x0995\x09BE\x09B8\x09CD\x09A4\x09C7\x0020\x09A4\x09CB\x0020\x09AE\x09B0\x09C7\x0020\x09AF\x09BE\x09AC\x09C7\x0020\x09B0\x09C7\x0021\x0027\x0020\x09AC\x09B2\x09C7\x0020\x09B9\x09BE\x0989\x0020\x09B9"); +_LIT16(KBengali6,"\x09BE\x0989\x0020\x0995\x09B0\x09C7\x0020\x0995\x09BE\x0981\x09A6\x09A4\x09C7\x0020\x09B2\x09BE\x0997\x09B2\x0964\x0020\x09AA\x09BE\x09B6\x09C7\x09B0\x0020\x0996\x09C7\x09A4\x09C7\x0020\x098F\x0995\x0020\x099A\x09BE\x09B7\x09BE\x0020\x0995\x09BE\x099C\x0020\x0995\x09B0\x099B\x09BF\x09B2\x0964\x0020"); +// sample 3 +_LIT16(KBengali7,"\x099C\x09CB\x09B2\x09BE\x09B0\x0020\x0995\x09BE\x09A8\x09CD\x09A8\x09BE\x0020\x09B6\x09C1\x09A8\x09C7\x0020\x09B8\x09C7\x0020\x09AC\x09B2\x09CD\x09B2\x002C\x0020\x0060\x0995\x09BF\x0020\x09B9\x09DF\x09C7\x099B\x09C7\x003F\x0027\x0020\x099C\x09CB\x09B2\x09BE\x0020\x09AC\x09B2\x09CD\x09B2\x09C7\x002C\x0020"); +_LIT16(KBengali8,"\x0060\x0986\x09AE\x09BE\x09B0\x0020\x0995\x09BE\x09B8\x09CD\x09A4\x09C7\x09B0\x0020\x099C\x09CD\x09AC\x09B0\x0020\x09B9\x09DF\x09C7\x099B\x09C7\x0964\x0027\x0020\x09A4\x09BE\x0020\x09B6\x09C1\x09A8\x09C7\x0020\x099A\x09BE\x09B7\x09BE\x0020\x09B9\x09BE\x09B8\x09A4\x09C7\x0020\x09B9\x09BE\x09B8\x09A4\x09C7\x0020"); +_LIT16(KBengali9,"\x09AC\x09B2\x09CD\x09B2\x09C7\x002C\x0020\x0060\x0993\x0995\x09C7\x0020\x099C\x09B2\x09C7\x0020\x09A1\x09C1\x09AC\x09BF\x09DF\x09C7\x0020\x09B0\x09BE\x0996\x002C\x0020\x099C\x09CD\x09AC\x09B0\x0020\x09B8\x09C7\x09B0\x09C7\x0020\x09AF\x09BE\x09AC\x09C7\x0964\x0027\x0020\x099C\x09B2\x09C7\x0020"); + +// Sample 4 +_LIT16(KTestBengali1,"\x09A1\x09C1\x09AC\x09BF\x09DF\x09C7\x0020\x0995\x09BE\x09B8\x09CD\x09A4\x09C7\x0020\x09A0\x09BE\x09A3\x09CD\x09A1\x09BE\x0020\x09B9\x09B2\x002C\x0020\x099C\x09CB\x09B2\x09BE\x0993\x0020\x0996\x09C1\x09AC\x0020\x09B8\x09C1\x0996\x09C0\x0020\x09B9\x09B2\x0964\x0020\x09A4\x09BE\x09B0\x09AA\x09B0\x0020"); +_LIT16(KTestBengali2,"\x098F\x0995\x09A6\x09BF\x09A8\x0020\x099C\x09CB\x09B2\x09BE\x09B0\x0020\x09AE\x09BE\x09DF\x09C7\x09B0\x0020\x099C\x09CD\x09AC\x09B0\x0020\x09B9\x09DF\x09C7\x099B\x09C7\x0964\x0020\x09B8\x0995\x09B2\x09C7\x0020\x09AC\x09B2\x09CD\x09B2\x09C7\x002C\x0020\x0060\x09AC\x09A6\x09CD\x09A6\x09BF\x0020\x09A1\x09BE\x0995\x0964\x0027\x0020"); +_LIT16(KTestBengali3,"\x099C\x09CB\x09B2\x09BE\x0020\x09AC\x09B2\x09CD\x09B2\x09C7\x002C\x0020\x0060\x0986\x09AE\x09BF\x0020\x0993\x09B7\x09C1\x09A7\x0020\x099C\x09BE\x09A8\x09BF\x0964\x0027\x0020\x09AC\x09B2\x09C7\x002C\x0020\x09B8\x09C7\x0020\x09A4\x09BE\x09B0\x0020\x09AE\x09BE\x0995\x09C7\x0020\x09AA\x09C1\x0995\x09C1\x09B0\x09C7\x0020\x09A8\x09BF\x09DF\x09C7\x0020\x0997\x09BF\x09DF\x09C7\x0020\x099C\x09B2\x09C7\x09B0\x0020\x09AD\x09BF\x09A4\x09B0\x09C7\x0020"); + + + +//Tamil sample text +// sample 1 +_LIT16(KTamil1,"\x0BAA\x0BBE\x0BAF\x0BBF\x0BB0\x0BAE\x0BCD"); +_LIT16(KTamil2,"\x0B95\x0B9F\x0BB5\x0BC1\x0BB3\x0BCD\x0BB5\x0BBE\x0BB4\x0BCD\x0BA4\x0BCD\x0BA4\x0BC1"); +_LIT16(KTamil3,"\x0BAA\x0BC2\x0BB5\x0BBF\x0BA9\x0BCD\x0BAE\x0BC7\x0BB2\x0BCD\x0BB5\x0BA8\x0BCD\x0BA4\x0BB0\x0BC1\x0BB3\x0BC1\x0BAE\x0BCD\x0BAA\x0BC1\x0B99\x0BCD\x0B95\x0BB5\x0BA9\x0BCD\x0BA4\x0BA9\x0BCD\x0BAA\x0BCA\x0BB1\x0BCD\x0BAA\x0BBE\x0BA4\x0BAE\x0BCD"); +// sample 2 +_LIT16(KTamil4,"\x0BA8\x0BBE\x0BB5\x0BBF\x0BA9\x0BBE\x0BB2\x0BCD\x0BA8\x0BBE\x0BB3\x0BC1\x0BAE\x0BCD\x0BA8\x0BB5\x0BBF\x0BA9\x0BCD\x0BB1\x0BC7\x0BA4\x0BCD\x0BA4\x0BBF\x0BAE\x0BC7\x0BB5\x0BC1\x0BAE\x0BC1\x0B9F\x0BBF"); +_LIT16(KTamil5,"\x0BAA\x0BC6\x0BB2\x0BCD\x0BB2\x0BBE\x0BAE\x0BCD\x0B89\x0BA3\x0BB0\x0B8E\x0BB4\x0BC1\x0BA4\x0BCD\x0BA4\x0BBF\x0BA9\x0BCD\x0B87\x0BB2\x0B95\x0BCD\x0B95\x0BA3\x0BA4\x0BCD\x0BA4\x0BC8\x0B9A\x0BCD"); +_LIT16(KTamil6,"\x0B9A\x0BCA\x0BB2\x0BCD\x0BB2\x0BBE\x0BB2\x0BCD\x0B89\x0BB0\x0BC8\x0BAA\x0BCD\x0BAA\x0BA9\x0BCD\x0BA4\x0BCA\x0B95\x0BC1\x0BA4\x0BCD\x0BA4\x0BC1."); +// sample 3 +_LIT16(KTamil7,"\x0B85\x0BB5\x0BC8\x0BAF\x0B9F\x0B95\x0BCD\x0B95\x0BAE\x0BCD"); +_LIT16(KTamil8,"\x0B89\x0BA3\x0BCD\x0BA3\x0BAE\x0BC1\x0B9F\x0BBF\x0BAF\x0BBE\x0BA4\x0BB5\x0BCB\x0BA4\x0BA8\x0BC0\x0BB0\x0BCD\x0BB5\x0BBE\x0BA9\x0BCD\x0BB5\x0BBE\x0BAF\x0BCD\x0BAA\x0BCD\x0BAA\x0B9F\x0BCD"); +_LIT16(KTamil9,"\x0B9F\x0BC6\x0BA3\x0BCD\x0BA3\x0B85\x0BAE\x0BC1\x0BA4\x0BBE\x0BA9\x0BA4\x0BBF\x0BB2\x0BCD\x0BB2\x0BC8\x0BAF\x0BCB-\x0BAE\x0BA3\x0BCD\x0BA3\x0BBF\x0BA9\x0BCD\x0BAE\x0BC7\x0BB2\x0BCD"); +// Sample 4 +_LIT16(KTestTamil1,"\x0BA8\x0BB2\x0BCD\x0BB2\x0BBE\x0BB0\x0BC8\x0B9A\x0BCD\x0B9A\x0BC7\x0BB0\x0BCD\x0BA8\x0BCD\x0BA4\x0BB2\x0BBE\x0BB2\x0BCD\x0BA8\x0BBE\x0BA9\x0BCD\x0B9A\x0BCA\x0BA9\x0BCD\x0BA9\x0BAA\x0BC1\x0BA9\x0BCD\x0B9A\x0BCA\x0BB2\x0BCD\x0BB2\x0BC1\x0BAE\x0BCD"); +_LIT16(KTestTamil2,"\x0B8E\x0BB2\x0BCD\x0BB2\x0BCB\x0BB0\x0BC1\x0BAE\x0BCD\x0B95\x0BC8\x0B95\x0BCA\x0BB3\x0BCD\x0BB5\x0BB0\x0BCD\x0B88\x0B99\x0BCD\x0B95\x0BC1."); +_LIT16(KTestTamil3,"\x0B89\x0BA3\x0BCD\x0BA3\x0BAE\x0BC1\x0B9F\x0BBF\x0BAF\x0BBE\x0BA4\x0BB5\x0BCB\x0BA4\x0BA8\x0BC0\x0BB0\x0BCD\x0BB5\x0BBE\x0BA9\x0BCD\x0BB5\x0BBE\x0BAF\x0BCD\x0BAA\x0BCD\x0BAA\x0B9F\x0BCD"); + + +//Telugu sample text +// sample 1 +_LIT16(KTelugu1,"\x0C38\x0C30\x0C4D\x0C35\x0C24\x0C4D\x0C30\x0C17\x0C2E\x0C1A\x0C3F\x0C28\x0C4D\x0C24\x0C4D\x0C2F\x0C1E\x0C4D"); +_LIT16(KTelugu2,"\x0C15\x0C42\x0C1F\x0C38\x0C4D\x0C25\x0C2E\x0C1A\x0C32\x0C28\x0C4D\x0C27\x0C4D\x0C30\x0C41\x0C35\x0C2E"); +_LIT16(KTelugu3,"\x0C05\x0C25\x0C48\x0C24\x0C26\x0C2A\x0C4D\x0C2F\x0C36\x0C15\x0C4D\x0C24\x0C4B\x093D\x0C38"); +// sample 2 +_LIT16(KTelugu4,"\x0C2F\x0C4B\x0C28\x0C3F\x0C30\x0C4D\x0C2E\x0C39\x0C26\x0C4D\x0C2C\x0C4D\x0C30\x0C39\x0C4D\x0C2E"); +_LIT16(KTelugu5,"\x0C26\x0C47\x0C39\x0C47\x093D\x0C38\x0C4D\x0C2E\x0C3F\x0C28\x0C4D\x0C2A\x0C4D\x0C30\x0C15\x0C3E\x0C36"); +_LIT16(KTelugu6,"\x0C2A\x0C4D\x0C30\x0C35\x0C43\x0C24\x0C4D\x0C24\x0C3F\x0C30\x0C3E\x0C30\x0C2E\x0C4D\x0C2D\x0C03"); +// sample 3 +_LIT16(KTelugu7,"\x0C1C\x0C41\x0C39\x0C4D\x0C35\x0C26\x0C43\x0C37\x0C3F\x0C30\x0C4D\x0C39\x0C4B\x0C24\x0C3E"); +_LIT16(KTelugu8,"\x0C2A\x0C24\x0C24\x0C4D\x0C30\x0C48\x0C30\x0C4D\x0C26\x0C4D\x0C2F\x0C3E\x0C35\x0C3E\x0C2D\x0C42\x0C2E"); +_LIT16(KTelugu9,"\x0C26\x0C4D\x0C2F\x0C3E\x0C14\x0C30\x0C4D\x0C23\x0C4B\x0C28\x0C4D\x0C2E\x0C39\x0C3F\x0C28\x0C3E"); +// Sample 4 +_LIT16(KTestTelugu1,"\x0C09\x0C26\x0C4D\x0C35\x0C43\x0C24\x0C4D\x0C30\x0C39\x0C28\x0C4D\x0C35\x0C3E\x0C1C\x0C3F\x0C28\x0C3E\x0C02"); +_LIT16(KTestTelugu2,"\x0C05\x0C30\x0C4D\x0C37\x0C28\x0C4D\x0C24\x0C4D\x0C2F\x0C42\x0C30\x0C4D\x0C2E\x0C2F\x0C4B \x0C18\x0C43\x0C24\x0C38\x0C4D"); +_LIT16(KTestTelugu3,"\x0C07\x0C24\x0C4D\x0C2A\x0C41\x0C30\x0C4D\x0C35\x0C28\x0C41\x0C24\x0C4D\x0C24\x0C36\x0C4D\x0C1A\x0C30\x0C4D\x0C37\x0C23\x0C40\x0C27\x0C43\x0C24\x0C3F\x0C03"); + +void Panic(TInt aPanic) + { + _LIT(KPanic, "hindiDemo Application"); + User::Panic(KPanic,aPanic); + } + +// Class CHindiContainer + +void CHindiContainer::ConstructL(const TRect& aRect) + { + + CreateWindowL(); + SetBlank(); + + _LIT(KMyFontName,"Series 60 Hindi TitleSmB"); + TFontSpec hindiFontSpec(KMyFontName,200); + iFontSpec = hindiFontSpec; + SetFontSize(200); + + // first label + _LIT(KSomeHindi," " ); + iTest = new(ELeave) CEikLabel; + iTest->SetContainerWindowL(*this); + iTest->SetBufferReserveLengthL(64); + iTest->SetTextL(KSomeHindi); + + // add a CEikRichTextEditor +/* TResourceReader reader; + TBuf<500> buf; + iCoeEnv->CreateResourceReaderLC(reader, R_OUTPUT_WINDOW_RTEXTED); + iOutputWindow = new (ELeave) CEikRichTextEditor(); + iOutputWindow->SetContainerWindowL(*this); + iOutputWindow->ConstructFromResourceL(reader); + CleanupStack::PopAndDestroy(); // Resource reader + iOutputWindow->SetFocus(ETrue); + + const TPoint KOutputPosition = TPoint(10, 35); + const TSize KOutputSize = TSize(150, 100); + iOutputWindow->SetExtent(KOutputPosition, KOutputSize); + + buf.Append(_L("abc")); + buf.Append(KHindi); + buf.Append(_L(" xyz")); + iOutputWindow->SetTextL(&buf); */ + + SetRect(aRect); + ActivateL(); + iSample =1; + } + +CHindiContainer::~CHindiContainer() + { + delete iTest; + delete iOutputWindow; + } + +void CHindiContainer::SizeChanged() + { + TPoint pos = Position(); + iTest->SetExtent(pos + TPoint(10,10), TSize(500, 40)); + } + +TInt CHindiContainer::CountComponentControls() const + { + return 1 /* 2 */; + } + +CCoeControl* CHindiContainer::ComponentControl(TInt aIndex) const + { + CCoeControl* controls[] = { iTest/*, iOutputWindow */ }; + return controls[aIndex]; + } + +void CHindiContainer::HandleControlEventL(CCoeControl* /* aControl */, + TCoeEvent aEventType) + { + if (aEventType == EEventStateChanged) + { + // AppUi()->Exit(); + } + } + +void CHindiContainer::Draw(const TRect& aRect) const + { + TRect rect(Rect()); + rect.Intersection(aRect); + + // draw the text directly on the display + CWindowGc& gc = SystemGc(); + DrawHindiText(gc); + } + +void CHindiContainer::ChangeSample( TInt aSample) + { + iSample = aSample; + if (iSample > 24 ) iSample = 1; + if (iSample < 1 ) iSample = 24; + } + +TInt CHindiContainer::GetSample() + { + return iSample; + } + +void CHindiContainer::SetHindiFont( TFontSpec& aFontSpec ) + { + iFontSpec = aFontSpec; + } + +void CHindiContainer::SetFontSize( TInt aFontSize ) + { + iFontSize = aFontSize; + iFontSpec.iHeight = iFontSize; + } + +TInt CHindiContainer::GetFontSize() + { + return iFontSize; + } + + +const TInt UnicodeZeroWidthNonJoiner = 0x200C; + +/* Display Hindi without shaping by inserting a Unicode Zero Width Non Joiner +character bewteen each character +aInput the Hindi text to be displayed +aOutput the same text with the ZWNJ characters added, This buffer must be big enough +*/ +void CHindiContainer::DisableShaping(const TDesC* aInput, TDes& aOutput ) const + { + aOutput.Zero(); + for (TInt i = 0; i < aInput->Length(); i++ ) + { + aOutput.Append( aInput->Mid(i,1) ); + aOutput.Append( UnicodeZeroWidthNonJoiner ); + } + } + +/* create a text file which contains the sample hindi data +this can be used for testing +*/ +void CHindiContainer::CreateHindiTxtFile() const + { + RFs fs; + TInt error = KErrNone; + RFile file; + + // Open or create hindi.txt + error = fs.Connect(); + error = file.Open(fs, _L("c:\\hindi.txt"), EFileWrite); + if ( error == KErrNotFound) + { + error = file.Create(fs, _L("c:\\hindi.txt"), EFileWrite); + } + + // load buffer with data to write + RBuf8 buffer; + buffer.Create(10000); + TPtrC16 pHindi(KHindi1); + buffer.Append( _L("\xff\xfe") ); + buffer.Append((const unsigned char *)pHindi.Ptr(), pHindi.Size() ); + + TPtrC16 pHindi2(KHindi2); + buffer.Append((const unsigned char *)pHindi2.Ptr(), pHindi2.Size() ); + + TPtrC16 pHindi3(KHindi3); + buffer.Append((const unsigned char *)pHindi3.Ptr(), pHindi3.Size() ); + + TPtrC16 pHindi4(KHindi4); + buffer.Append((const unsigned char *)pHindi4.Ptr(), pHindi4.Size() ); + + TPtrC16 pHindi5(KHindi5); + buffer.Append((const unsigned char *)pHindi5.Ptr(), pHindi5.Size() ); + + TPtrC16 pHindi6(KHindi6); + buffer.Append((const unsigned char *)pHindi6.Ptr(), pHindi6.Size() ); + + TPtrC16 pHindi7(KHindi7); + buffer.Append((const unsigned char *)pHindi7.Ptr(), pHindi7.Size() ); + + TPtrC16 pHindi8(KHindi8); + buffer.Append((const unsigned char *)pHindi8.Ptr(), pHindi8.Size() ); + + TPtrC16 pHindi9(KHindi9); + buffer.Append((const unsigned char *)pHindi9.Ptr(), pHindi9.Size() ); + + // write buffer + error = file.Write(buffer); + + buffer.Close(); + + file.Close(); + fs.Close(); + + } + + +/* create a text file which contains the sample Kannada data +this can be used for testing +*/ +void CHindiContainer::CreateKannadaTxtFile() const + { + RFs fs; + TInt error = KErrNone; + RFile file; + + // Open or create Kannada.txt + error = fs.Connect(); + error = file.Open(fs, _L("c:\\Kannada.txt"), EFileWrite); + if ( error == KErrNotFound) + { + error = file.Create(fs, _L("c:\\Kannada.txt"), EFileWrite); + } + + // load buffer with data to write +// TBuf8<10000> buffer; + RBuf8 buffer; + buffer.Create(10000); + TPtrC16 pKannada(KKannada1); + buffer.Append( _L("\xff\xfe") ); + buffer.Append((const unsigned char *)pKannada.Ptr(), pKannada.Size() ); + + TPtrC16 pKannada2(KKannada2); + buffer.Append((const unsigned char *)pKannada2.Ptr(), pKannada2.Size() ); + + TPtrC16 pKannada3(KKannada3); + buffer.Append((const unsigned char *)pKannada3.Ptr(), pKannada3.Size() ); + + TPtrC16 pKannada4(KKannada4); + buffer.Append((const unsigned char *)pKannada4.Ptr(), pKannada4.Size() ); + + TPtrC16 pKannada5(KKannada5); + buffer.Append((const unsigned char *)pKannada5.Ptr(), pKannada5.Size() ); + + TPtrC16 pKannada6(KKannada6); + buffer.Append((const unsigned char *)pKannada6.Ptr(), pKannada6.Size() ); + + TPtrC16 pKannada7(KKannada7); + buffer.Append((const unsigned char *)pKannada7.Ptr(), pKannada7.Size() ); + + TPtrC16 pKannada8(KKannada8); + buffer.Append((const unsigned char *)pKannada8.Ptr(), pKannada8.Size() ); + + TPtrC16 pKannada9(KKannada9); + buffer.Append((const unsigned char *)pKannada9.Ptr(), pKannada9.Size() ); + + // write buffer + error = file.Write(buffer); + + buffer.Close(); + + file.Close(); + fs.Close(); + + } + +/* create a text file which contains the sample Gujarati data +this can be used for testing +*/ +void CHindiContainer::CreateGujaratiTxtFile() const + { + RFs fs; + TInt error = KErrNone; + RFile file; + + // Open or create Gujarati.txt + error = fs.Connect(); + error = file.Open(fs, _L("c:\\Gujarati.txt"), EFileWrite); + if ( error == KErrNotFound) + { + error = file.Create(fs, _L("c:\\Gujarati.txt"), EFileWrite); + } + + // load buffer with data to write +// TBuf8<10000> buffer; + RBuf8 buffer; + buffer.Create(10000); + TPtrC16 pGujarati(KGujarati1); + buffer.Append( _L("\xff\xfe") ); + buffer.Append((const unsigned char *)pGujarati.Ptr(), pGujarati.Size() ); + + TPtrC16 pGujarati2(KGujarati2); + buffer.Append((const unsigned char *)pGujarati2.Ptr(), pGujarati2.Size() ); + + TPtrC16 pGujarati3(KGujarati3); + buffer.Append((const unsigned char *)pGujarati3.Ptr(), pGujarati3.Size() ); + + TPtrC16 pGujarati4(KGujarati4); + buffer.Append((const unsigned char *)pGujarati4.Ptr(), pGujarati4.Size() ); + + TPtrC16 pGujarati5(KGujarati5); + buffer.Append((const unsigned char *)pGujarati5.Ptr(), pGujarati5.Size() ); + + TPtrC16 pGujarati6(KGujarati6); + buffer.Append((const unsigned char *)pGujarati6.Ptr(), pGujarati6.Size() ); + + TPtrC16 pGujarati7(KGujarati7); + buffer.Append((const unsigned char *)pGujarati7.Ptr(), pGujarati7.Size() ); + + TPtrC16 pGujarati8(KGujarati8); + buffer.Append((const unsigned char *)pGujarati8.Ptr(), pGujarati8.Size() ); + + TPtrC16 pGujarati9(KGujarati9); + buffer.Append((const unsigned char *)pGujarati9.Ptr(), pGujarati9.Size() ); + + // write buffer + error = file.Write(buffer); + + buffer.Close(); + + file.Close(); + fs.Close(); + } +/* create a text file which contains the sample Bengali data +this can be used for testing +*/ + +void CHindiContainer::CreateBengaliTxtFile() const + { + RFs fs1; + TInt error = KErrNone; + RFile file1; + // Open or create Bengali.txt + error = fs1.Connect(); + error = file1.Open(fs1, _L("c:\\Bengali.txt"), EFileWrite); + if ( error == KErrNotFound) + { + error = file1.Create(fs1, _L("c:\\Bengali.txt"), EFileWrite); + } + // load buffer with data to write + RBuf8 buffer; + buffer.Create(10000); + TPtrC16 pBengali(KBengali1); + buffer.Append( _L("\xff\xfe")); + buffer.Append((const unsigned char *)pBengali.Ptr(), pBengali.Size()); + + TPtrC16 pBengali2(KBengali2); + buffer.Append((const unsigned char *)pBengali2.Ptr(), pBengali2.Size()); + + TPtrC16 pBengali3(KBengali3); + buffer.Append((const unsigned char *)pBengali3.Ptr(), pBengali3.Size()); + + TPtrC16 pBengali4(KBengali4); + buffer.Append((const unsigned char *)pBengali4.Ptr(), pBengali4.Size()); + + TPtrC16 pBengali5(KBengali5); + buffer.Append((const unsigned char *)pBengali5.Ptr(), pBengali5.Size()); + + TPtrC16 pBengali6(KBengali6); + buffer.Append((const unsigned char *)pBengali6.Ptr(), pBengali6.Size()); + + TPtrC16 pBengali7(KBengali7); + buffer.Append((const unsigned char *)pBengali7.Ptr(), pBengali7.Size()); + + TPtrC16 pBengali8(KBengali8); + buffer.Append((const unsigned char *)pBengali8.Ptr(), pBengali8.Size()); + + TPtrC16 pBengali9(KBengali9); + buffer.Append((const unsigned char *)pBengali9.Ptr(), pBengali9.Size()); + + // write buffer + error = file1.Write(buffer); + buffer.Close(); + file1.Close(); + fs1.Close(); + } + +void CHindiContainer::CreateTamilTxtFile() const +{ +RFs fs; +TInt error = KErrNone; +RFile file; + +// Open or create Tamil.txt +error = fs.Connect(); +error = file.Open(fs, _L("c:\\Tamil.txt"), EFileWrite); +if ( error == KErrNotFound) + { + error = file.Create(fs, _L("c:\\Tamil.txt"), EFileWrite); + } + +// load buffer with data to write +// TBuf8<10000> buffer; +RBuf8 buffer; +buffer.Create(10000); +TPtrC16 pTamil(KTamil1); +buffer.Append( _L("\xff\xfe") ); +buffer.Append((const unsigned char *)pTamil.Ptr(), pTamil.Size() ); + +TPtrC16 pTamil2(KTamil2); +buffer.Append((const unsigned char *)pTamil2.Ptr(), pTamil2.Size() ); + +TPtrC16 pTamil3(KTamil3); +buffer.Append((const unsigned char *)pTamil3.Ptr(), pTamil3.Size() ); + +TPtrC16 pTamil4(KTamil4); +buffer.Append((const unsigned char *)pTamil4.Ptr(), pTamil4.Size() ); + +TPtrC16 pTamil5(KTamil5); +buffer.Append((const unsigned char *)pTamil5.Ptr(), pTamil5.Size() ); + +TPtrC16 pTamil6(KTamil6); +buffer.Append((const unsigned char *)pTamil6.Ptr(), pTamil6.Size() ); + +TPtrC16 pTamil7(KTamil7); +buffer.Append((const unsigned char *)pTamil7.Ptr(), pTamil7.Size() ); + +TPtrC16 pTamil8(KTamil8); +buffer.Append((const unsigned char *)pTamil8.Ptr(), pTamil8.Size() ); + +TPtrC16 pTamil9(KTamil9); +buffer.Append((const unsigned char *)pTamil9.Ptr(), pTamil9.Size() ); + +// write buffer +error = file.Write(buffer); + +buffer.Close(); + +file.Close(); +fs.Close(); +} + +void CHindiContainer::CreateTeluguTxtFile() const +{ +RFs fs; +TInt error = KErrNone; +RFile file; + +// Open or create Telugu.txt +error = fs.Connect(); +error = file.Open(fs, _L("c:\\Telugu.txt"), EFileWrite); +if ( error == KErrNotFound) + { + error = file.Create(fs, _L("c:\\Telugu.txt"), EFileWrite); + } + +// load buffer with data to write +// TBuf8<10000> buffer; +RBuf8 buffer; +buffer.Create(10000); +TPtrC16 pTelugu(KTelugu1); +buffer.Append( _L("\xff\xfe") ); +buffer.Append((const unsigned char *)pTelugu.Ptr(), pTelugu.Size() ); + +TPtrC16 pTelugu2(KTelugu2); +buffer.Append((const unsigned char *)pTelugu2.Ptr(), pTelugu2.Size() ); + +TPtrC16 pTelugu3(KTelugu3); +buffer.Append((const unsigned char *)pTelugu3.Ptr(), pTelugu3.Size() ); + +TPtrC16 pTelugu4(KTelugu4); +buffer.Append((const unsigned char *)pTelugu4.Ptr(), pTelugu4.Size() ); + +TPtrC16 pTelugu5(KTelugu5); +buffer.Append((const unsigned char *)pTelugu5.Ptr(), pTelugu5.Size() ); + +TPtrC16 pTelugu6(KTelugu6); +buffer.Append((const unsigned char *)pTelugu6.Ptr(), pTelugu6.Size() ); + +TPtrC16 pTelugu7(KTelugu7); +buffer.Append((const unsigned char *)pTelugu7.Ptr(), pTelugu7.Size() ); + +TPtrC16 pTelugu8(KTelugu8); +buffer.Append((const unsigned char *)pTelugu8.Ptr(), pTelugu8.Size() ); + +TPtrC16 pTelugu9(KTelugu9); +buffer.Append((const unsigned char *)pTelugu9.Ptr(), pTelugu9.Size() ); + +// write buffer +error = file.Write(buffer); + +buffer.Close(); + +file.Close(); +fs.Close(); +} + +/** +@file +@SYMTestCaseID GRAPHICS-SYSLIB-ICULAYOUTENGINE-CIT-1499 +@SYMTestCaseDesc Test the IcuLayout Engine . +@SYMTestPriority High +@SYMTestActions Test Check that Hindi text is shaped: +@SYMTestExpectedResults The test must not fail. +@SYMPREQ PREQ18 +*/ + +/** +@file +@SYMTestCaseID GRAPHICS-SYSLIB-ICULAYOUTENGINE-CIT-3382 +@SYMTestCaseDesc Test the IcuLayout Engine for Kannada support by extending functionalities of DrawHindiText(CWindowGc& aGc) function. +@SYMTestPriority High +@SYMTestActions Test Check that Kannada text is shaped: +@SYMTestExpectedResults The test must not fail. +@SYMPREQ PREQ19 +*/ +/** +@file +@SYMTestCaseID GRAPHICS-SYSLIB-ICULAYOUTENGINE-CIT-3418 +@SYMTestCaseDesc Test the IcuLayout Engine for Gujarati support by extending functionalities of DrawHindiText(CWindowGc& aGc) function. +@SYMTestPriority High +@SYMTestActions Test Check that gujarati text is shaped: +@SYMTestExpectedResults The test must not fail. +@SYMPREQ PREQ19 +*/ + +/** +@file +@SYMTestCaseID GRAPHICS-SYSLIB-ICULAYOUTENGINE-CIT-4004 +@SYMTestCaseDesc Test the IcuLayout Engine for Bengali support by extending functionalities of DrawHindiText(CWindowGc& aGc) function. +@SYMTestPriority High +@SYMTestActions Test Check that Bengali text is shaped: +@SYMTestExpectedResults The test must not fail. +@SYMPREQ PREQ1766 +*/ + +/** +@file +@SYMTestCaseID GRAPHICS-SYSLIB-ICULAYOUTENGINE-CIT-4005 +@SYMTestCaseDesc Test the IcuLayout Engine for Tamil support by extending functionalities of DrawHindiText(CWindowGc& aGc) function. +@SYMTestPriority High +@SYMTestActions Test Check that Tamil text is shaped: +@SYMTestExpectedResults The test must not fail. +@SYMPREQ PREQ1766 +*/ + + +/** +@file +@SYMTestCaseID GRAPHICS-SYSLIB-ICULAYOUTENGINE-CIT-4006 +@SYMTestCaseDesc Test the IcuLayout Engine for Telugu support by extending functionalities of DrawHindiText(CWindowGc& aGc) function. +@SYMTestPriority High +@SYMTestActions Test Check that Telugu text is shaped: +@SYMTestExpectedResults The test must not fail. +@SYMPREQ PREQ1766 +*/ + +void CHindiContainer::DrawHindiText(CWindowGc& aGc) const + { + + // start with test font + CFont* myFont; + _LIT(KTestFontName,"DejaVu Sans Condensed"); + TFontSpec testFontSpec(KTestFontName,200); + CGraphicsDevice* screenDevice=iCoeEnv->ScreenDevice(); + screenDevice->GetNearestFontInTwips(myFont,testFontSpec); + + // set the required attributes + aGc.UseFont(myFont); + aGc.SetPenColor(KRgbBlack); + aGc.SetBrushColor(KRgbBlue); + aGc.CancelClippingRect(); + + // Set the text drawing position & draw + TPoint pos(10,20); + TBuf<100> textLine; + textLine.Append(_L("The following is ")); + + switch( iSample ) + { + case 1: + textLine.Append(_L("Hindi sample 1 ")); + break; + case 2: + textLine.Append(_L("Hindi sample 2 ")); + break; + case 3: + textLine.Append(_L("Hindi sample 3 ")); + break; + case 4: + textLine.Append(_L(" Hindi Sample 4 ")); + break; + case 5: + textLine.Append(_L("Kannada sample 1 ")); + break; + case 6: + textLine.Append(_L("Kannada sample 2 ")); + break; + case 7: + textLine.Append(_L("Kannada sample 3 ")); + break; + case 8: + textLine.Append(_L("Kannada Sample 4 ")); + break; + case 9: + textLine.Append(_L("Gujarati sample 1 ")); + break; + case 10: + textLine.Append(_L("Gujarati sample 2 ")); + break; + case 11: + textLine.Append(_L("Gujarati sample 3 ")); + break; + case 12: + textLine.Append(_L("Gujarati Sample 4 ")); + break; + case 13: + textLine.Append(_L("Bengali sample 1 ")); + break; + case 14: + textLine.Append(_L("Bengali sample 2 ")); + break; + case 15: + textLine.Append(_L("Bengali sample 3 ")); + break; + case 16: + textLine.Append(_L("Bengali Sample 4 ")); + break; + case 17: + textLine.Append(_L("Tamil sample 1 ")); + break; + case 18: + textLine.Append(_L("Tamil sample 2 ")); + break; + case 19: + textLine.Append(_L("Tamil sample 3 ")); + break; + case 20: + textLine.Append(_L("Tamil Sample 4 ")); + break; + case 21: + textLine.Append(_L("Telugu sample 1 ")); + break; + case 22: + textLine.Append(_L("Telugu sample 2 ")); + break; + case 23: + textLine.Append(_L("Telugu sample 3 ")); + break; + case 24: + textLine.Append(_L("Telugu Sample 4 ")); + break; + default: + textLine.Append(_L("what? ")); + break; + } + + textLine.Append(_L("using font ")); + textLine.Append(iFontSpec.iTypeface.iName); + aGc.DrawText(textLine,pos); + + TPoint pos2(10,35); + TBuf<100> textLine2; + textLine2.Format(_L("Size:%dpt Blue is shaped, Black is not"),iFontSize/20); + aGc.DrawText(textLine2, pos2); + + // Discard and destroy the test font + aGc.DiscardFont(); + screenDevice->ReleaseFont(myFont); + + // set the selected font + screenDevice->GetNearestFontInTwips(myFont,iFontSpec); + + // set the required attributes + aGc.UseFont(myFont); + aGc.SetPenColor(KRgbBlack); + aGc.SetBrushColor(KRgbBlue); + aGc.CancelClippingRect(); + + // some rectangles to fit the text in + TRect textRect(10,-30,600, 600); + TRect textRect2(10,-5,600, 600); + TRect textRect3(10, 25, 600, 600); + TRect textRect4(10, 50, 600, 600); + TRect textRect5(10, 80, 600, 600); + TRect textRect6(10, 105, 600, 600); + + TBuf<200> textWithoutShaping; + + // Draw some Hindi in a rectangle + switch (iSample) + { + + //Hindi Sample 1 + case 1: + + // First draw in Black with shaping disabled + DisableShaping(&KHindi1, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + // Now in Blue with shaping + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + aGc.SetPenColor(KRgbBlack); + DisableShaping(&KHindi2, textWithoutShaping ); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KHindi3, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Hindi Sample 2 + case 2: + DisableShaping(&KHindi4, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi4, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KHindi5, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi5, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KHindi6, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi6, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Hindi Sample 3 + case 3: + DisableShaping(&KHindi7, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi7, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KHindi8, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi8, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KHindi9, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KHindi9, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Hindi Sample 4 + case 4: + // test + DisableShaping(&KTest1, textWithoutShaping ); + aGc.DrawText(KTest1, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTest1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTest2, textRect3, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTest2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTest3, textRect5, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTest3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + //Kannada Sample 1 + case 5: + // First draw in Black with shaping disabled + DisableShaping(&KKannada1, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + // Now in Blue with shaping + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + aGc.SetPenColor(KRgbBlack); + DisableShaping(&KKannada2, textWithoutShaping ); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KKannada3, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Kannada Sample 2 + + case 6: + DisableShaping(&KKannada4, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada4, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KKannada5, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada5, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KKannada6, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada6, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + //Kannada Sample 3 + + case 7: + DisableShaping(&KKannada7, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada7, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KKannada8, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada8, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KKannada9, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KKannada9, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Kannada Sample 4 + case 8: + + DisableShaping(&KTestKannada1, textWithoutShaping ); + aGc.DrawText(KTestKannada1, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestKannada1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestKannada2, textRect3, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestKannada2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestKannada3, textRect5, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestKannada3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + + break; + // break; + + //Gujarati Sample 1 + case 9: + // First draw in Black with shaping disabled + DisableShaping(&KGujarati1, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + // Now in Blue with shaping + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + aGc.SetPenColor(KRgbBlack); + DisableShaping(&KGujarati2, textWithoutShaping ); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KGujarati3, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Gujarati Sample 2 + + case 10: + DisableShaping(&KGujarati4, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati4, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KGujarati5, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati5, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KGujarati6, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati6, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + //Gujarati Sample 3 + + case 11: + DisableShaping(&KGujarati7, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati7, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KGujarati8, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati8, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KGujarati9, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KGujarati9, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Gujarati Sample 4 + case 12: + + DisableShaping(&KTestGujarati1, textWithoutShaping ); + aGc.DrawText(KTestGujarati1, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestGujarati1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestGujarati2, textRect3, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestGujarati2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestGujarati3, textRect5, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestGujarati3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + + break; + //Bengali Sample 1 + case 13: + // First draw in Black with shaping disabled + DisableShaping(&KBengali1, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + // Now in Blue with shaping + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + aGc.SetPenColor(KRgbBlack); + DisableShaping(&KBengali2, textWithoutShaping ); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KBengali3, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Bengali Sample 2 + + case 14: + DisableShaping(&KBengali4, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali4, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KBengali5, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali5, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KBengali6, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali6, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + //Bengali Sample 3 + + case 15: + DisableShaping(&KBengali7, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali7, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KBengali8, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali8, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KBengali9, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KBengali9, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + //Bengali Sample 4 + case 16: + + DisableShaping(&KTestBengali1, textWithoutShaping ); + aGc.DrawText(KTestBengali1, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestBengali1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestBengali2, textRect3, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestBengali2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestBengali3, textRect5, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestBengali3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + + break; + + case 17: + //Tamil Sample 1 + // First draw in Black with shaping disabled + DisableShaping(&KTamil1, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + // Now in Blue with shaping + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + aGc.SetPenColor(KRgbBlack); + DisableShaping(&KTamil2, textWithoutShaping ); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTamil3, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + case 18: + //Tamil Sample 2 + // First draw in Black with shaping disabled + DisableShaping(&KTamil4, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil4, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTamil5, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil5, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTamil6, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil6, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + case 19: + //Tamil Sample 3 + // First draw in Black with shaping disabled + DisableShaping(&KTamil7, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil7, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTamil8, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil8, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTamil9, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTamil9, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + case 20: + //Tamil Sample 4 + // First draw in Black with shaping disabled + DisableShaping(&KTestTamil1, textWithoutShaping ); + aGc.DrawText(KTestBengali1, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestTamil1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestTamil2, textRect3, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestTamil2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestTamil3, textRect5, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestTamil3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + + break; + + case 21: + //Telugu Sample 1 + // First draw in Black with shaping disabled + DisableShaping(&KTelugu1, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + // Now in Blue with shaping + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + aGc.SetPenColor(KRgbBlack); + DisableShaping(&KTelugu2, textWithoutShaping ); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTelugu3, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + case 22: + //Telugu Sample 2 + // First draw in Black with shaping disabled + DisableShaping(&KTelugu4, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu4, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTelugu5, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu5, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTelugu6, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu6, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + case 23: + //Telugu Sample 3 + // First draw in Black with shaping disabled + DisableShaping(&KTelugu7, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu7, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTelugu8, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect3, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu8, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + DisableShaping(&KTelugu9, textWithoutShaping ); + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(textWithoutShaping, textRect5, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTelugu9, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + + case 24: + //Telugu Sample 4 + // First draw in Black with shaping disabled + DisableShaping(&KTestTelugu1, textWithoutShaping ); + aGc.DrawText(KTestTelugu1, textRect, 100, CGraphicsContext::ELeft); + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestTelugu1, textRect2, 100, CGraphicsContext::ELeft); + + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestTelugu2, textRect3, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestTelugu2, textRect4, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + // Without the Layout Engine + + aGc.SetPenColor(KRgbBlack); + aGc.DrawText(KTestTelugu3, textRect5, 100, CGraphicsContext::ELeft); + // With the Layout Engine + + aGc.SetPenColor(KRgbBlue); + aGc.DrawText(KTestTelugu3, textRect6, 100, CGraphicsContext::ELeft); + //-------------------------------------------------------------------------- + break; + default: + break; + } + // Discard and destroy the font + aGc.DiscardFont(); + screenDevice->ReleaseFont(myFont); + } + +// CHindiAppUi + +CHindiAppUi::~CHindiAppUi() + { + RemoveFromStack(iAppView); + delete iAppView; + } + +void CHindiAppUi::ConstructL() + { + BaseConstructL(); + iAppView=new(ELeave) CHindiContainer; + iAppView->ConstructL(ClientRect()); + AddToStackL(iAppView); + } + +void CHindiAppUi::HandleCommandL(TInt aCommand) + { + TCharFormat charFormat; + TCharFormatMask charMask; + + switch (aCommand) + { + case EEikCmdExit: + Exit(); + break; + + case EEikCmdFont: + if ( CEikFontDialog::RunDlgLD(charFormat, charMask, EGulNoSymbolFonts, iCoeEnv->ScreenDevice()) ) + { + // save the selected font in the view + iAppView->SetHindiFont( charFormat.iFontSpec ); + iAppView->DrawNow(); + } + break; + + case EEikCmdSample1: + iAppView->ChangeSample(1); + iAppView->DrawNow(); + break; + case EEikCmdSample2: + iAppView->ChangeSample(2); + iAppView->DrawNow(); + break; + case EEikCmdSample3: + iAppView->ChangeSample(3); + iAppView->DrawNow(); + break; + case EEikCmdSample4: + iAppView->ChangeSample(4); + iAppView->DrawNow(); + break; + case EEikCmdSample5: + iAppView->ChangeSample(5); + iAppView->DrawNow(); + break; + case EEikCmdSample6: + iAppView->ChangeSample(6); + iAppView->DrawNow(); + break; + case EEikCmdSample7: + iAppView->ChangeSample(7); + iAppView->DrawNow(); + break; + case EEikCmdSample8: + iAppView->ChangeSample(8); + iAppView->DrawNow(); + break; + case EEikCmdSample9: + iAppView->ChangeSample(9); + iAppView->DrawNow(); + break; + case EEikCmdSample10: + iAppView->ChangeSample(10); + iAppView->DrawNow(); + break; + case EEikCmdSample11: + iAppView->ChangeSample(11); + iAppView->DrawNow(); + break; + case EEikCmdSample12: + iAppView->ChangeSample(12); + iAppView->DrawNow(); + case EEikCmdSample13: + iAppView->ChangeSample(13); + iAppView->DrawNow(); + break; + case EEikCmdSample14: + iAppView->ChangeSample(14); + iAppView->DrawNow(); + break; + case EEikCmdSample15: + iAppView->ChangeSample(15); + iAppView->DrawNow(); + break; + case EEikCmdSample16: + iAppView->ChangeSample(16); + iAppView->DrawNow(); + break; + case EEikCmdSample17: + iAppView->ChangeSample(17); + iAppView->DrawNow(); + break; + case EEikCmdSample18: + iAppView->ChangeSample(18); + iAppView->DrawNow(); + break; + case EEikCmdSample19: + iAppView->ChangeSample(19); + iAppView->DrawNow(); + break; + case EEikCmdSample20: + iAppView->ChangeSample(20); + iAppView->DrawNow(); + break; + case EEikCmdSample21: + iAppView->ChangeSample(21); + iAppView->DrawNow(); + break; + case EEikCmdSample22: + iAppView->ChangeSample(22); + iAppView->DrawNow(); + break; + case EEikCmdSample23: + iAppView->ChangeSample(23); + iAppView->DrawNow(); + break; + case EEikCmdSample24: + iAppView->ChangeSample(24); + iAppView->DrawNow(); + break; + case EEikCmdMakeHindiTxt: + iAppView->CreateHindiTxtFile(); + break; + case EEikCmdMakeKannadaTxt: + iAppView->CreateKannadaTxtFile(); + break; + case EEikCmdMakeGujaratiTxt: + iAppView->CreateGujaratiTxtFile(); + break; + case EEikCmdMakeBengaliTxt: + iAppView->CreateBengaliTxtFile(); + break; + case EEikCmdMakeTamilTxt: + iAppView->CreateTamilTxtFile(); + break; + case EEikCmdMakeTeluguTxt: + iAppView->CreateTeluguTxtFile(); + break; + default: + Panic(0); + break; + } + } + +TKeyResponse CHindiAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /* aType */) + { + switch (aKeyEvent.iCode) + { + case EKeyUpArrow: + // increase font size + iAppView->SetFontSize(iAppView->GetFontSize() +20); + break; + case EKeyDownArrow: + // increase font size + iAppView->SetFontSize(iAppView->GetFontSize() -20); + break; + case EKeyLeftArrow: + // next sample + iAppView->ChangeSample(iAppView->GetSample()-1); + break; + case EKeyRightArrow: + // increase font size + iAppView->ChangeSample(iAppView->GetSample()+1); + break; + default: + return EKeyWasNotConsumed; + } + iAppView->DrawNow(); + return EKeyWasConsumed; + } + +// CHindiEikDocument + +CEikAppUi* CHindiEikDocument::CreateAppUiL() + { + return(new(ELeave) CHindiAppUi); + } + +void CHindiEikDocument::ConstructL() + { + } + + +// CHindiApplication + +TUid CHindiApplication::AppDllUid() const + { + return KUidHindiDemoApp; + } + +CApaDocument* CHindiApplication::CreateDocumentL() + { + CHindiEikDocument* document=new(ELeave) CHindiEikDocument(*this); + CleanupStack::PushL(document); + document->ConstructL(); + CleanupStack::Pop(); + return(document); + } + +// +// EXPORTed functions +// + +// for MCL build +#ifdef __SECURE_DATA__ + +static CApaApplication* NewApplication() + { + return new CHindiApplication; + } + +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication(&NewApplication); + } + +#else + +// for 8.1 build +EXPORT_C CApaApplication* NewApplication() + { + return new CHindiApplication; + } + +GLDEF_C TInt E32Dll(TDllReason) + { + return KErrNone; + } + +#endif