// 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();
}