diff -r e8c1ea2c6496 -r 8758140453c0 graphics/bitgdi/src/T_DataPolygonFiller.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphics/bitgdi/src/T_DataPolygonFiller.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,316 @@ +// +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "T_DataPolygonFiller.h" +#include "T_GraphicsUtil.h" + +_LIT(KDataClassname, "CPolygonFiller"); + +/// Fields +_LIT(KFldScanLine, "scanline"); +_LIT(KFldPointList, "pointlist"); +_LIT(KFldFillRule, "fillrule"); +_LIT(KFldUsage, "usage"); +_LIT(KFldnumPoints, "numpoints"); +_LIT(KFldExpectedScanLine, "expectedscanline"); +_LIT(KFldExpectedStart, "expectedstart"); +_LIT(KFldExpectedEnd, "expectedend"); +_LIT(KFldExpectedExists, "expectedexists"); +/// Commands +_LIT(KCmdnewL, "new"); +_LIT(KCmdConstructL, "Construct"); +_LIT(KCmdDestructorGeneral, "~"); +_LIT(KCmdDestructor, "~CPolygonFiller"); +_LIT(KCmdReset, "Reset"); +_LIT(KCmdGetNextPixelRun, "GetNextPixelRun"); +_LIT(KCmdGetNextPixelRunOnSpecifiedScanLine, "GetNextPixelRunOnSpecifiedScanLine"); + +//Log +_LIT(KLogErrNum, "Error=%d"); +_LIT(KLogInfoCmdnewL, "execute new CPolygonFiller()"); +_LIT(KLogMissingParameter, "Missing parameter '%S'"); +_LIT(KLogInfoCmdDestructor1, "execute ~CPolygonFiller()"); +_LIT(KLogInfoCmdConstruct1, "execute Construct(TPoint*, TInt, TFillRule,TUsage)"); +_LIT(KLogInfoCmdConstruct2, "execute Construct(CArrayFix*, TFillRule,TUsage)"); +_LIT(KLogInfoCmdReset, "execute Reset()"); +_LIT(KLogInfoCmdGetNextPixelRun, "execute GetNextPixelRun()"); +_LIT(KLogInfoCmdGetNextPixelRunOnSpecifiedScanLine, "execute GetNextPixelRunOnSpecifiedScanLine()"); +_LIT(KLogInfoNotCheckThePosition, "Won't check the position on the scan line in the test case"); +CT_DataPolygonFiller* CT_DataPolygonFiller::NewL() + { + CT_DataPolygonFiller* ret = new (ELeave) CT_DataPolygonFiller(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +CT_DataPolygonFiller::CT_DataPolygonFiller() +: iPolygonFiller(NULL) + { + } + +void CT_DataPolygonFiller::ConstructL() + { + iPointsArray=NULL; + iPoints=NULL; + } + +CT_DataPolygonFiller::~CT_DataPolygonFiller() + { + DestroyData(); + + delete iPointsArray; + iPointsArray=NULL; + + delete[] iPoints; + iPoints=NULL; + } + +TAny* CT_DataPolygonFiller::GetObject() + { + return iPolygonFiller; + } + +void CT_DataPolygonFiller::SetObjectL(TAny* aAny) + { + DestroyData(); + iPolygonFiller = static_cast (aAny); + } + +void CT_DataPolygonFiller::DisownObjectL() + { + iPolygonFiller = NULL; + } + +void CT_DataPolygonFiller::DestroyData() + { + DoCmdDestructor(); + } + + +/** +* Process a command read from the ini file +* +* @param aCommand the command to process +* @param aSection the entry in the ini file requiring the command to be processed +* @return ETrue if the command is processed +*/ +TBool CT_DataPolygonFiller::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt) + { + TBool ret = ETrue; + + if ( aCommand==KCmdDestructorGeneral || aCommand==KCmdDestructor ) + { + DoCmdDestructor(); + } + else if ( aCommand==KCmdnewL || aCommand==KDataClassname ) + { + DoCmdnewL(); + } + else if(aCommand==KCmdConstructL) + { + DoCmdConstructL(aSection); + } + else if ( aCommand==KCmdReset ) + { + DoCmdReset(); + } + else if ( aCommand==KCmdGetNextPixelRun ) + { + DoCmdGetNextPixelRun(aSection); + } + else if ( aCommand==KCmdGetNextPixelRunOnSpecifiedScanLine ) + { + DoCmdGetNextPixelRunOnSpecifiedScanLine(aSection); + } + else + { + ret=EFalse; + } + return ret; + } + +void CT_DataPolygonFiller::DoCmdnewL() + { + DestroyData(); + TInt err = KErrNone; + INFO_PRINTF1(KLogInfoCmdnewL); + TRAP(err, iPolygonFiller = new (ELeave) CPolygonFiller()); + if ( err!=KErrNone ) + { + ERR_PRINTF2(KLogErrNum, err); + SetError(err); + } + } + +void CT_DataPolygonFiller::DoCmdConstructL(const TDesC& aSection) + { + TBool dataOk=ETrue; + TInt datNumPoints=0; + TInt err=0; + CGraphicsContext::TFillRule datFillRule=CGraphicsContext::EAlternate; + CPolygonFiller::TUsage datUsage=CPolygonFiller::EGetAllPixelRunsSequentially; + + CT_GraphicsUtil::ReadFillRule(*this, aSection, KFldFillRule, datFillRule); + CT_GraphicsUtil::ReadTUsage(*this,aSection,KFldUsage,datUsage); + +//Use TPoint parameter to construct if the number of points in the list is assigned. + if (GetIntFromConfig(aSection, KFldnumPoints, datNumPoints)) + { + iPoints=new (ELeave) TPoint[datNumPoints]; + if ( !GetPointListFromConfig(aSection, KFldPointList, datNumPoints, iPoints)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldPointList()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(KLogInfoCmdConstruct1); + iPolygonFiller->Construct(iPoints, datNumPoints, datFillRule, datUsage); + } + } + else + { + iPointsArray=new (ELeave) CArrayFixFlat(1); + TBool hasPointList=GetPointListFromConfigL(aSection, KFldPointList, *iPointsArray); + + if ( !hasPointList ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldPointList()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(KLogInfoCmdConstruct2); + iPolygonFiller->Construct(iPointsArray,datFillRule,datUsage); + } + } + } + +void CT_DataPolygonFiller::DoCmdDestructor() + { + INFO_PRINTF1(KLogInfoCmdDestructor1); + delete iPolygonFiller; + iPolygonFiller = NULL; + } + +void CT_DataPolygonFiller::DoCmdReset() + { + INFO_PRINTF1(KLogInfoCmdReset); + iPolygonFiller->Reset(); + } + +void CT_DataPolygonFiller::DoCmdGetNextPixelRun(const TDesC& aSection) + { + TBool relExists,expectedExists; + TInt relScanLine,relStart,relEnd,expectedScanLine,expectedStart,expectedEnd; + INFO_PRINTF1(KLogInfoCmdGetNextPixelRun); + iPolygonFiller->GetNextPixelRun(relExists,relScanLine,relStart,relEnd); + //Verify the scanline is expected + if(!GetBoolFromConfig(aSection,KFldExpectedExists,expectedExists)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldExpectedExists); + SetBlockResult(EFail); + } + else if(relExists!=expectedExists) + { + ERR_PRINTF3(_L("The returned Exists value is not as expected, expected: %d, result: %d"), expectedExists , relExists); + SetBlockResult(EFail); + } + if(!GetIntFromConfig(aSection,KFldExpectedScanLine,expectedScanLine)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldExpectedScanLine); + SetBlockResult(EFail); + } + else if(relScanLine!=expectedScanLine) + { + ERR_PRINTF3(_L("The returned Scanline value is not as expected, expected: %d, result: %d"), expectedScanLine , relScanLine); + SetBlockResult(EFail); + } + //Verify the start position on the scan line + if(!GetIntFromConfig(aSection,KFldExpectedStart,expectedStart)) + { + INFO_PRINTF1(KLogInfoNotCheckThePosition); + + } + else if(relStart!=expectedStart) + { + ERR_PRINTF3(_L("The returned Start Position value is not as expected, expected: %d, result: %d"), expectedStart , relStart); + SetBlockResult(EFail); + } + //Verify the end position on the scan line + if(!GetIntFromConfig(aSection,KFldExpectedEnd,expectedEnd)) + { + INFO_PRINTF1(KLogInfoNotCheckThePosition); + + } + else if(relEnd!=expectedEnd) + { + ERR_PRINTF3(_L("The returned End Position value is not as expected, expected: %d, result: %d"), expectedEnd , relEnd); + SetBlockResult(EFail); + } + } + +void CT_DataPolygonFiller::DoCmdGetNextPixelRunOnSpecifiedScanLine(const TDesC& aSection) + { + TInt datScanLine=0; + TBool relExists,expectedExists; + TInt relStart,relEnd,expectedStart,expectedEnd; + + if (!GetIntFromConfig(aSection, KFldScanLine, datScanLine)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldScanLine); + SetBlockResult(EFail); + } + INFO_PRINTF1(KLogInfoCmdGetNextPixelRunOnSpecifiedScanLine); + iPolygonFiller->GetNextPixelRunOnSpecifiedScanLine(relExists,datScanLine,relStart,relEnd); + if(!GetBoolFromConfig(aSection,KFldExpectedExists,expectedExists)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldExpectedExists); + SetBlockResult(EFail); + } + else if(relExists!=expectedExists) + { + ERR_PRINTF3(_L("The returned Exists value is not as expected, expected: %d, result: %d"), expectedExists , relExists); + SetBlockResult(EFail); + } + //Verify the start position on the scan line + if(!GetIntFromConfig(aSection,KFldExpectedStart,expectedStart)) + { + INFO_PRINTF1(KLogInfoNotCheckThePosition); + + } + else if(relStart!=expectedStart) + { + ERR_PRINTF3(_L("The returned Start Position value is not as expected, expected: %d, result: %d"), expectedStart , relStart); + SetBlockResult(EFail); + } + //Verify the end position on the scan line + if(!GetIntFromConfig(aSection,KFldExpectedEnd,expectedEnd)) + { + INFO_PRINTF1(KLogInfoNotCheckThePosition); + + } + else if(relEnd!=expectedEnd) + { + ERR_PRINTF3(_L("The returned End Position value is not as expected, expected: %d, result: %d"), expectedEnd , relEnd); + SetBlockResult(EFail); + } + } +