Fix def files so that the implementation agnostic interface definition has no non-standards defined entry points, and change the eglrefimpl specific implementation to place its private entry points high up in the ordinal order space in the implementation region, not the standards based entrypoints region.
// 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 <e32std.h>
#include <hal.h>
#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;y<aSize.iHeight;y++)
{
TInt xfact=aSize.iWidth*y/aSize.iHeight;
aGc->DrawLine(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;ii<eNumPointerCursors;++ii)
{
delete iCursors[ii];
delete iBitmaps[ii];
}
delete iGroup1;
delete iGroup2;
}
void CPointerCursorTest::ConstructL()
{
TSize size=Client()->iScreen->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;ii<eNumPointerCursors;++ii)
{
bitmap=NULL;
iBitmaps[ii]=new(ELeave) CFbsBitmap();
User::LeaveIfError(iBitmaps[ii]->Create(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);
}
}