diff -r 2717213c588a -r 171fae344dd4 windowing/windowserver/tanim/TANIMDLL.CPP --- a/windowing/windowserver/tanim/TANIMDLL.CPP Tue Jun 22 15:21:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,317 +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 Animated DLL -// -// - -#include -#include -#include -#include -#include "ANIMDLL.H" - -#define ANIM_TEST_TEXT _L("Testing 123") - -class CTestAnim : public CWindowAnim - { - enum {ENumPolyPoints=9}; -public: - ~CTestAnim(); - virtual void ConstructL(TAny *aArgs, TBool aHasFocus); - virtual void Animate(TDateTime *aDateTime); - virtual void Redraw(); - virtual void Command(TInt aOpcode, TAny *aArgs); - virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs); - void SetPolyList(const TRect &aRect); - void DrawPolyLine(); - void DrawBitmap(); - void DrawText(); - void TweakPolyList(TInt aState); - void FocusChanged(TBool aState); - void InvalidateText(); - void InvalidateBitmap(); - //Pure virtual function from MEventHandler - virtual TBool OfferRawEvent(const TRawEvent &aRawEvent); -private: - void AppendTime(TDes& aTimeText,const TTime& aTime) const; -private: - TPoint iPos; - TSize iSize; - TInt iColor; - TBool iMasked; - TRect iPolyRect; - TInt iPolyState; - TInt iWiggleSize; - TPoint iTextPos; - TBool iHasFocus; - CArrayFixFlat *iPolyList; - CFbsBitmap iBitmap1; - CFbsBitmap iBitmap2; - CFbsBitmap iMask; - CFbsFont *iFont; - }; - -class CTestAnimDll : public CAnimDll - { -public: - CAnim *CreateInstanceL(TInt aType); -private: - }; - -/*#if defined(__WINS__) -#pragma data_seg(".E32_UID") -__WINS_UID(0, KWservAnimDllUidValue, 0) -#pragma data_seg() -#endif*/ - -EXPORT_C CAnimDll *CreateCAnimDllL() - { - return(new(ELeave) CTestAnimDll()); - } - -// Instance code // - -void CTestAnim::Animate(TDateTime *) - { - if (!iWindowFunctions->IsHidden()) - { - iWindowFunctions->ActivateGc(); - if (iPolyList) - DrawPolyLine(); - } - if (iPolyList) - { - iPolyState=(iPolyState+1)%4; - TweakPolyList(iPolyState); - } - if (!iWindowFunctions->IsHidden()) - { - if (iPolyList) - DrawPolyLine(); - DrawText(); - DrawBitmap(); - } - iColor=(iColor+16)&0xFF; - } - -void CTestAnim::DrawPolyLine() - { - iGc->SetDrawMode(CGraphicsContext::EDrawModeXOR); - iGc->SetPenColor(TRgb(255,255,255)); - iGc->DrawPolyLine(iPolyList); - iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); - iGc->SetPenColor(TRgb(0,0,0)); - } - -void CTestAnim::DrawBitmap() - { - iGc->SetClippingRegion(TRegionFix<1>(TRect(iPos,iSize))); - CFbsBitmap *bitmap=iFunctions->FlashStateOn() ? &iBitmap1 : &iBitmap2; - if (iMasked) - iGc->BitBltMasked(iPos,bitmap, TRect(iSize), &iMask,EFalse); - else - iGc->BitBlt(iPos,bitmap); - iGc->CancelClippingRegion(); - } - -void CTestAnim::AppendTime(TDes& aTimeText,const TTime& aTime) const - { - _LIT(TimeFormat,"%:0%H%:1%T%:2%S"); - TRAPD(err,aTime.FormatL(aTimeText,TimeFormat)); - if (err!=KErrNone) - { - _LIT(DummyTime,"######"); - aTimeText.Append(DummyTime); - } - } - -void CTestAnim::DrawText() - { - if (iHasFocus) - { - iGc->UseFont(iFont); - TBuf<0x20> timebuf; - TTime time(iFunctions->SystemTime()); - AppendTime(timebuf,time); - TRect rect(iTextPos.iX,iTextPos.iY-iFont->AscentInPixels(),iTextPos.iX+iFont->TextWidthInPixels(timebuf),iTextPos.iY-iFont->AscentInPixels()+iFont->HeightInPixels()); - iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); - iGc->DrawText(timebuf,rect,iFont->AscentInPixels()); - time.UniversalTime(); - AppendTime(timebuf,time); - rect.Move(0,iFont->HeightInPixels()); - iGc->DrawText(timebuf,rect,iFont->AscentInPixels()); - } - } - -void CTestAnim::Redraw() - { - DrawText(); - DrawBitmap(); - if (iPolyList) - DrawPolyLine(); - } - -void CTestAnim::ConstructL(TAny *aArgs, TBool aHasFocus) - { - iHasFocus=aHasFocus; - iPos=((CTAParams *)aArgs)->pos; - iFunctions->SetInterval(((CTAParams *)aArgs)->interval); - if (iBitmap1.Duplicate(((CTAParams *)aArgs)->bit1)!=KErrNone || - iBitmap2.Duplicate(((CTAParams *)aArgs)->bit2)!=KErrNone || - iMask.Duplicate(((CTAParams *)aArgs)->mask)!=KErrNone) - iFunctions->Panic(); - iSize.iWidth=Min(iBitmap1.SizeInPixels().iWidth,iBitmap2.SizeInPixels().iWidth); - iSize.iHeight=Min(iBitmap1.SizeInPixels().iHeight,iBitmap2.SizeInPixels().iHeight); - iWiggleSize=10; - iFont=iFunctions->DuplicateFontL(((CTAParams *)aArgs)->font); - } - -void CTestAnim::SetPolyList(const TRect &aRect) - { - iPolyRect=aRect; - TSize halfsize=aRect.Size(); - halfsize.iWidth>>=1; - halfsize.iHeight>>=1; - (*iPolyList)[0]=aRect.iTl; - (*iPolyList)[1]=TPoint(aRect.iTl.iX+iWiggleSize,aRect.iTl.iY+halfsize.iHeight); - (*iPolyList)[2]=TPoint(aRect.iTl.iX,aRect.iBr.iY); - (*iPolyList)[3]=TPoint(aRect.iTl.iX+halfsize.iWidth,aRect.iBr.iY-iWiggleSize); - (*iPolyList)[4]=aRect.iBr; - (*iPolyList)[5]=TPoint(aRect.iBr.iX-iWiggleSize,aRect.iTl.iY+halfsize.iHeight); - (*iPolyList)[6]=TPoint(aRect.iBr.iX,aRect.iTl.iY); - (*iPolyList)[7]=TPoint(aRect.iTl.iX+halfsize.iWidth,aRect.iTl.iY+iWiggleSize); - (*iPolyList)[8]=aRect.iTl; - TweakPolyList(iPolyState); - } - -void CTestAnim::TweakPolyList(TInt aState) - { - TSize halfsize=iPolyRect.Size(); - halfsize.iWidth>>=1; - halfsize.iHeight>>=1; - switch(aState) - { - case 0: - (*iPolyList)[7]=TPoint(iPolyRect.iTl.iX+halfsize.iWidth,iPolyRect.iTl.iY+iWiggleSize); - (*iPolyList)[1]=TPoint(iPolyRect.iTl.iX,iPolyRect.iTl.iY+halfsize.iHeight); - break; - case 1: - (*iPolyList)[1]=TPoint(iPolyRect.iTl.iX+iWiggleSize,iPolyRect.iTl.iY+halfsize.iHeight); - (*iPolyList)[3]=TPoint(iPolyRect.iTl.iX+halfsize.iWidth,iPolyRect.iBr.iY); - break; - case 2: - (*iPolyList)[3]=TPoint(iPolyRect.iTl.iX+halfsize.iWidth,iPolyRect.iBr.iY-iWiggleSize); - (*iPolyList)[5]=TPoint(iPolyRect.iBr.iX,iPolyRect.iTl.iY+halfsize.iHeight); - break; - case 3: - (*iPolyList)[5]=TPoint(iPolyRect.iBr.iX-iWiggleSize,iPolyRect.iTl.iY+halfsize.iHeight); - (*iPolyList)[7]=TPoint(iPolyRect.iTl.iX+halfsize.iWidth,iPolyRect.iTl.iY); - break; - } - } - -void CTestAnim::InvalidateText() - { - TRect invalidate; - invalidate.iTl.iX=iTextPos.iX; - invalidate.iTl.iY=iTextPos.iY-iFont->AscentInPixels(); - invalidate.iBr.iX=iTextPos.iX+iFont->TextWidthInPixels(ANIM_TEST_TEXT); - invalidate.iBr.iY=iTextPos.iY+iFont->DescentInPixels(); - iWindowFunctions->Invalidate(invalidate); - } - -void CTestAnim::InvalidateBitmap() - { - iWindowFunctions->Invalidate(TRect(iPos,iSize)); - } - -void CTestAnim::Command(TInt aOpcode, TAny *aArgs) - { - switch(aOpcode) - { - case EADllOpcodeMove: - { - InvalidateBitmap(); - iPos=((CTAParams *)aArgs)->pos; - iWindowFunctions->ActivateGc(); - DrawBitmap(); - iFunctions->SetInterval(((CTAParams *)aArgs)->interval); - } - break; - case EADllTextPos: - { - InvalidateText(); - iTextPos=((CTAParams *)aArgs)->pos; - iWindowFunctions->ActivateGc(); - DrawText(); - } - break; - case EADllToggleBitmapMask: - iMasked=!iMasked; - InvalidateBitmap(); - break; - } - } - -TInt CTestAnim::CommandReplyL(TInt aOpcode, TAny *aArgs) - { - switch(aOpcode) - { - case EADllOpcodePolyLineRect: - iWindowFunctions->ActivateGc(); - if (!iPolyList) - { - iPolyList=new(ELeave) CArrayFixFlat(ENumPolyPoints); - TPoint zeropoint; - for(TInt i=0;iAppendL(zeropoint); - } - else - DrawPolyLine(); - SetPolyList(*((TRect *)aArgs)); - DrawPolyLine(); - break; - default: - iFunctions->Panic(); - } - return(KErrNone); - } - -CTestAnim::~CTestAnim() - { - delete iPolyList; - iFunctions->CloseFont(iFont); - } - -void CTestAnim::FocusChanged(TBool aNewState) - { - iHasFocus=aNewState; - InvalidateText(); - InvalidateBitmap(); - } - -TBool CTestAnim::OfferRawEvent(const TRawEvent &/*aRawEvent*/) - { - return EFalse; - } - -// DLL code // - -CAnim *CTestAnimDll::CreateInstanceL(TInt ) - { - return(new(ELeave) CTestAnim()); - } - -// Dummy E32Dll needed by E32 to build // -