kerneltest/e32test/window/t_calib.cpp
changeset 43 96e5fb8b040d
equal deleted inserted replaced
-1:000000000000 43:96e5fb8b040d
       
     1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // e32test\window\t_calib.cpp
       
    15 // 
       
    16 //
       
    17 
       
    18 #include <e32test.h>
       
    19 #include <e32twin.h>
       
    20 #include <e32hal.h>
       
    21 #include <e32svr.h>
       
    22 
       
    23 RConsole w;
       
    24 
       
    25 enum TFault
       
    26 	{
       
    27 	EConnect,
       
    28 	EConsole
       
    29 	};
       
    30 
       
    31 LOCAL_C void printf(TRefByValue<const TDesC> aFmt,...)
       
    32 //
       
    33 // Print to the console
       
    34 //
       
    35 	{
       
    36 
       
    37 	VA_LIST list;
       
    38 	VA_START(list,aFmt);
       
    39 	TBuf<0x100> aBuf;
       
    40 	aBuf.AppendFormatList(aFmt,list);
       
    41 	TInt r=w.Write(aBuf);
       
    42 	__ASSERT_ALWAYS(r==KErrNone,User::Panic(_L("Write-Console"),0));
       
    43 	}
       
    44 
       
    45 LOCAL_C void Fault(TFault aFault)
       
    46 //
       
    47 // Panic the program.
       
    48 //
       
    49 	{
       
    50 
       
    51 	User::Panic(_L("T_CALIB fault"),aFault);
       
    52 	}
       
    53 
       
    54 GLDEF_C void DrawBlob(TPoint aPos)
       
    55     {
       
    56     TPoint pos(aPos.iX/8-1,aPos.iY/10-1);
       
    57     w.SetCursorPosAbs(TPoint(0,0));
       
    58 	TBuf<0x100> aBuf;
       
    59 	aBuf.AppendFormat(_L("(%d,%d)    "),aPos.iX,aPos.iY);
       
    60     w.Write(aBuf);
       
    61     if (pos.iX!=0)
       
    62         {
       
    63         w.SetCursorPosAbs(pos);
       
    64         w.Write(_L("*"));
       
    65         }
       
    66     }
       
    67 
       
    68 GLDEF_C void TestBlob()
       
    69 //
       
    70 // Draw blob when digitizer pressed
       
    71 //
       
    72     {
       
    73 
       
    74     FOREVER
       
    75         {
       
    76         TConsoleKey k;
       
    77         w.Read(k);
       
    78         if((TInt)k.Code()==27 && k.Type()==EKeyPress)
       
    79             break;
       
    80         if(k.Type()==EMouseClick)
       
    81             DrawBlob(k.MousePos());
       
    82         };
       
    83     w.ClearScreen();
       
    84     }
       
    85 
       
    86 GLDEF_C TInt E32Main()
       
    87 //
       
    88 // Calibrate digitizer
       
    89 //
       
    90     {
       
    91 
       
    92 	TInt r=w.Create();
       
    93 	__ASSERT_ALWAYS(r==KErrNone,Fault(EConsole));
       
    94 	r=w.Init(_L("T_CALIB window"),TSize(KConsFullScreen,KConsFullScreen));
       
    95 	__ASSERT_ALWAYS(r==KErrNone,Fault(EConsole));
       
    96 	r=w.Control(_L("+Maximised"));
       
    97 	__ASSERT_ALWAYS(r==KErrNone,Fault(EConsole));
       
    98 	r=w.Control(_L("+Inform"));
       
    99 	__ASSERT_ALWAYS(r==KErrNone,Fault(EConsole));
       
   100 	r=w.Control(_L("+Pointer"));
       
   101 	__ASSERT_ALWAYS(r==KErrNone,Fault(EConsole));
       
   102     TConsoleKey k;
       
   103 
       
   104     TestBlob();
       
   105 
       
   106     printf(_L("Please touch the three points, in the order TL, BL, BR\r\n"));
       
   107 
       
   108     TDigitizerCalibration cal;
       
   109     UserHal::CalibrationPoints(cal);
       
   110 
       
   111     printf(_L("Points are at: (%d,%d), (%d,%d), (%d,%d)\r\n")
       
   112                                                 ,cal.iTl.iX,cal.iTl.iY
       
   113                                                 ,cal.iBl.iX,cal.iBl.iY
       
   114                                                 ,cal.iBr.iX,cal.iBr.iY);
       
   115 
       
   116     DrawBlob(cal.iTl);
       
   117     DrawBlob(cal.iBl);
       
   118     DrawBlob(cal.iBr);
       
   119 
       
   120     // Set digitiser to 'bypass' calibration
       
   121 
       
   122 //    UserHal::SetXYInputCalibration(cal);
       
   123 
       
   124     TPoint pos(0,6);
       
   125 
       
   126     w.SetCursorPosAbs(pos);
       
   127 
       
   128     TInt count=0;
       
   129     do
       
   130         {
       
   131         w.Read(k);
       
   132         if(k.Type()==EMouseClick)
       
   133             {
       
   134             TPoint mouse=k.MousePos();
       
   135             printf(_L("You touched point %d,%d\r\n"),mouse.iX,mouse.iY);
       
   136             switch(count++)
       
   137                 {
       
   138                 case 0:
       
   139                     cal.iTl=mouse;
       
   140                     break;
       
   141                 case 1:
       
   142                     cal.iBl=mouse;
       
   143                     break;
       
   144                 case 2:
       
   145                     cal.iBr=mouse;
       
   146                 }
       
   147             }
       
   148         } while(count!=3);
       
   149 
       
   150     UserHal::SetXYInputCalibration(cal);
       
   151 
       
   152     printf(_L("Digitizer calibrated! Click away!\r\n"));
       
   153 
       
   154 	// Test to validate when invalid calibration input values are supplied.
       
   155 	
       
   156    	cal.iTl.iX = 10;
       
   157    	cal.iTl.iY = 20;
       
   158    	
       
   159    	cal.iBl.iX = 10;
       
   160    	cal.iBl.iY = 20;
       
   161    	
       
   162    	cal.iBr.iX = 10;
       
   163    	cal.iBr.iY = 20;
       
   164    	
       
   165    	r = UserHal::SetXYInputCalibration(cal);
       
   166    	
       
   167    	if (r != KErrArgument)
       
   168 		// Test failure panic.
       
   169    		User::Panic(_L("T_CALIB Test Failure"),84);
       
   170 
       
   171 
       
   172     TestBlob();
       
   173 
       
   174     w.Read(k);
       
   175 	return(0);
       
   176     }
       
   177