sl@0: // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Base classes used for building window server test code sl@0: // sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include "testbase.h" sl@0: sl@0: EXPORT_C TSpriteCreateParams::TSpriteCreateParams(TSize aSize,TPoint aOffset,CTSpriteBase::TSpriteDrawFunction aDrawFunc, sl@0: TAny *aDrawFuncParam,TBool aMask,CGraphicsContext::TDrawMode aDrawMode) : sl@0: iSize(aSize), sl@0: iOffset(aOffset), sl@0: iDrawFunc(aDrawFunc), sl@0: iDrawFuncParam(aDrawFuncParam), sl@0: iMask(aMask), sl@0: iDrawMode(aDrawMode), sl@0: iInterval(0) sl@0: {} sl@0: sl@0: EXPORT_C TSpriteCreateParams::TSpriteCreateParams() : sl@0: iDrawFunc(NULL), sl@0: iDrawMode(CGraphicsContext::EDrawModePEN), sl@0: iInterval(0) sl@0: {} sl@0: sl@0: void CTSpriteBase::CreateBitmapL(CFbsBitmap *&aBitmap, CFbsBitmapDevice *&aBitmapDevice, TSpriteCreateParams *aParams, TBool aDoMask) sl@0: { sl@0: if (aBitmap==NULL) sl@0: { sl@0: aBitmap=new(ELeave) CFbsBitmap(); sl@0: User::LeaveIfError(aBitmap->Create(aParams->iSize,EGray4)); sl@0: } sl@0: aBitmapDevice=CFbsBitmapDevice::NewL(aBitmap); sl@0: CFbsBitGc *gc=CFbsBitGc::NewL(); sl@0: gc->Activate(aBitmapDevice); sl@0: aParams->iDrawFunc(gc,0,aParams->iSize,aDoMask,aParams->iDrawFuncParam); sl@0: delete gc; sl@0: } sl@0: sl@0: EXPORT_C void CTSpriteBase::RedrawL(CFbsBitmap *&aBitmap, CFbsBitmap *&aMaskBitmap, TSpriteCreateParams *aParams) sl@0: { sl@0: CFbsBitmapDevice *bitmapDevice=NULL; sl@0: TRAPD(err,CreateBitmapL(aBitmap,bitmapDevice,aParams,EFalse)); sl@0: if (err==KErrNone) sl@0: { sl@0: delete bitmapDevice; sl@0: bitmapDevice=NULL; sl@0: if (aMaskBitmap) sl@0: { sl@0: TRAP(err,CreateBitmapL(aMaskBitmap,bitmapDevice,aParams,ETrue)); sl@0: delete bitmapDevice; sl@0: } sl@0: SpriteBase().UpdateMember(0); sl@0: } sl@0: User::LeaveIfError(err); sl@0: } sl@0: sl@0: EXPORT_C void CTSpriteBase::UpdateL(TInt aIndex, TSpriteCreateParams *aParams) sl@0: { sl@0: CFbsBitmap *bitmap=NULL; sl@0: CFbsBitmapDevice *bitmapDevice=NULL; sl@0: TRAPD(err,CreateBitmapL(bitmap,bitmapDevice,aParams,EFalse)); sl@0: if (err==KErrNone) sl@0: { sl@0: delete bitmapDevice; sl@0: bitmapDevice=NULL; sl@0: CFbsBitmap *mask=NULL; sl@0: if (aParams->iMask) sl@0: TRAP(err,CreateBitmapL(mask,bitmapDevice,aParams,ETrue)); sl@0: if (err==KErrNone) sl@0: { sl@0: TSpriteMember sprite; sl@0: sprite.iBitmap=bitmap; sl@0: sprite.iMaskBitmap=mask; sl@0: sprite.iInvertMask=EFalse; sl@0: sprite.iDrawMode=aParams->iDrawMode; sl@0: sprite.iInterval=aParams->iInterval; sl@0: sprite.iOffset=aParams->iOffset; sl@0: err=SpriteBase().UpdateMember(aIndex,sprite); sl@0: } sl@0: delete mask; sl@0: } sl@0: delete bitmap; sl@0: delete bitmapDevice; sl@0: User::LeaveIfError(err); sl@0: } sl@0: sl@0: EXPORT_C CTSprite::CTSprite(RWsSession &aWs) : iSprite(aWs) sl@0: { sl@0: } sl@0: sl@0: EXPORT_C CTSprite::~CTSprite() sl@0: { sl@0: iSprite.Close(); sl@0: } sl@0: sl@0: EXPORT_C RWsSpriteBase &CTSprite::SpriteBase() sl@0: { sl@0: return(iSprite); sl@0: } sl@0: sl@0: EXPORT_C RWsSprite &CTSprite::Sprite() sl@0: { sl@0: return(iSprite); sl@0: } sl@0: sl@0: EXPORT_C void CTSprite::ConstructL(RWindowTreeNode &aWindow, const TPoint &aPos, TInt aCount, TSpriteCreateParams *aParams, TInt aFlags) sl@0: { sl@0: User::LeaveIfError(iSprite.Construct(aWindow,aPos,aFlags)); sl@0: for(TInt index=0;indexiMask) sl@0: TRAP(err,CreateBitmapL(mask,bitmapDevice,aParams,ETrue)); sl@0: if (err==KErrNone) sl@0: { sl@0: TSpriteMember sprite; sl@0: sprite.iBitmap=bitmap; sl@0: sprite.iMaskBitmap=mask; sl@0: sprite.iInvertMask=EFalse; sl@0: sprite.iDrawMode=aParams->iDrawMode; sl@0: sprite.iOffset=aParams->iOffset; sl@0: sprite.iInterval=aParams->iInterval; sl@0: err=iSprite.AppendMember(sprite); sl@0: } sl@0: } sl@0: delete mask; sl@0: delete bitmap; sl@0: delete bitmapDevice; sl@0: User::LeaveIfError(err); sl@0: } sl@0: User::LeaveIfError(iSprite.Activate()); sl@0: } sl@0: sl@0: EXPORT_C CTPointerCursor::CTPointerCursor(RWsSession &aWs) : iCursor(aWs) sl@0: { sl@0: } sl@0: sl@0: EXPORT_C CTPointerCursor::~CTPointerCursor() sl@0: { sl@0: iCursor.Close(); sl@0: } sl@0: sl@0: EXPORT_C RWsSpriteBase &CTPointerCursor::SpriteBase() sl@0: { sl@0: return(iCursor); sl@0: } sl@0: sl@0: EXPORT_C RWsPointerCursor &CTPointerCursor::PointerCursor() sl@0: { sl@0: return(iCursor); sl@0: } sl@0: sl@0: EXPORT_C void CTPointerCursor::ConstructL(TInt aFlags) sl@0: { sl@0: User::LeaveIfError(iCursor.Construct(aFlags)); sl@0: TSpriteMember sprite; sl@0: sprite.iBitmap=NULL; sl@0: User::LeaveIfError(iCursor.AppendMember(sprite)); sl@0: } sl@0: sl@0: EXPORT_C void CTPointerCursor::ConstructL(TInt aCount, TSpriteCreateParams *aParams, TInt aFlags) sl@0: { sl@0: CFbsBitmap *bitmap=NULL; sl@0: CFbsBitmap *mask=NULL; sl@0: TRAPD(err,ConstructL(aCount, aParams, aFlags, bitmap, mask)); sl@0: delete bitmap; sl@0: delete mask; sl@0: User::LeaveIfError(err); sl@0: } sl@0: sl@0: EXPORT_C void CTPointerCursor::ConstructL(TInt aCount, TSpriteCreateParams *aParams, TInt aFlags, CFbsBitmap *&aBitmap, CFbsBitmap *&aMaskBitmap) sl@0: { sl@0: User::LeaveIfError(iCursor.Construct(aFlags)); sl@0: for(TInt index=0;indexiMask) sl@0: TRAP(err,CreateBitmapL(aMaskBitmap,bitmapDevice,aParams,ETrue)); sl@0: if (err==KErrNone) sl@0: { sl@0: TSpriteMember sprite; sl@0: sprite.iBitmap=aBitmap; sl@0: sprite.iMaskBitmap=aMaskBitmap; sl@0: sprite.iInvertMask=EFalse; sl@0: sprite.iDrawMode=aParams->iDrawMode; sl@0: sprite.iInterval=aParams->iInterval; sl@0: sprite.iOffset=aParams->iOffset; sl@0: err=iCursor.AppendMember(sprite); sl@0: } sl@0: } sl@0: delete bitmapDevice; sl@0: bitmapDevice=NULL; sl@0: User::LeaveIfError(err); sl@0: } sl@0: User::LeaveIfError(iCursor.Activate()); sl@0: }