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