diff -r 000000000000 -r 5d03bc08d59c graphicsapitest/graphicssvs/gdi/src/T_DataBitmapContext.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicsapitest/graphicssvs/gdi/src/T_DataBitmapContext.cpp Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,384 @@ +/* +* 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 "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: +* +*/ + +/** +@test +@internalComponent + +This contains CT_DataGraphicsContext +*/ + +#include "T_DataBitmapContext.h" +#include "T_GraphicsUtil.h" + +/*@{*/ +/// Commands +_LIT(KCmdAlphaBlendBitmaps, "AlphaBlendBitmaps"); +_LIT(KCmdBitBlt, "BitBlt"); +_LIT(KCmdBitBltMasked, "BitBltMasked"); +_LIT(KCmdClear, "Clear"); +_LIT(KCmdCopyRect, "CopyRect"); +_LIT(KCmdSetFaded, "SetFaded"); +_LIT(KCmdSetFadingParameters, "SetFadingParameters"); + +/// Fields +_LIT(KFldAlphaBmp, "alphabmp"); +_LIT(KFldAlphaPt, "alphapt"); +_LIT(KFldBitmap, "bitmap"); +_LIT(KFldBlackMap, "blackmap"); +_LIT(KFldDestination, "destination"); +_LIT(KFldDestPt, "destpt"); +_LIT(KFldFaded, "faded"); +_LIT(KFldInvertMask, "invertmask"); +_LIT(KFldMaskBitmap, "maskbitmap"); +_LIT(KFldOffset, "offset"); +_LIT(KFldPoint, "point"); +_LIT(KFldRect, "rect"); +_LIT(KFldSource, "source"); +_LIT(KFldSourceRect, "sourcerect"); +_LIT(KFldSrcBmp, "srcbmp"); +_LIT(KFldSrcRect, "srcrect"); +_LIT(KFldSrcWsBmp, "srcwsbmp"); +_LIT(KFldWhiteMap, "whitemap"); + +/// Logging +_LIT(KLogError, "Error=%d"); +_LIT(KLogMissingParameter, "Missing parameter '%S'"); +/*@}*/ + +/** +* Constructor. First phase construction +*/ +CT_DataBitmapContext::CT_DataBitmapContext() +: CT_DataGraphicsContext() + { + } + +/** +* 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_DataBitmapContext::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex) + { + TBool ret=ETrue; + if ( aCommand==KCmdAlphaBlendBitmaps ) + { + DoCmdAlphaBlendBitmapsL(aSection); + } + else if ( aCommand==KCmdBitBlt ) + { + DoCmdBitBltL(aSection); + } + else if ( aCommand==KCmdBitBltMasked ) + { + DoCmdBitBltMaskedL(aSection); + } + else if ( aCommand==KCmdClear ) + { + DoCmdClear(aSection); + } + else if ( aCommand==KCmdCopyRect ) + { + DoCmdCopyRect(aSection); + } + else if ( aCommand==KCmdSetFaded ) + { + DoCmdSetFaded(aSection); + } + else if ( aCommand==KCmdSetFadingParameters ) + { + DoCmdSetFadingParameters(aSection); + } + else + { + ret=CT_DataGraphicsContext::DoCommandL(aCommand, aSection, aAsyncErrorIndex); + } + + return ret; + } + +void CT_DataBitmapContext::DoCmdAlphaBlendBitmapsL(const TDesC& aSection) + { + TBool dataOk=ETrue; + + TPoint destinationPoint; + if ( !GetPointFromConfig(aSection, KFldDestPt, destinationPoint) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldDestPt()); + SetBlockResult(EFail); + } + + TRect sourceRect; + if ( !GetRectFromConfig(aSection, KFldSrcRect, sourceRect) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldSrcRect()); + SetBlockResult(EFail); + } + + TPoint alphaPoint; + if ( !GetPointFromConfig(aSection, KFldAlphaPt, alphaPoint) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldAlphaPt()); + SetBlockResult(EFail); + } + + if ( dataOk ) + { + TInt err=KErrNone; + + CWsBitmap* wsBitmap=NULL; + if ( CT_GraphicsUtil::GetWsBitmapL(*this, aSection, KFldSrcWsBmp, wsBitmap) ) + { + CWsBitmap* alphaBitmap=NULL; + if ( !CT_GraphicsUtil::GetWsBitmapL(*this, aSection, KFldAlphaBmp, alphaBitmap) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldAlphaBmp()); + SetBlockResult(EFail); + } + else + { + INFO_PRINTF1(_L("execute AlphaBlendBitmaps(TPoint, CWsBitmap*, TRect, CWsBitmap*, TPoint)")); + err=GetBitmapContext()->AlphaBlendBitmaps(destinationPoint, wsBitmap, sourceRect, alphaBitmap, alphaPoint); + } + } + else + { + CFbsBitmap* fbsBitmap=NULL; + if ( CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldSrcBmp, fbsBitmap) ) + { + CFbsBitmap* alphaBitmap=NULL; + if ( !CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldAlphaBmp, alphaBitmap) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldAlphaBmp()); + SetBlockResult(EFail); + } + else + { + INFO_PRINTF1(_L("execute AlphaBlendBitmaps(TPoint, CFbsBitmap*, TRect, CFbsBitmap*, TPoint)")); + err=GetBitmapContext()->AlphaBlendBitmaps(destinationPoint, fbsBitmap, sourceRect, alphaBitmap, alphaPoint); + } + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KFldSrcWsBmp()); + ERR_PRINTF2(KLogMissingParameter, &KFldSrcBmp()); + SetBlockResult(EFail); + } + } + if ( err!=KErrNone ) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + } + +void CT_DataBitmapContext::DoCmdBitBltL(const TDesC& aSection) + { + TBool dataOk=ETrue; + + CFbsBitmap* bitmap=NULL; + if ( !CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldBitmap, bitmap) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldBitmap()); + SetBlockResult(EFail); + } + + TPoint point; + if ( GetPointFromConfig(aSection, KFldPoint, point) ) + { + if ( dataOk ) + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute BitBlt(TPoint, CFbsBitmap*)")); + GetBitmapContext()->BitBlt(point, bitmap); + } + } + else + { + TPoint destination; + if ( !GetPointFromConfig(aSection, KFldDestination, destination) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldDestination()); + SetBlockResult(EFail); + } + + TRect source; + if ( !GetRectFromConfig(aSection, KFldSource, source) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldSource()); + SetBlockResult(EFail); + } + + if ( dataOk ) + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute BitBlt(TRect, CFbsBitmap*, TRect)")); + GetBitmapContext()->BitBlt(destination, bitmap, source); + } + } + } + +void CT_DataBitmapContext::DoCmdBitBltMaskedL(const TDesC& aSection) + { + TBool dataOk=ETrue; + + // Get test data for command input parameter(s) + TPoint point; + if ( !GetPointFromConfig(aSection, KFldPoint, point) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldPoint()); + SetBlockResult(EFail); + } + + TRect sourceRect; + if ( !GetRectFromConfig(aSection, KFldSourceRect, sourceRect) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldSourceRect()); + SetBlockResult(EFail); + } + + TBool invertMask; + if ( !GetBoolFromConfig(aSection, KFldInvertMask, invertMask) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldInvertMask()); + SetBlockResult(EFail); + } + + CFbsBitmap* bitmap=NULL; + if ( !CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldBitmap, bitmap) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldBitmap()); + SetBlockResult(EFail); + } + + if ( dataOk ) + { + CFbsBitmap* maskBitmap=NULL; + CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldMaskBitmap, maskBitmap); + + // Execute command and log parameters + INFO_PRINTF1(_L("execute BitBltMasked(TPoint, CFbsBitmap*, TRect, CFbsBitmap*, TBool)")); + GetBitmapContext()->BitBltMasked(point, bitmap, sourceRect, maskBitmap, invertMask); + } + } + +void CT_DataBitmapContext::DoCmdClear(const TDesC& aSection) + { + // Get test data for command input parameter(s) + TRect rect; + if ( GetRectFromConfig(aSection, KFldRect, rect) ) + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute Clear(TRect)")); + GetBitmapContext()->Clear(rect); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute Clear()")); + GetBitmapContext()->Clear(); + } + } + +void CT_DataBitmapContext::DoCmdCopyRect(const TDesC& aSection) + { + TBool dataOk=ETrue; + + // Get test data for command input parameter(s) + TPoint offset; + if ( !GetPointFromConfig(aSection, KFldOffset, offset) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldOffset()); + SetBlockResult(EFail); + } + + TRect rect; + if ( !GetRectFromConfig(aSection, KFldRect, rect) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldRect()); + SetBlockResult(EFail); + } + + if ( dataOk ) + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute CopyRect(TPoint, TRect)")); + GetBitmapContext()->CopyRect(offset, rect); + } + } + +void CT_DataBitmapContext::DoCmdSetFaded(const TDesC& aSection) + { + TBool faded=ETrue; + if( !GetBoolFromConfig(aSection, KFldFaded(), faded)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldFaded()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute SetFaded(TBool)")); + GetBitmapContext()->SetFaded(faded); + } + } + +void CT_DataBitmapContext::DoCmdSetFadingParameters(const TDesC& aSection) + { + TBool dataOk=ETrue; + + TInt blackMap=0; + if( !GetIntFromConfig(aSection, KFldBlackMap(), blackMap) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldBlackMap()); + SetBlockResult(EFail); + } + + TInt whiteMap=255; + if( !GetIntFromConfig(aSection, KFldWhiteMap(), whiteMap) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldWhiteMap()); + SetBlockResult(EFail); + } + + if ( dataOk ) + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute SetFadingParameters(TUint8, TUint8)")); + GetBitmapContext()->SetFadingParameters((TUint8)blackMap, (TUint8)whiteMap); + } + }