diff -r bf7481649c98 -r 2717213c588a windowing/windowserver/test/tman/TMPNTCUR.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/test/tman/TMPNTCUR.CPP Tue Jun 22 15:21:29 2010 +0300 @@ -0,0 +1,677 @@ +// Copyright (c) 1999-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: +// Tests for various pointer cursors on different windows +// +// + +#include +#include +#include "W32STD.H" +#include "../tlib/testbase.h" +#include "TMAN.H" + +class CPointerCursorWindow : public CTWin + { +public: + ~CPointerCursorWindow(); + void SetChild(CPointerCursorWindow* aChild); + inline CPointerCursorWindow* Child() {return iChild;} + inline void SetBitmap(CFbsBitmap* aBitmap,TBool aTop=ETrue) {iBitmap=aBitmap;iTop=aTop;} + void SetPointerCursor(CTPointerCursor* aCursor); + //Virtual function from CTBaseWin + void SetUpL(TPoint aPos,TSize aSize,CTWinBase *aParent,CWindowGc &aGc); + void Draw(); + void PointerL(const TPointerEvent &aPointer,const TTime &aTime); +private: + CPointerCursorWindow* iChild; + CFbsBitmap* iBitmap; + TBool iTop; + }; + +class CPointerCursorWindowGroup : public CTWindowGroup + { +public: + CPointerCursorWindowGroup(CTClient *aClient); + void SetPointerCursor(CTPointerCursor* aCursor); + void ConstructL(); + }; + +class CStatusWindow : public CTTitledWindow + { +public: + ~CStatusWindow(); + void Construct(CTestBase* aTest); + void DoDraw(); + //virtual functions from CTWinBase overridden by CTBaseWin + void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); + //virtual functions from CTBaseWin + void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); + void PointerL(const TPointerEvent &aPointer,const TTime &aTime); + //virtual function from CTBaseWin overridden by CTTitledWindow + void Draw(); +private: + void UpdateString1(); + void UpdateString2(); + void UpdateString3(); + void ChangeXyInputType(); + void ChangePointerCursorMode(); +private: + CTestBase* iTest; + TBuf<16> iString1; + TBuf<16> iString2; + TBuf<16> iString3; + TBuf<32> iString4; + TRect iRect1; + TRect iRect2; + TRect iRect3; + TRect iRect4; + TXYInputType iXyInputType; + TXYInputType iOriginalXyInputType; + TPointerCursorMode iMode; + TPointerCursorMode iOriginalMode; + TBool iSimulatedPenDown; + TBool iUpdateNeeded; + TBool iExit; + }; + +class CPointerCursorTest : public CTestBase + { + enum {eWindowGap=3,eChildWindowGap=2}; + enum {eNumPointerCursors=7}; +public: + CPointerCursorTest(); + ~CPointerCursorTest(); + TestState DoTestL(); + void ConstructL(); +private: + CPointerCursorWindow *CreateWindowL(TInt aNum,TRect aLocation,CTWinBase *aGroup); + void CreatePointerCursorsL(); + void CreateWindowsL(TSize aArea); +private: + TSize iWinSize; + TInt iState; + CStatusWindow *iInfoWindow; + CPointerCursorWindowGroup *iGroup1; + CPointerCursorWindowGroup *iGroup2; + CPointerCursorWindow *iWindows[6]; + CTPointerCursor *iCursors[eNumPointerCursors]; + CFbsBitmap *iBitmaps[eNumPointerCursors]; + }; + + +/*CPointerCursorWindow*/ + +CPointerCursorWindow::~CPointerCursorWindow() + { + delete iChild; + } + +void CPointerCursorWindow::SetChild(CPointerCursorWindow* aChild) + { + iChild=aChild; + iWin.SetShadowDisabled(ETrue); + } + +void CPointerCursorWindow::SetPointerCursor(CTPointerCursor* aCursor) + { + iWin.SetCustomPointerCursor(aCursor->PointerCursor()); + } + +void CPointerCursorWindow::SetUpL(TPoint aPos,TSize aSize,CTWinBase *aParent,CWindowGc &aGc) + { + CTWin::SetUpL(aPos,aSize,aParent,aGc); + iWin.SetShadowDisabled(ETrue); + iWin.SetPointerGrab(EFalse); + } + +void CPointerCursorWindow::Draw() + { + iGc->Reset(); + iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + iGc->DrawRect(Size()); + if (iBitmap) + { + TPoint point(3,3); + if (!iTop) + point.iY=Size().iHeight-iBitmap->SizeInPixels().iHeight-3; + iGc->BitBlt(point,iBitmap); + } + } + +void CPointerCursorWindow::PointerL(const TPointerEvent&,const TTime&) + { + } + + +/*CPointerCursorWindowGroup*/ + +CPointerCursorWindowGroup::CPointerCursorWindowGroup(CTClient *aClient) + :CTWindowGroup(aClient) + {} + +void CPointerCursorWindowGroup::ConstructL() + { + CTWindowGroup::ConstructL(); + iGroupWin.EnableReceiptOfFocus(EFalse); + } + +void CPointerCursorWindowGroup::SetPointerCursor(CTPointerCursor* aCursor) + { + iGroupWin.SetCustomPointerCursor(aCursor->PointerCursor()); + } + + +/*CStatusWindow*/ + +CStatusWindow::~CStatusWindow() + { + Client()->iWs.SetPointerCursorMode(iOriginalMode); +#if defined(__WINS__) + Client()->iWs.SimulateXyInputType(iOriginalXyInputType); +#endif + } + +void CStatusWindow::Construct(CTestBase* aTest) + { + _LIT(Title,"StatusWindow"); + _LIT(String4,"Click here to finish"); + iTest=aTest; + TWindowTitle title(Title); + SetTitle(title); + TInt yy=iTitleHeight+iFont->HeightInPixels()+7; + iRect1.SetRect(3,iTitleHeight+5,iSize.iWidth-1,yy); + TInt yy1=yy+iFont->HeightInPixels()+2; + iRect2.SetRect(3,yy+3,iSize.iWidth-1,yy1); + TInt yy2=yy1+iFont->HeightInPixels()+2; + iRect3.SetRect(3,yy1+3,iSize.iWidth-1,yy2); + iRect4.SetRect(3,yy2+3,iSize.iWidth-1,yy2+iFont->HeightInPixels()+2); + TMachineInfoV1Buf machineInfo; + UserHal::MachineInfo(machineInfo); + iXyInputType=machineInfo().iXYInputType; + iOriginalXyInputType=iXyInputType; + iSimulatedPenDown=EFalse; + // + iString3.Copy(KNullDesC); + if (iXyInputType==EXYInputDeltaMouse) + { + if (HAL::Get(HALData::EMouseState,iSimulatedPenDown)==KErrNone) + UpdateString3(); + } + UpdateString1(); + iMode=Client()->iWs.PointerCursorMode(); + iOriginalMode=iMode; + UpdateString2(); + iUpdateNeeded=EFalse; + iString4.Copy(String4); + iExit=EFalse; + } + +void CStatusWindow::SetUpL(TPoint aPos,TSize aSize,CTWinBase *aParent,CWindowGc &aGc) + { + CTTitledWindow::SetUpL(aPos,aSize,aParent,aGc); + } + +void CStatusWindow::WinKeyL(const TKeyEvent &aKey,const TTime&) + { + switch(aKey.iCode) + { + case EKeyEscape: + iTest->Request(); + break; + case 'M': + case 'm': + if (iXyInputType==EXYInputDeltaMouse) + { + if (HAL::Set(HALData::EMouseState,!iSimulatedPenDown)==KErrNone) + { + iSimulatedPenDown=!iSimulatedPenDown; + UpdateString3(); + DoDraw(); + } + } + break; + #if defined(__WINS__) + case 'I': + case 'i': + case '1': + ChangeXyInputType(); + Client()->iWs.SimulateXyInputType(iXyInputType); + break; + #endif + case 'C': + case 'c': + case '2': + ChangePointerCursorMode(); + Client()->iWs.SetPointerCursorMode(iMode); + break; + default:; + } + } + +void CStatusWindow::PointerL(const TPointerEvent &aPointer,const TTime &aTime) + { +#if defined(__WINS__) + if (iRect1.Contains(aPointer.iPosition)) + { + if (aPointer.iType==TPointerEvent::EButton1Down) + ChangeXyInputType(); + } + else +#endif + if (iRect2.Contains(aPointer.iPosition)) + { + if (aPointer.iType==TPointerEvent::EButton1Down) + ChangePointerCursorMode(); + } + else if (iRect4.Contains(aPointer.iPosition)) + iExit=ETrue; + else + CTTitledWindow::PointerL(aPointer,aTime); + if ((iUpdateNeeded || iExit) && aPointer.iType==TPointerEvent::EButton1Up) + { + if (iExit) + iTest->Request(); + else + { + Client()->iWs.SetPointerCursorMode(iMode); + #if defined(__WINS__) + Client()->iWs.SimulateXyInputType(iXyInputType); + #endif + Client()->iWs.Flush(); + iUpdateNeeded=EFalse; + } + } + } + +void CStatusWindow::Draw() + { + CTTitledWindow::Draw(); + TInt ascent=iFont->AscentInPixels()+1; + iGc->DrawText(iString1,iRect1,ascent,CGraphicsContext::ELeft); + iGc->DrawText(iString2,iRect2,ascent,CGraphicsContext::ELeft); + iGc->DrawText(iString3,iRect3,ascent,CGraphicsContext::ELeft); + iGc->DrawText(iString4,iRect4,ascent,CGraphicsContext::ELeft); + } + +void CStatusWindow::DoDraw() + { + iGc->Activate(iWin); + iGc->UseFont((CFont *)iFont); + Draw(); + iGc->Deactivate(); + } + +void CStatusWindow::UpdateString1() + { + _LIT(Text0,"No Pointer"); + _LIT(Text1,"Pen"); + _LIT(Text2,"Mouse"); + _LIT(Text3,"Relative Mouse"); + switch (iXyInputType) + { + case EXYInputNone: + iString1.Copy(Text0); + break; + case EXYInputPointer: + iString1.Copy(Text1); + break; + case EXYInputMouse: + iString1.Copy(Text2); + break; + case EXYInputDeltaMouse: + iString1.Copy(Text3); + break; + } + } + +void CStatusWindow::UpdateString2() + { + _LIT(Text0,"None"); + _LIT(Text1,"Fixed"); + _LIT(Text2,"Normal"); + _LIT(Text3,"Window"); + switch (iMode) + { + case EPointerCursorNone: + iString2.Copy(Text0); + break; + case EPointerCursorFixed: + iString2.Copy(Text1); + break; + case EPointerCursorNormal: + iString2.Copy(Text2); + break; + case EPointerCursorWindow: + iString2.Copy(Text3); + break; + } + } + +void CStatusWindow::UpdateString3() + { + if (iSimulatedPenDown) + { + _LIT(TextD,"Sim Pen Down"); + iString3.Copy(TextD); + } + else + { + _LIT(TextU,"Sim Pen Up"); + iString3.Copy(TextU); + } + } + +void CStatusWindow::ChangeXyInputType() + { + if (iXyInputType==EXYInputMouse) + iXyInputType=EXYInputPointer; + else if (iXyInputType==EXYInputPointer) + iXyInputType=EXYInputMouse; + UpdateString1(); + DoDraw(); + iUpdateNeeded=ETrue; + } + +void CStatusWindow::ChangePointerCursorMode() + { + TInt mode=(iMode+1)%(EPointerCursorLastMode+1); + iMode=STATIC_CAST(TPointerCursorMode,mode); + UpdateString2(); + DoDraw(); + iUpdateNeeded=ETrue; + } + + +/*Sprite Drawing Functions*/ + +#if defined(__WINS__) + #define DRAW_COLOR 1 +#else + #define DRAW_COLOR 0 +#endif + +void DrawCross(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *aLineWidth) + { + TInt halfLineWidth=(*STATIC_CAST(TInt*,aLineWidth)+1)/2; + TInt lineWidth=2*halfLineWidth+1; //Must be odd + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetPenStyle(CGraphicsContext::ESolidPen); + aGc->SetPenColor(TRgb::Gray4(aDoMask ? 3 : 0)); + aGc->SetPenSize(TSize(lineWidth,lineWidth)); + aGc->DrawLine(TPoint(halfLineWidth,halfLineWidth),TPoint(aSize.iWidth-lineWidth,aSize.iHeight-lineWidth)); + aGc->DrawLine(TPoint(halfLineWidth,aSize.iHeight-lineWidth),TPoint(aSize.iWidth-lineWidth,halfLineWidth)); + } + +void DrawArrow(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *aLineWidth) + { + TInt lineWidth=*STATIC_CAST(TInt*,aLineWidth); + TInt halfLineWidth=(lineWidth-1)/2; + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetPenStyle(CGraphicsContext::ESolidPen); + aGc->SetPenColor(TRgb::Gray4(aDoMask ? 3 : 0)); + aGc->SetPenSize(TSize(1,1)); + aGc->DrawLine(TPoint(0,0),TPoint(lineWidth,0)); + aGc->DrawLine(TPoint(0,0),TPoint(0,lineWidth)); + aGc->SetPenSize(TSize(lineWidth,lineWidth)); + aGc->DrawLine(TPoint(halfLineWidth,halfLineWidth),TPoint(aSize.iWidth-halfLineWidth-1,aSize.iHeight-halfLineWidth-1)); + aGc->DrawLine(TPoint(halfLineWidth,halfLineWidth),TPoint(aSize.iWidth/2,halfLineWidth)); + aGc->DrawLine(TPoint(halfLineWidth,halfLineWidth),TPoint(halfLineWidth,aSize.iHeight/2)); + } + +void DrawSquare(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *) + { + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 3 : DRAW_COLOR)); + aGc->DrawRect(TRect(1,1,aSize.iWidth-1,aSize.iHeight-1)); + } + +void DrawCircle(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *) + { + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 3 : 1)); + aGc->DrawEllipse(TRect(1,1,aSize.iWidth-1,aSize.iHeight-1)); + } + +void DrawTriangle(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *) + { + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetPenStyle(CGraphicsContext::ESolidPen); + aGc->SetPenColor(TRgb::Gray4(aDoMask ? 3 : DRAW_COLOR)); + aGc->SetPenSize(TSize(1,1)); + for(TInt y=0;yDrawLine(TPoint(aSize.iWidth-xfact-1,y),TPoint(aSize.iWidth-1,y)); + } + } + +void DrawOpenSquare(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *aLineWidth) + { + TInt halfLineWidth=*STATIC_CAST(TInt*,aLineWidth)/2; + TInt lineWidth=2*halfLineWidth+1; //Must be odd + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetBrushStyle(CGraphicsContext::ENullBrush); + aGc->SetPenStyle(CGraphicsContext::ESolidPen); + aGc->SetPenColor(TRgb::Gray4(aDoMask ? 3 : DRAW_COLOR)); + aGc->SetPenSize(TSize(lineWidth,lineWidth)); + TPoint botRig(aSize.iWidth-aSize.iWidth/4-1,aSize.iHeight-aSize.iHeight/4-1); + aGc->DrawRect(TRect(aSize.iWidth/4,aSize.iHeight/4,botRig.iX+1,botRig.iY+1)); + aGc->DrawLine(TPoint(halfLineWidth,halfLineWidth),TPoint(aSize.iWidth/4-halfLineWidth,aSize.iHeight/4-halfLineWidth)); + aGc->DrawLine(TPoint(aSize.iWidth-1-halfLineWidth,halfLineWidth),TPoint(botRig.iX+halfLineWidth,aSize.iHeight/4-halfLineWidth)); + aGc->DrawLine(TPoint(aSize.iWidth-1-halfLineWidth,aSize.iHeight-1-halfLineWidth),TPoint(botRig.iX+halfLineWidth,botRig.iY+halfLineWidth)); + aGc->DrawLine(TPoint(halfLineWidth,aSize.iHeight-1-halfLineWidth),TPoint(aSize.iWidth/4-halfLineWidth,botRig.iY+halfLineWidth)); + } + +void DrawOpenCircle(CBitmapContext *aGc,TInt , const TSize &aSize, TBool aDoMask, TAny *aLineWidth) + { + TInt halfLineWidth=*STATIC_CAST(TInt*,aLineWidth)/2; + TInt lineWidth=2*halfLineWidth+1; //Must be odd + aGc->SetBrushColor(TRgb::Gray4(aDoMask ? 0 : 3)); + aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); + aGc->SetPenStyle(CGraphicsContext::ENullPen); + aGc->DrawRect(TRect(aSize)); + aGc->SetBrushStyle(CGraphicsContext::ENullBrush); + aGc->SetPenStyle(CGraphicsContext::ESolidPen); + aGc->SetPenColor(TRgb::Gray4(aDoMask ? 3 : DRAW_COLOR)); + aGc->SetPenSize(TSize(lineWidth,lineWidth)); + TPoint botRig(aSize.iWidth-aSize.iWidth/4-1,aSize.iHeight-aSize.iHeight/4-1); + aGc->DrawEllipse(TRect(aSize.iWidth/4+1,aSize.iHeight/4+1,botRig.iX+1,botRig.iY+1)); + aGc->DrawLine(TPoint(aSize.iWidth/2,1+halfLineWidth),TPoint(aSize.iWidth/2,aSize.iHeight/4+1-halfLineWidth)); + aGc->DrawLine(TPoint(aSize.iWidth/2,aSize.iHeight-1-halfLineWidth),TPoint(aSize.iWidth/2,botRig.iY+halfLineWidth)); + aGc->DrawLine(TPoint(1+halfLineWidth,aSize.iWidth/2),TPoint(aSize.iWidth/4+1-halfLineWidth,aSize.iHeight/2)); + aGc->DrawLine(TPoint(aSize.iWidth-1-halfLineWidth,aSize.iHeight/2),TPoint(botRig.iX+halfLineWidth,aSize.iWidth/2)); + } + + +/*CPointerCursorTest*/ + +GLDEF_C CTestBase *CreatePointerCursorTest() + { + return(new(ELeave) CPointerCursorTest()); + } + +CPointerCursorTest::CPointerCursorTest() : CTestBase(_L("PointerCursor")) + {} + +CPointerCursorTest::~CPointerCursorTest() + { + TInt ii; + Client()->iGroup->SetCurrentWindow(NULL); + delete iInfoWindow; + for(ii=0;ii<6;++ii) + { + delete iWindows[ii]; + } + for(ii=0;iiiScreen->SizeInPixels(); + TInt infoWidth=Min(210,5*size.iWidth/12); + size.iWidth=Max(Min(415,size.iWidth-infoWidth),85); + iInfoWindow=new(ELeave) CStatusWindow(); + iInfoWindow->SetUpL(TPoint(size.iWidth,50),TSize(infoWidth,180),Client()->iGroup,*Client()->iGc); + Client()->iGroup->SetCurrentWindow(iInfoWindow); + iInfoWindow->Construct(this); + iGroup1=new(ELeave) CPointerCursorWindowGroup(Client()); + iGroup1->ConstructL(); + iGroup2=new(ELeave) CPointerCursorWindowGroup(Client()); + iGroup2->ConstructL(); + size.iWidth-=5; + CreateWindowsL(size); + CreatePointerCursorsL(); + iGroup1->SetPointerCursor(iCursors[0]); + iWindows[1]->SetBitmap(iBitmaps[0],EFalse); + iWindows[0]->SetPointerCursor(iCursors[1]); + iWindows[0]->SetBitmap(iBitmaps[1]); + iWindows[0]->Child()->SetPointerCursor(iCursors[2]); + iWindows[0]->Child()->SetBitmap(iBitmaps[2]); + iWindows[2]->SetPointerCursor(iCursors[3]); + iWindows[2]->SetBitmap(iBitmaps[3]); + iWindows[2]->Child()->Child()->SetPointerCursor(iCursors[4]); + iWindows[2]->Child()->Child()->SetBitmap(iBitmaps[4]); + iWindows[3]->Child()->SetPointerCursor(iCursors[5]); + iWindows[3]->Child()->SetBitmap(iBitmaps[5]); + iWindows[4]->SetPointerCursor(iCursors[6]); + iWindows[4]->SetBitmap(iBitmaps[6]); + } + +void CPointerCursorTest::CreateWindowsL(TSize aArea) + { + //TSize screenSize=Client()->iScreen->SizeInPixels(); + TInt height=eWindowGap+(aArea.iHeight-5*eWindowGap)/4; + TInt halfWidth=aArea.iWidth/2; + TRect rect(5,eWindowGap,halfWidth,height); + iWindows[0]=CreateWindowL(2,rect,iGroup1); + rect.Move(halfWidth,0); + iWindows[1]=CreateWindowL(2,rect,iGroup1); + rect.Move(-halfWidth,height); + rect.iBr.iX=aArea.iWidth; + iWindows[2]=CreateWindowL(4,rect,iGroup2); + rect.Move(0,height); + rect.iBr.iX=aArea.iWidth-11; + iWindows[3]=CreateWindowL(3,rect,iGroup2); + rect.Move(0,height); + rect.iBr.iX=halfWidth; + iWindows[4]=CreateWindowL(2,rect,iGroup2); + rect.Move(halfWidth,0); + iWindows[5]=CreateWindowL(2,rect,iGroup2); + } + +CPointerCursorWindow* CPointerCursorTest::CreateWindowL(TInt aNum,TRect aLocation,CTWinBase *aGroup) + { + CPointerCursorWindow* firstWin=NULL; + CPointerCursorWindow* parent=NULL; + CPointerCursorWindow* win; + TInt xInc=aLocation.Width()/aNum-eChildWindowGap; + TInt ii; + for (ii=aNum;ii>0;ii--) + { + win=new(ELeave) CPointerCursorWindow(); + CleanupStack::PushL(win); + win->SetUpL(aLocation.iTl,aLocation.Size(),aGroup,*Client()->iGc); + if (!parent) + firstWin=win; + else + { + parent->SetChild(win); + CleanupStack::Pop(); + } + aLocation.iBr=TPoint(-eChildWindowGap,-eChildWindowGap)+aLocation.Size(); + aLocation.iTl.iX=xInc; + aLocation.iTl.iY=eChildWindowGap; + aGroup=win; + parent=win; + } + CleanupStack::Pop(); + return firstWin; + } + +void CPointerCursorTest::CreatePointerCursorsL() + { + const TSize size(32,32); + TSpriteCreateParams params(size,TPoint(-16,-16),DrawSquare); + TSpriteCreateParams paramarray[eNumPointerCursors]; + TInt lineWidth1=3; + TInt lineWidth2=5; + paramarray[2]=params; + params.iDrawFunc=DrawCircle; + paramarray[3]=params; + params.iDrawFunc=DrawOpenSquare; + params.iDrawFuncParam=&lineWidth1; + paramarray[5]=params; + params.iDrawFunc=DrawOpenCircle; + paramarray[6]=params; + params.iOffset=TPoint(0,0); + params.iDrawFunc=DrawArrow; + params.iDrawFuncParam=&lineWidth2; + paramarray[1]=params; + params.iOffset.iX=-31; + params.iDrawFunc=DrawTriangle; + paramarray[4]=params; + params.iOffset=TPoint(-15,-15); + params.iDrawFunc=DrawCross; + paramarray[0]=params; + CFbsBitmap *bitmap; + TInt ii,jj; + TDisplayMode mode=Client()->iWs.GetDefModeMaxNumColors(ii,jj); + for (ii=0;iiCreate(size,mode)); + iCursors[ii]=new(ELeave) CTPointerCursor(Client()->iWs); + iCursors[ii]->ConstructL(1,¶marray[ii],0,iBitmaps[ii],bitmap); + delete bitmap; + } + } + +TestState CPointerCursorTest::DoTestL() + { + switch(iState) + { + case 0: + LogSubTest(_L("Pointer Cursor"),1); + TestL(ETrue); + iState++; + return(EContinue); + default: + return(EFinished); + } + }