1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/windowing/windowserver/test/tlib/TLSPRITE.CPP Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,223 @@
1.4 +// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// Base classes used for building window server test code
1.18 +//
1.19 +//
1.20 +
1.21 +#include <e32std.h>
1.22 +#include <w32std.h>
1.23 +#include <e32svr.h>
1.24 +#include "testbase.h"
1.25 +
1.26 +EXPORT_C TSpriteCreateParams::TSpriteCreateParams(TSize aSize,TPoint aOffset,CTSpriteBase::TSpriteDrawFunction aDrawFunc,
1.27 + TAny *aDrawFuncParam,TBool aMask,CGraphicsContext::TDrawMode aDrawMode) :
1.28 + iSize(aSize),
1.29 + iOffset(aOffset),
1.30 + iDrawFunc(aDrawFunc),
1.31 + iDrawFuncParam(aDrawFuncParam),
1.32 + iMask(aMask),
1.33 + iDrawMode(aDrawMode),
1.34 + iInterval(0)
1.35 + {}
1.36 +
1.37 +EXPORT_C TSpriteCreateParams::TSpriteCreateParams() :
1.38 + iDrawFunc(NULL),
1.39 + iDrawMode(CGraphicsContext::EDrawModePEN),
1.40 + iInterval(0)
1.41 + {}
1.42 +
1.43 +void CTSpriteBase::CreateBitmapL(CFbsBitmap *&aBitmap, CFbsBitmapDevice *&aBitmapDevice, TSpriteCreateParams *aParams, TBool aDoMask)
1.44 + {
1.45 + if (aBitmap==NULL)
1.46 + {
1.47 + aBitmap=new(ELeave) CFbsBitmap();
1.48 + User::LeaveIfError(aBitmap->Create(aParams->iSize,EGray4));
1.49 + }
1.50 + aBitmapDevice=CFbsBitmapDevice::NewL(aBitmap);
1.51 + CFbsBitGc *gc=CFbsBitGc::NewL();
1.52 + gc->Activate(aBitmapDevice);
1.53 + aParams->iDrawFunc(gc,0,aParams->iSize,aDoMask,aParams->iDrawFuncParam);
1.54 + delete gc;
1.55 + }
1.56 +
1.57 +EXPORT_C void CTSpriteBase::RedrawL(CFbsBitmap *&aBitmap, CFbsBitmap *&aMaskBitmap, TSpriteCreateParams *aParams)
1.58 + {
1.59 + CFbsBitmapDevice *bitmapDevice=NULL;
1.60 + TRAPD(err,CreateBitmapL(aBitmap,bitmapDevice,aParams,EFalse));
1.61 + if (err==KErrNone)
1.62 + {
1.63 + delete bitmapDevice;
1.64 + bitmapDevice=NULL;
1.65 + if (aMaskBitmap)
1.66 + {
1.67 + TRAP(err,CreateBitmapL(aMaskBitmap,bitmapDevice,aParams,ETrue));
1.68 + delete bitmapDevice;
1.69 + }
1.70 + SpriteBase().UpdateMember(0);
1.71 + }
1.72 + User::LeaveIfError(err);
1.73 + }
1.74 +
1.75 +EXPORT_C void CTSpriteBase::UpdateL(TInt aIndex, TSpriteCreateParams *aParams)
1.76 + {
1.77 + CFbsBitmap *bitmap=NULL;
1.78 + CFbsBitmapDevice *bitmapDevice=NULL;
1.79 + TRAPD(err,CreateBitmapL(bitmap,bitmapDevice,aParams,EFalse));
1.80 + if (err==KErrNone)
1.81 + {
1.82 + delete bitmapDevice;
1.83 + bitmapDevice=NULL;
1.84 + CFbsBitmap *mask=NULL;
1.85 + if (aParams->iMask)
1.86 + TRAP(err,CreateBitmapL(mask,bitmapDevice,aParams,ETrue));
1.87 + if (err==KErrNone)
1.88 + {
1.89 + TSpriteMember sprite;
1.90 + sprite.iBitmap=bitmap;
1.91 + sprite.iMaskBitmap=mask;
1.92 + sprite.iInvertMask=EFalse;
1.93 + sprite.iDrawMode=aParams->iDrawMode;
1.94 + sprite.iInterval=aParams->iInterval;
1.95 + sprite.iOffset=aParams->iOffset;
1.96 + err=SpriteBase().UpdateMember(aIndex,sprite);
1.97 + }
1.98 + delete mask;
1.99 + }
1.100 + delete bitmap;
1.101 + delete bitmapDevice;
1.102 + User::LeaveIfError(err);
1.103 + }
1.104 +
1.105 +EXPORT_C CTSprite::CTSprite(RWsSession &aWs) : iSprite(aWs)
1.106 + {
1.107 + }
1.108 +
1.109 +EXPORT_C CTSprite::~CTSprite()
1.110 + {
1.111 + iSprite.Close();
1.112 + }
1.113 +
1.114 +EXPORT_C RWsSpriteBase &CTSprite::SpriteBase()
1.115 + {
1.116 + return(iSprite);
1.117 + }
1.118 +
1.119 +EXPORT_C RWsSprite &CTSprite::Sprite()
1.120 + {
1.121 + return(iSprite);
1.122 + }
1.123 +
1.124 +EXPORT_C void CTSprite::ConstructL(RWindowTreeNode &aWindow, const TPoint &aPos, TInt aCount, TSpriteCreateParams *aParams, TInt aFlags)
1.125 + {
1.126 + User::LeaveIfError(iSprite.Construct(aWindow,aPos,aFlags));
1.127 + for(TInt index=0;index<aCount;index++,aParams++)
1.128 + {
1.129 + CFbsBitmap *bitmap=NULL;
1.130 + CFbsBitmap *mask=NULL;
1.131 + CFbsBitmapDevice *bitmapDevice=NULL;
1.132 + TRAPD(err,CreateBitmapL(bitmap,bitmapDevice,aParams,EFalse));
1.133 + if (err==KErrNone)
1.134 + {
1.135 + delete bitmapDevice;
1.136 + bitmapDevice=NULL;
1.137 + if (aParams->iMask)
1.138 + TRAP(err,CreateBitmapL(mask,bitmapDevice,aParams,ETrue));
1.139 + if (err==KErrNone)
1.140 + {
1.141 + TSpriteMember sprite;
1.142 + sprite.iBitmap=bitmap;
1.143 + sprite.iMaskBitmap=mask;
1.144 + sprite.iInvertMask=EFalse;
1.145 + sprite.iDrawMode=aParams->iDrawMode;
1.146 + sprite.iOffset=aParams->iOffset;
1.147 + sprite.iInterval=aParams->iInterval;
1.148 + err=iSprite.AppendMember(sprite);
1.149 + }
1.150 + }
1.151 + delete mask;
1.152 + delete bitmap;
1.153 + delete bitmapDevice;
1.154 + User::LeaveIfError(err);
1.155 + }
1.156 + User::LeaveIfError(iSprite.Activate());
1.157 + }
1.158 +
1.159 +EXPORT_C CTPointerCursor::CTPointerCursor(RWsSession &aWs) : iCursor(aWs)
1.160 + {
1.161 + }
1.162 +
1.163 +EXPORT_C CTPointerCursor::~CTPointerCursor()
1.164 + {
1.165 + iCursor.Close();
1.166 + }
1.167 +
1.168 +EXPORT_C RWsSpriteBase &CTPointerCursor::SpriteBase()
1.169 + {
1.170 + return(iCursor);
1.171 + }
1.172 +
1.173 +EXPORT_C RWsPointerCursor &CTPointerCursor::PointerCursor()
1.174 + {
1.175 + return(iCursor);
1.176 + }
1.177 +
1.178 +EXPORT_C void CTPointerCursor::ConstructL(TInt aFlags)
1.179 + {
1.180 + User::LeaveIfError(iCursor.Construct(aFlags));
1.181 + TSpriteMember sprite;
1.182 + sprite.iBitmap=NULL;
1.183 + User::LeaveIfError(iCursor.AppendMember(sprite));
1.184 + }
1.185 +
1.186 +EXPORT_C void CTPointerCursor::ConstructL(TInt aCount, TSpriteCreateParams *aParams, TInt aFlags)
1.187 + {
1.188 + CFbsBitmap *bitmap=NULL;
1.189 + CFbsBitmap *mask=NULL;
1.190 + TRAPD(err,ConstructL(aCount, aParams, aFlags, bitmap, mask));
1.191 + delete bitmap;
1.192 + delete mask;
1.193 + User::LeaveIfError(err);
1.194 + }
1.195 +
1.196 +EXPORT_C void CTPointerCursor::ConstructL(TInt aCount, TSpriteCreateParams *aParams, TInt aFlags, CFbsBitmap *&aBitmap, CFbsBitmap *&aMaskBitmap)
1.197 + {
1.198 + User::LeaveIfError(iCursor.Construct(aFlags));
1.199 + for(TInt index=0;index<aCount;index++,aParams++)
1.200 + {
1.201 + CFbsBitmapDevice *bitmapDevice=NULL;
1.202 + TRAPD(err,CreateBitmapL(aBitmap,bitmapDevice,aParams,EFalse));
1.203 + if (err==KErrNone)
1.204 + {
1.205 + delete bitmapDevice;
1.206 + bitmapDevice=NULL;
1.207 + if (aParams->iMask)
1.208 + TRAP(err,CreateBitmapL(aMaskBitmap,bitmapDevice,aParams,ETrue));
1.209 + if (err==KErrNone)
1.210 + {
1.211 + TSpriteMember sprite;
1.212 + sprite.iBitmap=aBitmap;
1.213 + sprite.iMaskBitmap=aMaskBitmap;
1.214 + sprite.iInvertMask=EFalse;
1.215 + sprite.iDrawMode=aParams->iDrawMode;
1.216 + sprite.iInterval=aParams->iInterval;
1.217 + sprite.iOffset=aParams->iOffset;
1.218 + err=iCursor.AppendMember(sprite);
1.219 + }
1.220 + }
1.221 + delete bitmapDevice;
1.222 + bitmapDevice=NULL;
1.223 + User::LeaveIfError(err);
1.224 + }
1.225 + User::LeaveIfError(iCursor.Activate());
1.226 + }