--- /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<TPoint>*, 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<CPolygonFiller*> (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<TPoint>(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);
+ }
+ }
+