--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/fbserv/src/T_DataBitmapUtil.cpp Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,403 @@
+/*
+* 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:
+*
+*/
+
+/**
+@test
+@internalComponent
+
+This contains CT_DataBitmapUtil
+*/
+
+// User includes
+#include "T_DataBitmapUtil.h"
+#include "T_GraphicsUtil.h"
+
+/*@{*/
+/// Parameters
+_LIT(KBitmap, "bitmap");
+_LIT(KPointX, "point_x");
+_LIT(KPointY, "point_y");
+_LIT(KOtherBitmapUtil, "other_bitmap_util");
+_LIT(KColor, "color");
+_LIT(KColorMask, "colormask");
+
+/// Commands
+_LIT(KCmdNew, "new");
+_LIT(KCmdBegin, "Begin");
+_LIT(KCmdEnd, "End");
+_LIT(KCmdSetPixel, "SetPixel");
+_LIT(KCmdGetPixel, "GetPixel");
+_LIT(KCmdSetPos, "SetPos");
+_LIT(KCmdDecXPos, "DecXPos");
+_LIT(KCmdDecYPos, "DecYPos");
+_LIT(KCmdIncXPos, "IncXPos");
+_LIT(KCmdIncYPos, "IncYPos");
+_LIT(KCleanup, "~");
+/*@}*/
+
+/**
+* Two phase constructor
+*/
+CT_DataBitmapUtil* CT_DataBitmapUtil::NewL()
+ {
+ CT_DataBitmapUtil* ret = new (ELeave) CT_DataBitmapUtil();
+ return ret;
+ }
+
+/**
+* Protected constructor. First phase construction
+*/
+CT_DataBitmapUtil::CT_DataBitmapUtil()
+: CDataWrapperBase()
+, iBitmapUtil(NULL)
+ {
+ }
+
+/**
+* Protected desctructor
+*/
+CT_DataBitmapUtil::~CT_DataBitmapUtil()
+ {
+ DestroyData();
+ }
+
+/**
+* Contains cleanup implementation
+*/
+void CT_DataBitmapUtil::DestroyData()
+ {
+ delete iBitmapUtil;
+ iBitmapUtil = NULL;
+ }
+
+TAny* CT_DataBitmapUtil::GetObject()
+ {
+ return iBitmapUtil;
+ }
+
+void CT_DataBitmapUtil::SetObjectL(TAny* aObject)
+ {
+ DestroyData();
+ iBitmapUtil = static_cast<TBitmapUtil*> (aObject);
+ }
+
+void CT_DataBitmapUtil::DisownObjectL()
+ {
+ iBitmapUtil = NULL;
+ }
+
+/**
+* Process a command read from the ini file
+*
+* @param aDataWrapper test step requiring command to be processed
+* @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_DataBitmapUtil::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/)
+ {
+ TBool retVal = ETrue;
+
+ if (aCommand == KCmdNew)
+ {
+ DoCmdNewL(aSection);
+ }
+ else if (aCommand == KCmdBegin)
+ {
+ DoCmdBeginL(aSection);
+ }
+ else if (aCommand == KCmdEnd)
+ {
+ DoCmdEnd();
+ }
+ else if (aCommand == KCmdSetPixel)
+ {
+ DoCmdSetPixelL(aSection);
+ }
+ else if (aCommand == KCmdGetPixel)
+ {
+ DoCmdGetPixel(aSection);
+ }
+ else if (aCommand == KCmdSetPos)
+ {
+ DoCmdSetPos(aSection);
+ }
+ else if (aCommand == KCmdDecXPos)
+ {
+ DoCmdDecXPos();
+ }
+ else if (aCommand == KCmdDecYPos)
+ {
+ DoCmdDecYPos();
+ }
+ else if (aCommand == KCmdIncXPos)
+ {
+ DoCmdIncXPos();
+ }
+ else if (aCommand == KCmdIncYPos)
+ {
+ DoCmdIncYPos();
+ }
+ else if (aCommand == KCleanup)
+ {
+ DestroyData();
+ }
+ else
+ {
+ retVal=EFalse;
+ }
+
+ return retVal;
+ }
+
+
+
+/** Creates a TBitmapUtil instance */
+void CT_DataBitmapUtil::DoCmdNewL(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("Creates a TBitmapUtil instance"));
+
+ // get fbsBitmap passed as a parameter
+ CFbsBitmap* fbsBitmap=NULL;
+ CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KBitmap(), fbsBitmap);
+
+ // cleanup if already created
+ delete iBitmapUtil;
+ iBitmapUtil = NULL;
+
+ // call new operator
+ TRAPD(err, iBitmapUtil = new (ELeave) TBitmapUtil(fbsBitmap));
+
+ // check error code
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Error creation instance: %d"), err);
+ SetError(err);
+ }
+ }
+
+
+/** Calls TBitmapUtil::Begin() */
+void CT_DataBitmapUtil::DoCmdBeginL(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::Begin()"));
+ TBool dataOk=ETrue;
+
+ // get position x-coordinate from parameters
+ TInt pointX;
+ if(!GetIntFromConfig(aSection, KPointX(), pointX))
+ {
+ ERR_PRINTF2(_L("No %S"), &KPointX());
+ SetBlockResult(EFail);
+ dataOk=EFalse;
+ }
+
+ // get position y-coordinate from parameters
+ TInt pointY;
+ if(!GetIntFromConfig(aSection, KPointY(), pointY))
+ {
+ ERR_PRINTF2(_L("No %S"), &KPointY());
+ SetBlockResult(EFail);
+ dataOk=EFalse;
+ }
+
+ if ( dataOk )
+ {
+ // call Begin()
+ // get bitmapUtil passed as a parameter
+ CT_DataBitmapUtil* bitmapUtilDataObject = CT_DataBitmapUtil::GetBitmapUtilDataObjectFromParameterL(*this, KOtherBitmapUtil(), aSection);
+
+ if (bitmapUtilDataObject == NULL)
+ {
+ iBitmapUtil->Begin(TPoint(pointX, pointY));
+ }
+ else
+ {
+ TBitmapUtil* otherBitmapUtil = static_cast<TBitmapUtil*>(bitmapUtilDataObject->GetObject());
+
+ // call Begin()
+ iBitmapUtil->Begin(TPoint(pointX, pointY), *otherBitmapUtil);
+ }
+ }
+ }
+
+
+/** Calls TBitmapUtil::End() */
+void CT_DataBitmapUtil::DoCmdEnd()
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::End()"));
+
+ // call End()
+ iBitmapUtil->End();
+ }
+
+
+/** Calls TBitmapUtil::SetPixel() */
+void CT_DataBitmapUtil::DoCmdSetPixelL(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::SetPixel()"));
+
+ // get bitmapUtil passed as a parameter
+ CT_DataBitmapUtil* bitmapUtilDataObject = CT_DataBitmapUtil::GetBitmapUtilDataObjectFromParameterL(*this, KOtherBitmapUtil(), aSection);
+
+ if (bitmapUtilDataObject == NULL)
+ {
+ // get color from parameters
+ TInt color;
+ if(!GetIntFromConfig(aSection, KColor(), color))
+ {
+ ERR_PRINTF2(_L("No %S"), &KColor());
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ // call SetPixel()
+ iBitmapUtil->SetPixel(TUint32(color));
+ }
+ }
+ else
+ {
+ TBitmapUtil* otherBitmapUtil = static_cast<TBitmapUtil*>(bitmapUtilDataObject->GetObject());
+
+ // call SetPixel()
+ iBitmapUtil->SetPixel(*otherBitmapUtil);
+ }
+ }
+
+
+/** Calls TBitmapUtil::GetPixel() */
+void CT_DataBitmapUtil::DoCmdGetPixel(const TDesC& aSection)
+ {
+ // call GetPixel()
+ TUint32 color = iBitmapUtil->GetPixel();
+ INFO_PRINTF2(_L("Calls TBitmapUtil::GetPixel() %d"), color);
+
+ TInt colorMask;
+ if ( GetHexFromConfig(aSection, KColorMask(), colorMask) )
+ {
+ color &= colorMask;
+ INFO_PRINTF2(_L("Color after masking %d"), color);
+ }
+
+ // get expected color from parameters
+ TInt expectedColor;
+ if(GetIntFromConfig(aSection, KColor(), expectedColor))
+ {
+ // check that the value is as expected
+ if (color != (TUint32)expectedColor )
+ {
+ ERR_PRINTF3(_L("The value is not as expected! expected: %d, actual: %d"), expectedColor, color);
+ SetBlockResult(EFail);
+ }
+ }
+ }
+
+/** Calls TBitmapUtil::SetPos() */
+void CT_DataBitmapUtil::DoCmdSetPos(const TDesC& aSection)
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::SetPos()"));
+ TBool dataOk=ETrue;
+
+ // get position x-coordinate from parameters
+ TInt pointX;
+ if(!GetIntFromConfig(aSection, KPointX(), pointX))
+ {
+ ERR_PRINTF2(_L("No %S"), &KPointX());
+ SetBlockResult(EFail);
+ dataOk=EFalse;
+ }
+
+ // get position y-coordinate from parameters
+ TInt pointY;
+ if(!GetIntFromConfig(aSection, KPointY(), pointY))
+ {
+ ERR_PRINTF2(_L("No %S"), &KPointY());
+ SetBlockResult(EFail);
+ dataOk=EFalse;
+ }
+
+ if ( dataOk )
+ {
+ // call SetPos()
+ iBitmapUtil->SetPos(TPoint(pointX, pointY));
+ }
+ }
+
+
+/** Calls TBitmapUtil::DecXPos() */
+void CT_DataBitmapUtil::DoCmdDecXPos()
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::DecXPos()"));
+
+ // call DecXPos()
+ iBitmapUtil->DecXPos();
+ }
+
+
+/** Calls TBitmapUtil::DecYPos() */
+void CT_DataBitmapUtil::DoCmdDecYPos()
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::DecYPos()"));
+
+ // call DecYPos()
+ iBitmapUtil->DecYPos();
+ }
+
+
+/** Calls TBitmapUtil::IncXPos() */
+void CT_DataBitmapUtil::DoCmdIncXPos()
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::IncXPos()"));
+
+ // call IncXPos()
+ iBitmapUtil->IncXPos();
+ }
+
+
+/** Calls TBitmapUtil::IncYPos() */
+void CT_DataBitmapUtil::DoCmdIncYPos()
+ {
+ INFO_PRINTF1(_L("Calls TBitmapUtil::IncYPos()"));
+
+ // call IncYPos()
+ iBitmapUtil->IncYPos();
+ }
+
+
+
+///////////////////////////////// UTIL METHODS //////////////////////////////////////
+
+
+/**
+* Utility method that fetches CT_DataBitmapUtil pointer by command parameter name from INI-file.
+*/
+CT_DataBitmapUtil* CT_DataBitmapUtil::GetBitmapUtilDataObjectFromParameterL(CDataWrapper& aDataWrapper, const TDesC& aParameterName, const TDesC& aSection)
+ {
+ // get AlgStyleData object from parameters
+ CT_DataBitmapUtil* ret=NULL;
+
+ TPtrC bitmapUtilDataObjectName;
+ // get BitmapUtilData object from parameters
+ if ( aDataWrapper.GetStringFromConfig(aSection, aParameterName, bitmapUtilDataObjectName) )
+ {
+ // check that the data object was found
+ ret=static_cast<CT_DataBitmapUtil*>(aDataWrapper.GetDataWrapperL(bitmapUtilDataObjectName));
+ }
+
+ return ret;
+ }