graphics/fbserv/src/T_DataBitmapUtil.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /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;
+	}