diff -r e8c1ea2c6496 -r 8758140453c0 graphics/bitgdi/src/T_DataFbsBitGc.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphics/bitgdi/src/T_DataFbsBitGc.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,1113 @@ +// +// 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 +#include +#include "T_DataFbsBitGc.h" +#include "T_GraphicsUtil.h" + +/*@{*/ +/// Commands +_LIT(KCmdNewL, "NewL"); +_LIT(KCmdDestructor, "~"); +_LIT(KCmdActivate, "Activate"); +_LIT(KCmdActivateNoJustAutoUpdate, "ActivateNoJustAutoUpdate"); +_LIT(KCmdAlphaBlendBitmaps, "AlphaBlendBitmaps"); +_LIT(KCmdDisown, "disown"); +_LIT(KCmdDrawPolyLineNoEndPoint, "DrawPolyLineNoEndPoint"); + +_LIT(KCmdCancelClipping, "CancelClipping"); +_LIT(KCmdCopySettings, "CopySettings"); +_LIT(KCmdBitBlt, "BitBlt"); + +_LIT(KCmdDrawText, "DrawText"); +_LIT(KCmdDrawTextVertical, "DrawTextVertical"); +_LIT(KCmdUpdateJustification, "UpdateJustification"); +_LIT(KCmdUpdateJustificationVertical,"UpdateJustificationVertical"); + +_LIT(KCmdFadeArea, "FadeArea"); +_LIT(KCmdIsBrushPatternUsed, "IsBrushPatternUsed"); +_LIT(KCmdIsFontUsed, "IsFontUsed"); +_LIT(KCmdOrientationsAvailable, "OrientationsAvailable"); +_LIT(KCmdRectDrawnTo, "RectDrawnTo"); +_LIT(KCmdResized, "Resized"); +_LIT(KCmdSetDitherOrigin, "SetDitherOrigin"); +_LIT(KCmdSetFadeMode, "SetFadeMode"); +_LIT(KCmdSetFadingParameters, "SetFadingParameters"); +_LIT(KCmdSetOrientation, "SetOrientation"); +_LIT(KCmdSetShadowMode, "SetShadowMode"); +_LIT(KCmdSetUserDisplayMode, "SetUserDisplayMode"); +_LIT(KCmdShadowArea, "ShadowArea"); +_LIT(KCmdUseBrushPattern, "UseBrushPattern"); +_LIT(KCmdUseFont, "UseFont"); +_LIT(KCmdUseFontNoDuplicate, "UseFontNoDuplicate"); +_LIT(KCmdGetAvailableOrientation, "GetAvailableOrientation"); +_LIT(KCmdPromptMessage, "PromptMessage"); +/// Fields +_LIT(KFldAlphaBmp, "alphabmp"); +_LIT(KFldAlphaPt, "alphapt"); +_LIT(KFldDestPt, "destpt"); +_LIT(KFldDevice, "device"); +_LIT(KFldSrcBmp1, "srcbmp1"); +_LIT(KFldSrcBmp2, "srcbmp2"); +_LIT(KFldSrcPt, "srcpt"); +_LIT(KFldSrcRect, "srcrect"); +_LIT(KFldNumPoints, "numpoints"); +_LIT(KFldPointList, "pointlist"); + +_LIT(KFldFbsBitGc, "fbsBitGc"); +_LIT(KFldPoint, "point"); + +_LIT(KFldRect, "rect"); +_LIT(KFldTextAlign, "textalign"); +_LIT(KFldText, "text"); +_LIT(KFldLeftMargin, "leftmargin"); +_LIT(KFldBaselineOffset, "baselineoffset"); +_LIT(KFldTextWidth, "textwidth"); +_LIT(KFldUp, "up"); +_LIT(KFldParam, "param"); + +_LIT(KFldRegion, "region"); +_LIT(KFldFadeMode, "fademode"); +_LIT(KFldBlackMap, "blackmap"); +_LIT(KFldWhiteMap, "whitemap"); +_LIT(KFldGraphicsOrientation, "orientation"); +_LIT(KFldShadowMode, "shadowmode"); +_LIT(KFldDisplayMode, "displaymode"); +_LIT(KFldHandle, "handle"); +_LIT(KFldFont, "font"); +_LIT(KFldBitmap, "bitmap"); +_LIT(KFldUseHandle, "usehandle"); +_LIT(KFldPromptText, "message"); +_LIT(KFldExpectedKey, "keyCode"); + +_LIT(KFldExpect, "expect"); +_LIT(KFormatFieldNumber, "Orientation_%d=%d"); +/// Logging +_LIT(KLogError, "Error=%d"); +_LIT(KLogMissingParameter, "Missing parameter '%S'"); +_LIT(KLogNotExpectedValue, "Not expected value,get %d, expectd %d"); +/*@}*/ +_LIT(KPromptProcess, "t_prompt.exe"); + + +/** +* Two phase constructor +*/ +CT_DataFbsBitGc* CT_DataFbsBitGc::NewL() + { + CT_DataFbsBitGc* ret=new (ELeave) CT_DataFbsBitGc(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +/** +* Protected constructor. First phase construction +*/ +CT_DataFbsBitGc::CT_DataFbsBitGc() +: CT_DataBitmapContext() +, iFbsBitGc(NULL) + { + } + +/** +* Protected second phase construction +*/ +void CT_DataFbsBitGc::ConstructL() + { + + } + +/** +* Destructor. +*/ +CT_DataFbsBitGc::~CT_DataFbsBitGc() + { + + DestroyData(); + } + +void CT_DataFbsBitGc::SetObjectL(TAny* aAny) + { + DestroyData(); + iFbsBitGc = static_cast (aAny); + } + +void CT_DataFbsBitGc::DisownObjectL() + { + iFbsBitGc = NULL; + } + +void CT_DataFbsBitGc::DestroyData() + { + delete iFbsBitGc; + iFbsBitGc=NULL; + } + +/** +* Return a pointer to the object that the data wraps +* +* @return pointer to the object that the data wraps +*/ +TAny* CT_DataFbsBitGc::GetObject() + { + return iFbsBitGc; + } + +// CT_DataBitmapContext implementation +CBitmapContext* CT_DataFbsBitGc::GetBitmapContext() const + { + return iFbsBitGc; + } + +// CT_DataGraphicsContext implementation +CGraphicsContext* CT_DataFbsBitGc::GetGraphicsContext() const + { + return iFbsBitGc; + } + +/** +* 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 +* @param aAsyncErrorIndex index of command. used for async calls +* +* @return ETrue if the command is processed +*/ +TBool CT_DataFbsBitGc::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex) + { + /* Another work package will complete the implement of this */ + TBool ret = ETrue; + + if ( aCommand==KCmdNewL ) + { + DoCmdNewL(); + } + else if ( aCommand==KCmdDestructor ) + { + DoCmdDestructor(); + } + else if ( aCommand==KCmdActivate ) + { + DoCmdActivateL(aSection); + } + else if ( aCommand == KCmdDisown ) + { + DisownObjectL(); + } + else if ( aCommand==KCmdActivateNoJustAutoUpdate ) + { + DoCmdActivateNoJustAutoUpdateL(aSection); + } + else if ( aCommand==KCmdAlphaBlendBitmaps ) + { + if ( !DoCmdAlphaBlendBitmapsL(aSection) ) + { + ret=CT_DataBitmapContext::DoCommandL(aCommand, aSection, aAsyncErrorIndex); + } + } + else if ( aCommand==KCmdDrawPolyLineNoEndPoint ) + { + DoCmdDrawPolyLineNoEndPointL(aSection); + } + else if ( aCommand==KCmdCancelClipping) + { + DoCmdCancelClipping(aSection); + } + else if ( aCommand==KCmdCopySettings) + { + DoCmdCopySettingsL(aSection); + } + else if ( aCommand==KCmdBitBlt) + { + if(!DoCmdBitBltL(aSection)) + { + ret=CT_DataBitmapContext::DoCommandL(aCommand, aSection, aAsyncErrorIndex); + } + } + else if(aCommand==KCmdDrawText) + { + DoCmdDrawTextL(aSection); + } + else if(aCommand==KCmdDrawTextVertical) + { + DoCmdDrawTextVerticalL(aSection); + } + else if(aCommand==KCmdUpdateJustification) + { + DoCmdUpdateJustificationL(aSection); + } + else if(aCommand==KCmdUpdateJustificationVertical) + { + DoCmdUpdateJustificationVerticalL(aSection); + } + else if(aCommand==KCmdFadeArea) + { + DoCmdFadeArea(aSection); + } + else if(aCommand==KCmdIsBrushPatternUsed) + { + DoCmdIsBrushPatternUsed(aSection); + } + else if(aCommand==KCmdIsFontUsed) + { + DoCmdIsFontUsed(aSection); + } + else if(aCommand==KCmdOrientationsAvailable) + { + DoCmdOrientationsAvailable(aSection); + } + else if(aCommand==KCmdRectDrawnTo) + { + DoCmdRectDrawnTo(aSection); + } + else if(aCommand==KCmdResized) + { + DoCmdResized(aSection); + } + else if(aCommand==KCmdSetDitherOrigin) + { + DoCmdSetDitherOrigin(aSection); + } + else if(aCommand==KCmdSetFadeMode) + { + DoCmdSetFadeMode(aSection); + } + else if(aCommand==KCmdSetFadingParameters) + { + if(!DoCmdSetFadingParameters(aSection)) + { + ret=CT_DataBitmapContext::DoCommandL(aCommand, aSection, aAsyncErrorIndex); + } + } + else if(aCommand==KCmdSetOrientation) + { + DoCmdSetOrientation(aSection); + } + else if(aCommand==KCmdSetShadowMode) + { + DoCmdSetShadowMode(aSection); + } + else if(aCommand==KCmdSetUserDisplayMode) + { + DoCmdSetUserDisplayMode(aSection); + } + else if(aCommand==KCmdShadowArea) + { + DoCmdShadowArea(aSection); + } + else if(aCommand==KCmdUseBrushPattern) + { + DoCmdUseBrushPatternL(aSection); + } + else if(aCommand==KCmdUseFont) + { + DoCmdUseFontL(aSection); + } + else if(aCommand==KCmdUseFontNoDuplicate) + { + DoCmdUseFontNoDuplicateL(aSection); + } + else if(aCommand==KCmdPromptMessage) + { + DoCmdPromptMessageL(aSection); + } + else + { + ret=CT_DataBitmapContext::DoCommandL(aCommand, aSection, aAsyncErrorIndex); + } + + return ret; + } + +void CT_DataFbsBitGc::DoCmdNewL() + { + DestroyData(); + + INFO_PRINTF1(_L("execute CFbsBitGc::NewL")); + TRAPD( err, iFbsBitGc = CFbsBitGc::NewL() ); + if ( err!=KErrNone ) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + +void CT_DataFbsBitGc::DoCmdDestructor() + { + DestroyData(); + } + +void CT_DataFbsBitGc::DoCmdActivateL(const TDesC& aSection) + { + CFbsDevice* device=NULL; + if ( !CT_GraphicsUtil::GetFbsDeviceL(*this, aSection, KFldDevice, device) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldDevice()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute Activate(CFbsDevice*)")); + iFbsBitGc->Activate(device); + } + } + +void CT_DataFbsBitGc::DoCmdActivateNoJustAutoUpdateL(const TDesC& aSection) + { + CFbsDevice* device=NULL; + if ( !CT_GraphicsUtil::GetFbsDeviceL(*this, aSection, KFldDevice, device) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldDevice()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute ActivateNoJustAutoUpdate(CFbsDevice*)")); + iFbsBitGc->ActivateNoJustAutoUpdate(device); + } + } + +TBool CT_DataFbsBitGc::DoCmdAlphaBlendBitmapsL(const TDesC& aSection) + { + CFbsBitmap* fbsBitmap1=NULL; + TBool ret=CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldSrcBmp1, fbsBitmap1); + if ( ret ) + { + TBool dataOk=ETrue; + + CFbsBitmap* fbsBitmap2=NULL; + if ( !CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldSrcBmp2, fbsBitmap2) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldSrcBmp2()); + SetBlockResult(EFail); + } + + CFbsBitmap* alphaBitmap=NULL; + if ( !CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldAlphaBmp, alphaBitmap) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldAlphaBmp()); + SetBlockResult(EFail); + } + + 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 sourcePoint; + if ( !GetPointFromConfig(aSection, KFldSrcPt, sourcePoint) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldSrcPt()); + SetBlockResult(EFail); + } + + TPoint alphaPoint; + if ( !GetPointFromConfig(aSection, KFldAlphaPt, alphaPoint) ) + { + dataOk=EFalse; + ERR_PRINTF2(KLogMissingParameter, &KFldAlphaPt()); + SetBlockResult(EFail); + } + + if ( dataOk ) + { + INFO_PRINTF1(_L("execute AlphaBlendBitmaps(const TPoint&,const CFbsBitmap*,const CFbsBitmap*,const TRect&,const TPoint&,const CFbsBitmap*,const TPoint&")); + TInt err=iFbsBitGc->AlphaBlendBitmaps(destinationPoint, fbsBitmap1, fbsBitmap2, sourceRect, sourcePoint, alphaBitmap, alphaPoint); + if ( err!=KErrNone ) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + } + + return ret; + } + +void CT_DataFbsBitGc::DoCmdDrawPolyLineNoEndPointL(const TDesC& aSection) + { + TInt datNumPoints; + if ( GetIntFromConfig(aSection, KFldNumPoints, datNumPoints) ) + { + TPoint* points=new (ELeave) TPoint[datNumPoints]; + + if ( !GetPointListFromConfig(aSection, KFldPointList, datNumPoints, points) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldPointList()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute DrawPolyLineNoEndPoint(TPoint*, TInt)")); + iFbsBitGc->DrawPolyLineNoEndPoint(points, datNumPoints); + } + delete [] points; + } + else + { + CArrayFix* points=new (ELeave) CArrayFixFlat(1); + CleanupStack::PushL(points); + TBool hasPointList=GetPointListFromConfigL(aSection, KFldPointList, *points); + + if ( !hasPointList ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldPointList()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute DrawPolyLineNoEndPoint(CArrayFix*)")); + iFbsBitGc->DrawPolyLineNoEndPoint(points); + } + CleanupStack::PopAndDestroy(points); + } + } + +void CT_DataFbsBitGc::DoCmdCancelClipping(const TDesC& /*aSection*/) + { + INFO_PRINTF1(_L("execute CancelClipping()")); + iFbsBitGc->CancelClipping(); + } + +void CT_DataFbsBitGc::DoCmdCopySettingsL(const TDesC& aSection) + { + CFbsBitGc* fbsBitGc=NULL; + + if ( !CT_GraphicsUtil::GetFbsBitGcL(*this, aSection, KFldFbsBitGc, fbsBitGc) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldFbsBitGc()); + SetBlockResult(EFail); + } + else + { + // Execute command and log parameters + INFO_PRINTF1(_L("execute CopySettings(CFbsBitGc&)")); + iFbsBitGc->CopySettings(*fbsBitGc); + } + } + +TBool CT_DataFbsBitGc::DoCmdBitBltL(const TDesC& aSection) + { + TBool ret=ETrue; + CFbsBitGc* fbsBitGc=NULL; + + if ( !CT_GraphicsUtil::GetFbsBitGcL(*this, aSection, KFldFbsBitGc, fbsBitGc) ) + { + ret=EFalse; + } + else + { + // Execute command and log parameters + TPoint point; + if ( !GetPointFromConfig(aSection, KFldPoint, point) ) + { + ERR_PRINTF2(KLogMissingParameter, &KFldPoint()); + SetBlockResult(EFail); + //Case failed, needn't execute other step. + return ret; + } + + TRect sourceRect; + if(!GetRectFromConfig(aSection, KFldSrcRect, sourceRect)) + { + INFO_PRINTF1(_L("execute BitBlt(const TPoint&, const CFbsBitGc&)")); + iFbsBitGc->BitBlt(point,*fbsBitGc); + } + else + { + INFO_PRINTF1(_L("execute BitBlt(const TPoint&, const CFbsBitGc&,const TRect &)")); + iFbsBitGc->BitBlt(point,*fbsBitGc,sourceRect); + } + } + + return ret; + } + +void CT_DataFbsBitGc::DoCmdDrawTextL(const TDesC& aSection) + { + TRect rect; + TInt baselineOffset=0; + TPtrC text; + TInt datTextWidth; + + if ( !GetStringFromConfig(aSection, KFldText(), text) ) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldText()); + SetBlockResult(EFail); + return; + } + + if (GetRectFromConfig(aSection, KFldRect, rect) ) + { + if (GetIntFromConfig(aSection, KFldBaselineOffset, baselineOffset)) + { + TInt datMargin=0; + CGraphicsContext::TTextAlign textAlign=CGraphicsContext::ELeft; + CT_GraphicsUtil::ReadTextAlign(*this, aSection, KFldTextAlign, + textAlign); + if (!GetIntFromConfig(aSection, KFldLeftMargin, datMargin)) + { + INFO_PRINTF1(_L("Using the default value aMargin=0")); + } + + if (GetIntFromConfig(aSection, KFldTextWidth, datTextWidth)) + { + INFO_PRINTF1(_L("execute DrawText(const TDesC &,const TRect &,TInt,TInt,TTextAlign,TInt)")); + iFbsBitGc->DrawText(text, rect, baselineOffset, datTextWidth, + textAlign, datMargin); + } + else + { + INFO_PRINTF1(_L("execute DrawText(const TDesC &,const TRect &,TInt,TTextAlign,TInt)")); + iFbsBitGc->DrawText(text, rect, baselineOffset, textAlign, + datMargin); + } + } + else + { + INFO_PRINTF1(_L("execute DrawText(const TDesC&,const TRect&)")); + iFbsBitGc->DrawText(text, rect); + } + } + else + { + TPoint point; + if (!GetPointFromConfig(aSection, KFldPoint, point)) + { + INFO_PRINTF1(_L("execute DrawText(const TDesC&)")); + iFbsBitGc->DrawText(text); + } + else + { + INFO_PRINTF1(_L("execute DrawText(const TDesC&,const TPoint&)")); + iFbsBitGc->DrawText(text, point); + } + } + } + +void CT_DataFbsBitGc::DoCmdDrawTextVerticalL(const TDesC& aSection) + { + TPtrC text; + TInt datTextWidth; + TBool up=EFalse; + + if ( !GetStringFromConfig(aSection, KFldText(), text) ) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldText()); + SetBlockResult(EFail); + return; + } + + if ( !GetBoolFromConfig(aSection, KFldUp, up)) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldUp()); + SetBlockResult(EFail); + return; + } + + TRect rect; + TInt baselineOffset=0; + if (GetRectFromConfig(aSection, KFldRect, rect) ) + { + if (GetIntFromConfig(aSection, KFldBaselineOffset, baselineOffset)) + { + TInt datMargin=0; + CGraphicsContext::TTextAlign textAlign=CGraphicsContext::ELeft; + CT_GraphicsUtil::ReadTextAlign(*this, aSection, KFldTextAlign, + textAlign); + if (!GetIntFromConfig(aSection, KFldLeftMargin, datMargin)) + { + INFO_PRINTF1(_L("Using the default value aMargin=0")); + } + + if (GetIntFromConfig(aSection, KFldTextWidth, datTextWidth)) + { + INFO_PRINTF1(_L("execute DrawTextVertical(const TDesC &,const TRect &,TInt,TInt,TBool,TTextAlign,TInt)")); + iFbsBitGc->DrawTextVertical(text, rect, baselineOffset, + datTextWidth, up, textAlign, datMargin); + } + else + { + INFO_PRINTF1(_L("execute DrawTextVertical(const TDesC &,const TRect &,TInt,TBool,TTextAlign,TInt)")); + iFbsBitGc->DrawTextVertical(text, rect, baselineOffset, up, + textAlign, datMargin); + } + } + else + { + INFO_PRINTF1(_L("execute DrawTextVertical(const TDesC &,const TRect &,TBool)")); + iFbsBitGc->DrawTextVertical(text, rect, up); + } + } + else + { + TPoint point; + if (!GetPointFromConfig(aSection, KFldPoint, point)) + { + INFO_PRINTF1(_L("execute DrawTextVertical(const TDesC &,TBool)")); + iFbsBitGc->DrawTextVertical(text, up); + } + else + { + INFO_PRINTF1(_L("execute DrawTextVertical(const TDesC &,const TPoint &,TBool)")); + iFbsBitGc->DrawTextVertical(text, point, up); + } + } + } + +void CT_DataFbsBitGc::DoCmdUpdateJustificationL(const TDesC& aSection) + { + TPtrC text; + if ( !GetStringFromConfig(aSection, KFldText(), text) ) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldText()); + SetBlockResult(EFail); + return; + } + INFO_PRINTF1(_L("execute UpdateJustification(const TDesC &)")); + iFbsBitGc->UpdateJustification(text); + } + +void CT_DataFbsBitGc::DoCmdUpdateJustificationVerticalL(const TDesC& aSection) + { + TPtrC text; + TBool up=EFalse; + + if ( !GetStringFromConfig(aSection, KFldText(), text) ) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldText()); + SetBlockResult(EFail); + return; + } + + if ( !GetBoolFromConfig(aSection, KFldUp, up)) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldUp()); + SetBlockResult(EFail); + return; + } + INFO_PRINTF1(_L("execute UpdateJustificationVertical(const TDesC &,TBool)")); + iFbsBitGc->UpdateJustificationVertical(text, up); + } + +void CT_DataFbsBitGc::DoCmdFadeArea(const TDesC& aSection) + { + RRegion reg; + if(GetRegionFromConfig(aSection,KFldRegion,reg)) + { + INFO_PRINTF1(_L("execute FadeArea(const TRegion *)")); + iFbsBitGc->FadeArea(®); + } + else + { + INFO_PRINTF2(_L("Missing parameter %S"), &KFldRegion()); + INFO_PRINTF1(_L("execute FadeArea(NULL)")); + iFbsBitGc->FadeArea(NULL); + } + } + +void CT_DataFbsBitGc::DoCmdIsBrushPatternUsed(const TDesC& aSection) + { + INFO_PRINTF1(_L("execute IsBrushPatternUsed()")); + TBool bUsed=iFbsBitGc->IsBrushPatternUsed(); + + TBool expect; + if(GetBoolFromConfig(aSection,KFldExpect,expect)) + { + if(expect!=bUsed) + { + ERR_PRINTF3(KLogNotExpectedValue, bUsed,expect); + SetBlockResult(EFail); + } + } + } + +void CT_DataFbsBitGc::DoCmdIsFontUsed(const TDesC& aSection) + { + INFO_PRINTF1(_L("execute IsFontUsed()")); + TBool bUsed=iFbsBitGc->IsFontUsed(); + + TBool expect; + if(GetBoolFromConfig(aSection,KFldExpect,expect)) + { + if(expect!=bUsed) + { + ERR_PRINTF3(KLogNotExpectedValue, bUsed,expect); + SetBlockResult(EFail); + } + } + } + +void CT_DataFbsBitGc::DoCmdOrientationsAvailable(const TDesC& /*aSection*/) + { + INFO_PRINTF1(_L("execute OrientationsAvailable(TBool aOrientation[4])")); + + //iGraphicsOrientation defined in CDataWrapperBase + iFbsBitGc->OrientationsAvailable(iGraphicsOrientation); + + TBuf tempStore; + + for(TInt i=0;i<4;i++) + { + tempStore.Format(KFormatFieldNumber, i+1,iGraphicsOrientation[i]); + INFO_PRINTF1(KFormatFieldNumber); + } + } + +void CT_DataFbsBitGc::DoCmdRectDrawnTo(const TDesC& aSection) + { + TRect rect; + if(GetRectFromConfig(aSection, KFldRect, rect)) + { + INFO_PRINTF1(_L("execute RectDrawnTo(TRect&)")); + iFbsBitGc->RectDrawnTo(rect); + } + else + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldRect()); + SetBlockResult(EFail); + } + + } + +void CT_DataFbsBitGc::DoCmdResized(const TDesC& /*aSection*/) + { + INFO_PRINTF1(_L("execute Resized()")); + iFbsBitGc->Resized(); + + } + +void CT_DataFbsBitGc::DoCmdSetDitherOrigin(const TDesC& aSection) + { + TPoint point; + if (GetPointFromConfig(aSection, KFldPoint, point)) + { + INFO_PRINTF1(_L("execute SetDitherOrigin(const TPoint &)")); + iFbsBitGc->SetDitherOrigin(point); + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KFldPoint()); + SetBlockResult(EFail); + } + } + +void CT_DataFbsBitGc::DoCmdSetFadeMode(const TDesC& aSection) + { + TBool fade; + if(GetBoolFromConfig(aSection,KFldFadeMode,fade)) + { + INFO_PRINTF1(_L("execute SetFadeMode(TBool)")); + iFbsBitGc->SetFadeMode(fade); + } + else + { + INFO_PRINTF1(_L("execute SetFadeMode(TBool aFadeMode=EFalse)")); + iFbsBitGc->SetFadeMode(); + } + } + +TBool CT_DataFbsBitGc::DoCmdSetFadingParameters(const TDesC& aSection) + { + TInt blackmap=0; + TInt whitemap=255; + if(GetIntFromConfig(aSection,KFldWhiteMap,whitemap)) + { + //let base class handle this + return EFalse; + } + else + { + if(GetBoolFromConfig(aSection,KFldBlackMap,blackmap)) + { + INFO_PRINTF1(_L("execute SetFadingParameters(TUint8)")); + iFbsBitGc->SetFadingParameters(blackmap); + } + else + { + INFO_PRINTF1(_L("execute SetFadingParameters(TUint8 aBlackMap=0)")); + iFbsBitGc->SetFadingParameters(); + } + } + return ETrue; + } + +void CT_DataFbsBitGc::DoCmdSetOrientation(const TDesC& aSection) + { + CFbsBitGc::TGraphicsOrientation orientation; + TBool ret=EFalse; + if(CT_GraphicsUtil::GetGraphicsOrientation(*this,aSection,KFldGraphicsOrientation,orientation)) + { + INFO_PRINTF1(_L("execute SetOrientation(TGraphicsOrientation)")); + ret=iFbsBitGc->SetOrientation(orientation); + if(ret!=iGraphicsOrientation[orientation]) + { + INFO_PRINTF1(_L("SetOrientation and OrientationsAvailable return values are not match!")); + SetBlockResult(EFail); + } + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KFldGraphicsOrientation()); + SetBlockResult(EFail); + } + } + +void CT_DataFbsBitGc::DoCmdSetShadowMode(const TDesC& aSection) + { + TBool mode; + if(GetBoolFromConfig(aSection,KFldShadowMode,mode)) + { + INFO_PRINTF1(_L("execute SetShadowMode(TBool)")); + iFbsBitGc->SetShadowMode(mode); + } + else + { + INFO_PRINTF1(_L("execute SetShadowMode(TBool aShadowMode=EFalse)")); + iFbsBitGc->SetShadowMode(); + } + } + +void CT_DataFbsBitGc::DoCmdSetUserDisplayMode(const TDesC& aSection) + { + TDisplayMode mode; + if(CT_GraphicsUtil::ReadDisplayMode(*this,aSection,KFldDisplayMode,mode)) + { + INFO_PRINTF1(_L("execute SetUserDisplayMode(TDisplayMode)")); + iFbsBitGc->SetUserDisplayMode(mode); + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KFldDisplayMode()); + SetBlockResult(EFail); + } + } + +void CT_DataFbsBitGc::DoCmdShadowArea(const TDesC& aSection) + { + RRegion reg; + if(GetRegionFromConfig(aSection,KFldRegion,reg)) + { + INFO_PRINTF1(_L("execute ShadowArea(const TRegion *)")); + iFbsBitGc->ShadowArea(®); + } + else + { + INFO_PRINTF2(_L("Missing parameter %S"), &KFldRegion()); + INFO_PRINTF1(_L("execute ShadowArea(NULL)")); + iFbsBitGc->ShadowArea(NULL); + } + } + +void CT_DataFbsBitGc::DoCmdUseBrushPatternL(const TDesC& aSection) + { + TInt handle; + if(GetIntFromConfig(aSection,KFldHandle,handle)) + { + INFO_PRINTF1(_L("execute UseBrushPattern(TInt) using the specified handle.")); + TInt err=iFbsBitGc->UseBrushPattern(handle); + if(KErrNone!=err) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + else + { + CFbsBitmap* bitmap=NULL; + if (CT_GraphicsUtil::GetFbsBitmapL(*this, aSection, KFldBitmap, bitmap)) + { + TBool usehandle; + if(GetBoolFromConfig(aSection,KFldUseHandle,usehandle)) + { + INFO_PRINTF1(_L("execute UseBrushPattern(TInt) using the bitmap object's handle.")); + TInt err=iFbsBitGc->UseBrushPattern(bitmap->Handle()); + if(KErrNone!=err) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + else + { + INFO_PRINTF1(_L("execute UseBrushPattern(CFbsBitmap*)")); + iFbsBitGc->UseBrushPattern(bitmap); + } + } + else + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldBitmap()); + SetBlockResult(EFail); + } + } + } + +void CT_DataFbsBitGc::DoCmdUseFontL(const TDesC& aSection) + { + TInt handle; + if(GetIntFromConfig(aSection,KFldHandle,handle)) + { + INFO_PRINTF1(_L("execute UseFont(TInt) using the specified handle")); + TInt err=iFbsBitGc->UseFont(handle); + if(KErrNone!=err) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + else + { + CFont* font=NULL; + if(CT_GraphicsUtil::GetFontL(*this,aSection,KFldFont,font)) + { + TBool usehandle; + if(GetBoolFromConfig(aSection,KFldUseHandle,usehandle)) + { + INFO_PRINTF1(_L("execute UseFont(TInt) using the font object's handle")); + TInt err=iFbsBitGc->UseFont(((CFbsFont*)font)->Handle()); + if(KErrNone!=err) + { + ERR_PRINTF2(KLogError, err); + SetError(err); + } + } + else + { + INFO_PRINTF1(_L("execute UseFont(CFont*)")); + iFbsBitGc->UseFont(font); + } + } + else + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldFont()); + SetBlockResult(EFail); + } + } + } + +void CT_DataFbsBitGc::DoCmdUseFontNoDuplicateL(const TDesC& aSection) + { + CFont* font=NULL; + if(CT_GraphicsUtil::GetFontL(*this,aSection,KFldFont,font)) + { + INFO_PRINTF1(_L("execute UseFontNoDuplicate(const CFbsBitGcFont*)")); + iFbsBitGc->UseFontNoDuplicate((CFbsBitGcFont*)font); + } + else + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldFont()); + SetBlockResult(EFail); + } + } + +void CT_DataFbsBitGc::DoCmdPromptMessageL(const TDesC& aSection) + { + TPtrC text; + //get prompt text to display in console in order to help user verify. + if(!GetStringFromConfig(aSection, KFldPromptText(), text)) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldPromptText()); + SetBlockResult(EFail); + } + TInt expectedKey; + if(!GetIntFromConfig(aSection, KFldExpectedKey(), expectedKey)) + { + ERR_PRINTF2(_L("Missing parameter %S"), &KFldExpectedKey()); + SetBlockResult(EFail); + } + TInt actualKey; + RProperty property; + const TUid KMyPropertyCat={0x10012345}; + TUint key=1; + TSecurityPolicy read(TSecurityPolicy::EAlwaysPass); + TSecurityPolicy write(TSecurityPolicy::EAlwaysPass); + TInt err=property.Define(KMyPropertyCat,key,RProperty::EInt,read,write); + if (err==KErrAlreadyExists) + { + ERR_PRINTF1(_L("RProperty has existed!")); + SetBlockResult(EFail); + User::LeaveIfError(err); + } + err=property.Attach(KMyPropertyCat,key); + TRequestStatus substatus; + //issue a request to get property change information. + property.Subscribe(substatus); + RProcess promptProcess; + err = promptProcess.Create(KPromptProcess, text); + if (err == KErrNone) + { + CleanupClosePushL(promptProcess); + TRequestStatus promptStatus; + promptProcess.Rendezvous(promptStatus); + if (promptStatus == KRequestPending) + { + promptProcess.Resume(); + User::WaitForRequest(promptStatus); + } + else + { + promptProcess.RendezvousCancel(promptStatus); + promptProcess.Kill(0); + ERR_PRINTF2(_L("Executing of prompt process failed with error %d"), promptStatus.Int()); + SetBlockResult(EFail); + } + CleanupStack::PopAndDestroy(); + } + else + { + ERR_PRINTF2(_L("Failed to create prompt process with error %d"), err); + SetBlockResult(EFail); + } + //get property change information. + User::WaitForRequest(substatus); + if (substatus!=KRequestPending) + { + property.Get(KMyPropertyCat,key,actualKey); + INFO_PRINTF2(_L("property.Get %d"), actualKey); + } + err=RProperty::Delete(KMyPropertyCat,key); + if (err!=KErrNotFound) + User::LeaveIfError(err); + property.Close(); + if(actualKey != expectedKey) + { + ERR_PRINTF3(_L("expectedKey=%d pressed key=%d"), expectedKey, actualKey); + SetBlockResult(EFail); + } + } + +