diff -r 2717213c588a -r 171fae344dd4 windowing/windowserver/tanim/ANIM.CPP --- a/windowing/windowserver/tanim/ANIM.CPP Tue Jun 22 15:21:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,438 +0,0 @@ -// Copyright (c) 1995-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: -// Test code to tun ANIMDLL.DLL -// -// - -#include -#include -#include -#include "../tlib/testbase.h" -#include "TANIM.H" -#include "ANIMDLL.H" - -#define NONEXISTENT_DLL_NAME _L("Z:\\NONEXISTENT.DLL") -#define ANIM_BITMAP _L("Z:\\WSTEST\\TANIM.MBM") -#define ANIM_DLL_NAME _L("ANIDLL.DLL") - -enum TAnimPanic - { - EAnimPanicBadLoadFailed, - }; - -class CTAnimClient; - -class TestAnim : public RAnim - { -public: - TestAnim(RAnimDll &aDll); - TInt Construct(RWindowBase &aWin,const TPoint &aPos,CFbsBitmap *aBit1,CFbsBitmap *aBit2,CFbsBitmap *aMask,TInt aInterval, CFbsFont *aFont); - void Set(const TPoint &aPos, TInt aInterval); - void TextPos(const TPoint &aPos); - void SetPolyRectL(const TRect &aRect); - void ToggleMask(); - }; - -class CTAnimWindow2 : public CTBlankWindow - { -public: - CTAnimWindow2(RAnimDll &aAnimDll); - ~CTAnimWindow2(); - void ConstructL(CTWinBase &parent, const TPoint &aPos, const TSize &aSize); - void ConstructExtLD(CTWinBase &aParent, const TPoint &aPos, const TSize &aSize); -private: - TestAnim iAnim; - CFbsBitmap iAnimBitmap1; - CFbsBitmap iAnimBitmap2; - }; - -class CTAnimWindow1 : public CTTitledWindow - { -public: - CTAnimWindow1(RAnimDll &aAnimDll); - ~CTAnimWindow1(); - void ConstructL(CTWinBase &parent); - void Draw(); - void AdjustAnimRect(TInt xMove,TInt yMove,TInt modifiers); - void AdjustPolyRectL(TInt xMove,TInt yMove,TInt modifiers); - void ToggleMask(); - TInt SubType(); -private: - TestAnim iAnim; - TPoint iAnimPos; - TRect iAnimPolyRect; - CFbsBitmap iAnimBitmap1; - CFbsBitmap iAnimBitmap2; - CFbsBitmap iMask; - }; - -class CTAnimWindowGroup : public CTWindowGroup - { -public: - CTAnimWindowGroup(CTClient *aClient); - void CursorKeyL(TInt xMove,TInt yMove,TInt modifiers); - void KeyL(const TKeyEvent &aKey, const TTime &aTime); - TInt iCursorMode; - }; - -class CTAnimClient : public CTClient - { -public: - CTAnimClient(); - ~CTAnimClient(); - void ConstructL(); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); - void ExitL(); - void ErrorTests(); - CTBaseWin *CreateTestWindowL(TPoint pos,TSize size,CTWinBase *parent, TInt aType); -private: - TInt iNum; - RAnimDll iAnimDll; - }; - -const TInt Xmove=8; -const TInt Ymove=6; - -void AnimPanic(TInt aPanic) - { - User::Panic(_L("ANIM"),aPanic); - } - -// -// Anim class -// - -TestAnim::TestAnim(RAnimDll &aDll) : RAnim(aDll) - { - } - -TInt TestAnim::Construct(RWindowBase &aWin, const TPoint &aPos, CFbsBitmap *aBit1,CFbsBitmap *aBit2,CFbsBitmap *aMask, TInt aInterval, CFbsFont *aFont) - { - TPckgBuf params; - params().pos=aPos; - params().interval=aInterval; - params().bit1=aBit1->Handle(); - params().bit2=aBit2->Handle(); - params().mask=aMask->Handle(); - params().font=aFont->Handle(); - return(RAnim::Construct(aWin,0,params)); - } - -void TestAnim::Set(const TPoint &aPos, TInt aInterval) - { - TPckgBuf params; - params().pos=aPos; - params().interval=aInterval; - Command(EADllOpcodeMove,params); - } - -void TestAnim::TextPos(const TPoint &aPos) - { - TPckgBuf params; - params()=aPos; - Command(EADllTextPos,params); - } - -void TestAnim::SetPolyRectL(const TRect &aRect) - { - TPckgC params(aRect); - User::LeaveIfError(CommandReply(EADllOpcodePolyLineRect,params)); - } - -void TestAnim::ToggleMask() - { - Command(EADllToggleBitmapMask); - } - -// -// Individual window sub-classes -// - -CTAnimWindow1::CTAnimWindow1(RAnimDll &aAnimDll) : CTTitledWindow(), - iAnim(aAnimDll) - { - } - -CTAnimWindow1::~CTAnimWindow1() - { - iAnim.Close(); - } - -void CTAnimWindow1::ConstructL(CTWinBase &parent) - { - CTTitledWindow::ConstructL(parent); - User::LeaveIfError(iAnimBitmap1.Load(ANIM_BITMAP,EMbmTanimAnim1)); - User::LeaveIfError(iAnimBitmap2.Load(ANIM_BITMAP,EMbmTanimAnim2)); - User::LeaveIfError(iMask.Load(ANIM_BITMAP,EMbmTanimMask)); - iAnimPos=TPoint(10,10); - User::LeaveIfError(iAnim.Construct(iWin, iAnimPos,&iAnimBitmap1,&iAnimBitmap2,&iMask,1,iFont)); - iAnimPolyRect=TRect(TPoint(10,40),TSize(50,50)); - iAnim.SetPolyRectL(iAnimPolyRect); - iAnim.TextPos(TPoint(20,50)); - } - -void CTAnimWindow1::Draw() - { - TInt i; - - CTTitledWindow::Draw(); - iGc->SetPenColor(TRgb::Gray16(8)); - TInt hgt=iSize.iHeight-iTitleHeight; - for(i=0;iDrawLine(TPoint(i,iTitleHeight),TPoint(iSize.iWidth,iTitleHeight+(hgt*i)/iSize.iWidth)); - iGc->DrawLine(TPoint(iSize.iWidth-i,iTitleHeight+hgt),TPoint(iSize.iWidth,iTitleHeight+(hgt*i)/iSize.iWidth)); - iGc->DrawLine(TPoint(iSize.iWidth-i,iTitleHeight+hgt),TPoint(0,iTitleHeight+hgt-(hgt*i)/iSize.iWidth)); - iGc->DrawLine(TPoint(i,iTitleHeight),TPoint(0,iTitleHeight+hgt-(hgt*i)/iSize.iWidth)); - } - } - -void CTAnimWindow1::AdjustAnimRect(TInt xMove,TInt yMove,TInt modifiers) - { - if (modifiers&EModifierCtrl) // 4 times the movement - { - xMove<<=2; - yMove<<=2; - } - iAnimPos+=TPoint(xMove,yMove); - iAnim.Set(iAnimPos,5); - } - -void CTAnimWindow1::AdjustPolyRectL(TInt xMove,TInt yMove,TInt modifiers) - { - if (modifiers&EModifierCtrl) // 4 times the movement - { - xMove<<=2; - yMove<<=2; - } - if (modifiers&EModifierShift) // 4 times the movement - iAnimPolyRect.Grow(xMove,yMove); - else - iAnimPolyRect.Move(TPoint(xMove,yMove)); - iAnim.SetPolyRectL(iAnimPolyRect); - } - -void CTAnimWindow1::ToggleMask() - { - iAnim.ToggleMask(); - } - -TInt CTAnimWindow1::SubType() - { - return(69); - } - -// CTAnimWindow2 // - -CTAnimWindow2::CTAnimWindow2(RAnimDll &aAnimDll) : CTBlankWindow(), - iAnim(aAnimDll) - { - } - -CTAnimWindow2::~CTAnimWindow2() - { - iAnim.Close(); - } - -void CTAnimWindow2::ConstructL(CTWinBase &parent, const TPoint &aPos, const TSize &aSize) - { - CTBlankWindow::ConstructL(parent); - iWin.SetColor(TRgb(128,128,128)); - iWin.SetVisible(EFalse); - SetExt(aPos,aSize); - iWin.Activate(); - User::LeaveIfError(iAnimBitmap1.Load(ANIM_BITMAP,EMbmTanimAnim1)); - User::LeaveIfError(iAnimBitmap2.Load(ANIM_BITMAP,EMbmTanimAnim2)); - User::LeaveIfError(iAnim.Construct(iWin, TPoint(10,10), &iAnimBitmap1, &iAnimBitmap2, &iAnimBitmap1, 1, iFont)); - iWin.SetVisible(ETrue); - } - -void CTAnimWindow2::ConstructExtLD(CTWinBase &aParent, const TPoint &aPos, const TSize &aSize) -// -// Call ConstructL, SetExt and either of these fail destroy this and leave -// - { - TRAPD(err,ConstructL(aParent, aPos, aSize)); - if (err!=KErrNone) - { - delete this; - User::Leave(err); - } - } - -// -// End of CTAnimWindow class // -// - -CTAnimWindowGroup::CTAnimWindowGroup(CTClient *aClient) : CTWindowGroup(aClient) - { - } - -void CTAnimWindowGroup::CursorKeyL(TInt xMove,TInt yMove,TInt modifiers) - { - if (iCursorMode==0) - iCurWin->AdjustSizeL(xMove,yMove,modifiers); - else if (iCurWin->SubType()==69) - { - if (iCursorMode==1) - ((CTAnimWindow1 *)iCurWin)->AdjustAnimRect(xMove,yMove,modifiers); - else - ((CTAnimWindow1 *)iCurWin)->AdjustPolyRectL(xMove,yMove,modifiers); - } - } - -void CTAnimWindowGroup::KeyL(const TKeyEvent &aKey,const TTime &aTime) - { - if (aKey.iModifiers&EModifierCtrl) - { - TInt type=0; - switch(aKey.iCode) - { - case 1: - type=1; - break; - case 2: - type=2; - break; - } - if (type!=0) - { - TPoint pos; - TSize size; - pos.iX=iCurWin->Size().iWidth>>2; - pos.iY=iCurWin->Size().iHeight>>2; - size.iWidth=iCurWin->Size().iWidth>>1; - size.iHeight=iCurWin->Size().iHeight>>1; - SetCurrentWindow(((CTAnimClient *)iClient)->CreateTestWindowL(pos,size,iCurWin,type)); - return; - } - } - if (aKey.iModifiers&EModifierFunc) - { - switch(aKey.iCode) - { - case 'x': - ((CTAnimClient *)iClient)->ExitL(); - break; - } - } - else switch(aKey.iCode) - { - case ' ': - iCursorMode=(iCursorMode+1)%3; - break; - case 8: - CTWin::Delete(iCurWin); - break; - case 9: - if (aKey.iModifiers&EModifierShift) - SetCurrentWindow(iCurWin->Prev()); - else - SetCurrentWindow(iCurWin->Next()); - break; - case 13: - if (iCurWin->SubType()==69) - ((CTAnimWindow1 *)iCurWin)->ToggleMask(); - break; - case EKeyLeftArrow: - CursorKeyL(-Xmove,0,aKey.iModifiers); - break; - case EKeyRightArrow: - CursorKeyL(Xmove,0,aKey.iModifiers); - break; - case EKeyUpArrow: - CursorKeyL(0,-Ymove,aKey.iModifiers); - break; - case EKeyDownArrow: - CursorKeyL(0,Ymove,aKey.iModifiers); - break; - default: - iCurWin->WinKeyL(aKey,aTime); - break; - } - } - -// - -CTAnimClient::CTAnimClient() - { - } - -CTBaseWin *CTAnimClient::CreateTestWindowL(TPoint pos,TSize size,CTWinBase *parent, TInt type) - { - CTBaseWin *win; - if (type==1) - { - win=new(ELeave) CTAnimWindow1(iAnimDll); - win->ConstructExtLD(*parent,pos,size); - win->Activate(); - } - else - { - win=new(ELeave) CTAnimWindow2(iAnimDll); - win->ConstructExtLD(*parent,pos,size); - } - win->AssignGC(*iGc); - return(win); - } - -CTAnimClient::~CTAnimClient() - { - DestroyWindows(); - iAnimDll.Close(); - } - -void CTAnimClient::ErrorTests() - { - RAnimDll animDll=RAnimDll(iWs); - if (animDll.Load(NONEXISTENT_DLL_NAME)!=KErrNotFound) - AnimPanic(EAnimPanicBadLoadFailed); - animDll.Close(); // Close should be harmless, but unnecassary - RAnimDll animDll2=RAnimDll(iWs); - if (animDll2.Load(NONEXISTENT_DLL_NAME)!=KErrNotFound) - AnimPanic(EAnimPanicBadLoadFailed); - } - -void CTAnimClient::ConstructL() - { - CTClient::ConstructL(); - - iGroup=new(ELeave) CTAnimWindowGroup(this); - iGroup->ConstructL(); - - ErrorTests(); - - iAnimDll=RAnimDll(iWs); - User::LeaveIfError(iAnimDll.Load(ANIM_DLL_NAME)); - - CreateTestWindowL(TPoint(30,20),TSize(220,140),iGroup, 1); - CreateTestWindowL(TPoint(260,60),TSize(60,40),iGroup, 2); - iGroup->SetCurrentWindow(iGroup->Child()); - } - -void CTAnimClient::ExitL() - { - CActiveScheduler::Stop(); - User::Leave(0); // Signals RunL not to do another Request() - } - -GLDEF_C CTClient *CreateClientL() - { - return(new(ELeave) CTAnimClient()); - } - -GLDEF_C TInt E32Main() - { - return(TestLibStartUp(CreateClientL)); - }