graphicsdeviceinterface/bitgdi/tbit/TPARAM.CPP
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/bitgdi/tbit/TPARAM.CPP	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,296 @@
+// Copyright (c) 1997-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:
+//
+
+#include <bitdev.h>
+#include <hal.h>
+#include "TBMP.H"
+#include "tparam.h"
+#include <graphics/fbsdefs.h>
+
+
+CTParam::CTParam(CTestStep* aStep):
+	CTGraphicsBase(aStep), 
+	iDevice(NULL),
+	iContext(NULL)
+	{
+	INFO_PRINTF1(_L("Large parameter testing"));
+	}
+
+void CTParam::RunTestCaseL(TInt aCurTestCase)
+	{
+	((CTParamStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
+	switch(aCurTestCase)
+		{
+	case 1:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EGray256"));
+		DoTestL(EGray256);
+		break;
+		}
+	case 2:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor256"));
+		DoTestL(EColor256);
+		break;
+		}
+	case 3:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor4K"));
+		DoTestL(EColor4K);
+		break;
+		}
+	case 4:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor64K"));
+		DoTestL(EColor64K);
+		break;
+		}
+	case 5:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor16M"));
+		DoTestL(EColor16M);
+		break;
+		}
+	case 6:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor16MU"));
+		DoTestL(EColor16MU);
+		break;
+		}
+	case 7:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor16MA"));
+		DoTestL(EColor16MA);
+		break;
+		}
+	case 8:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0084"));
+		INFO_PRINTF1(_L("Test display mode EColor16MAP"));
+		DoTestL(EColor16MAP);
+		break;
+		}
+	case 9:
+		{
+		((CTParamStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
+		((CTParamStep*)iStep)->CloseTMSGraphicsStep();
+		TestComplete();
+		break;
+		}
+		}
+	((CTParamStep*)iStep)->RecordTestResultL();
+	}
+
+/**
+  @SYMTestCaseID GRAPHICS-BITGDI-0084
+ 
+  @SYMDEF             
+
+  @SYMTestCaseDesc tests the display modes
+   
+  @SYMTestPriority High
+
+  @SYMTestStatus Implemented
+
+  @SYMTestActions tests various graphic drawing and text drawing functions to all current screen modes
+ 
+  @SYMTestExpectedResults Test should perform graphics operations succesfully. 
+*/
+void CTParam::DoTestL(TDisplayMode aDispMode)
+    {
+	TRAPD(err,iDevice = CFbsScreenDevice::NewL(_L("scdv"),aDispMode));
+	if (err == KErrNotSupported)
+		return;
+	iDevice->ChangeScreenDevice(NULL);
+	iDevice->SetAutoUpdate(ETrue);
+	User::LeaveIfError(iDevice->CreateContext(iContext));
+
+	iDevice->SetScalingFactor(TPoint(15, 7), 3, 2, 1, 1);
+	iContext->Activate(iDevice);
+
+	CFbsFont* font = NULL;
+	User::LeaveIfError(iDevice->GetNearestFontToDesignHeightInTwips(font,TFontSpec()));
+	iContext->UseFont(font);
+	iDevice->ReleaseFont(font);
+
+	TInt ret = iBitmap.Load(_L("z:\\system\\data\\tbmp.mbm"),EMbmTbmpTbmp,EFalse); 
+	User::LeaveIfError(ret);
+
+	DoAnotherTestL();
+
+	iBitmap.Reset();
+	delete iContext;
+	delete iDevice;
+	}
+
+void CTParam::DoAnotherTestL()
+	{
+	INFO_PRINTF1(_L("Parameters : check large parameters do not take too long"));
+	TRect vlarge(-1000000000,-1000000000,1000000000,1000000000);
+	TRect screen;
+	iDevice->GetDrawRect(screen);
+	 
+	INFO_PRINTF1(_L("Origin"));
+	iContext->SetOrigin(vlarge.iTl);
+	iContext->DrawRect(screen);
+	iContext->SetOrigin();
+	iContext->Clear(screen);
+	iContext->SetOrigin(vlarge.iBr);
+	iContext->DrawRect(screen);
+	iContext->SetOrigin();
+	iContext->Clear(screen);
+	 
+	iContext->SetBrushStyle(CGraphicsContext::EDiamondCrossHatchBrush);
+	iContext->SetBrushColor(KRgbBlack);
+	INFO_PRINTF1(_L("BrushOrigin"));
+	iContext->SetBrushOrigin(vlarge.iTl);
+	iContext->DrawRect(screen);
+	iContext->SetBrushOrigin(TPoint(0,0));
+	iContext->SetBrushColor(KRgbWhite);
+	iContext->Clear(screen);
+	iContext->SetBrushOrigin(vlarge.iBr);
+	iContext->SetBrushColor(KRgbBlack);
+	iContext->DrawRect(screen);
+	iContext->SetBrushOrigin(TPoint(0,0));
+	iContext->SetBrushColor(KRgbWhite);
+	iContext->Clear(screen);
+	 
+	iContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+	INFO_PRINTF1(_L("Plot"));
+	iContext->Plot(vlarge.iBr);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("DrawLine - Solid pen"));
+	TInt count=1;
+	for(;count<10000;count*=10)
+		{
+		iContext->SetPenSize(TSize(count,count));
+		INFO_PRINTF1(_L("Very large line 1"));
+		iContext->DrawLine(vlarge.iBr,vlarge.iTl);
+		INFO_PRINTF1(_L("Very large line 2"));
+		iContext->DrawLine(TPoint(-1000000000,screen.iTl.iY),TPoint(1000000000,1000000000));
+		INFO_PRINTF1(_L("Very large line 3"));
+		iContext->DrawLine(TPoint(screen.iTl.iX,-1000000000),TPoint(1000000000,1000000000));
+		INFO_PRINTF1(_L("Very large line 4"));
+		iContext->DrawLine(TPoint(-1000000000,-1000000000),screen.iTl);
+		INFO_PRINTF1(_L("Very large line 5"));
+		iContext->DrawLine(screen.iBr,TPoint(1000000000,1000000000));
+		iContext->Clear(screen);
+		}
+	 
+	iContext->SetPenStyle(CGraphicsContext::EDottedPen);
+	INFO_PRINTF1(_L("Line - Dotted pen"));
+	for(count=1;count<10000;count*=10)
+		{
+		iContext->SetPenSize(TSize(count,count));
+		INFO_PRINTF1(_L("Very large line 1"));
+		iContext->DrawLine(vlarge.iBr,vlarge.iTl);
+		INFO_PRINTF1(_L("Very large line 2"));
+		iContext->DrawLine(TPoint(-1000000000,screen.iTl.iY),TPoint(1000000000,1000000000));
+		INFO_PRINTF1(_L("Very large line 3"));
+		iContext->DrawLine(TPoint(screen.iTl.iX,-1000000000),TPoint(1000000000,1000000000));
+		INFO_PRINTF1(_L("Very large line 4"));
+		iContext->DrawLine(TPoint(-1000000000,-1000000000),screen.iTl);
+		INFO_PRINTF1(_L("Very large line 5"));
+		iContext->DrawLine(screen.iBr,TPoint(1000000000,1000000000));
+		iContext->Clear(screen);
+		}
+	 
+	iContext->SetPenStyle(CGraphicsContext::ESolidPen);
+	iContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+	iContext->SetBrushColor(KRgbBlack);
+	iContext->SetPenSize(TSize(1,1));
+	INFO_PRINTF1(_L("Arc"));
+	iContext->DrawArc(vlarge,vlarge.iBr,vlarge.iBr);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("Ellipse"));
+	iContext->DrawEllipse(vlarge);
+	iContext->Clear(screen);
+ 
+	INFO_PRINTF1(_L("Pie"));
+	iContext->DrawPie(vlarge,vlarge.iBr,vlarge.iBr);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("RoundRect"));
+	iContext->DrawRoundRect(vlarge,TSize(100000000,100000000));
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("Rect"));
+	iContext->DrawRect(vlarge);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("CopyRect"));
+	iContext->CopyRect(TPoint(100000000,100000000),vlarge);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("BitBlt"));
+	iContext->BitBlt(TPoint(0,0),*iContext,vlarge);
+	iContext->Clear(screen);
+	iContext->BitBlt(TPoint(0,0),&iBitmap,vlarge);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("BitBltMasked"));
+	iContext->BitBltMasked(TPoint(0,0),&iBitmap,vlarge,&iBitmap,EFalse);
+	iContext->Clear(screen);
+	 
+	iContext->SetBrushColor(KRgbBlack);
+	iContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+	INFO_PRINTF1(_L("Polygon"));
+	CArrayFixFlat<TPoint>* poly=new CArrayFixFlat<TPoint>(4);
+	poly->AppendL(vlarge.iTl);
+	TPoint temp(vlarge.iBr.iX,vlarge.iTl.iY);
+	poly->AppendL(temp);
+	poly->AppendL(vlarge.iBr);
+	temp.SetXY(vlarge.iTl.iX,vlarge.iBr.iY);
+	poly->AppendL(temp);
+	iContext->DrawPolygon(poly);
+	iContext->Clear(screen);
+	delete poly;
+	 
+	INFO_PRINTF1(_L("DrawBitmap"));
+	iContext->DrawBitmap(vlarge,&iBitmap);
+	iContext->Clear(screen);
+	 
+	INFO_PRINTF1(_L("Text"));
+	TBuf<16> text(_L("Test text."));
+	iContext->DrawText(text,vlarge.iTl);
+	iContext->DrawText(_L("Test text."),vlarge.iBr);
+	iContext->SetCharJustification(100000000,1);
+	iContext->SetWordJustification(100000000,1);
+	iContext->DrawText(_L("Test text."),TPoint(0,0));
+	iContext->Clear(screen);
+	}
+
+//--------------
+__CONSTRUCT_STEP__(Param)
+
+void CTParamStep::TestSetupL()
+	{
+	FbsStartup();
+	User::LeaveIfError(RFbsSession::Connect());
+	}
+	
+void CTParamStep::TestClose()
+	{
+	RFbsSession::Disconnect();
+	}