00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "BmpAnimGui.h"
00018
00019
00020
00021 void CExampleAppView::LoadMbmL( const TDesC& aMbmFile )
00022 {
00023
00024 if( !iAnimFrames )
00025 {
00026 CFbsBitmap* bitmap;
00027 CFbsBitmap* mask;
00028 CBitmapFrameData* frameGeneral;
00029 iAnimFrames = CBitmapAnimClientData::NewL();
00030 CleanupStack::PushL( iAnimFrames );
00031
00032 iX = KColorBallsAnimXDeflectionStart;
00033 TInt ballIndex = KColorBallsMbmFirstBallIndex;
00034
00035 while( iX < KColorBallsAnimXDeflectionTerminalValue )
00036 {
00037
00038 bitmap = new (ELeave) CFbsBitmap();
00039 CleanupStack::PushL( bitmap );
00040 User::LeaveIfError( bitmap->Load(aMbmFile, ballIndex) );
00041 ballIndex = ( KColorBallsMbmLastBallIndex == ballIndex ) ? KColorBallsMbmFirstBallIndex : ballIndex + 1;
00042
00043
00044 mask = new (ELeave) CFbsBitmap();
00045 CleanupStack::PushL( mask );
00046 User::LeaveIfError( mask->Load(aMbmFile, KColorBallsMbmMaskIndex) );
00047
00048
00049 iY =TInt( KColorBallsAnimYDeflectionOffset + KColorBallsAnimYDeflectionMultiplier*sin( iX ));
00050
00051
00052 frameGeneral = CBitmapFrameData::NewL( bitmap, mask, KColorBallsAnimFrameDelay, TPoint(iX, iY) );
00053 CleanupStack::PushL( frameGeneral );
00054
00055
00056 iAnimFrames->AppendFrameL( frameGeneral );
00057
00058
00059 CleanupStack::Pop( 3 );
00060
00061 iX += KColorBallsAnimXDeflectionIncrement;
00062 }
00063
00064 iBitmapAnimPlayer.SetBitmapAnimDataL( *iAnimFrames );
00065 CleanupStack::Pop( iAnimFrames );
00066 }
00067 }
00068
00069 CExampleAppView::CExampleAppView()
00070 : iBitmapAnimPlayer( iAnimDll ),iAnimDll( iEikonEnv->WsSession() )
00071
00072 {
00073 }
00074
00075 CExampleAppView* CExampleAppView::NewL(const TRect& aRect)
00076 {
00077 CExampleAppView* self = new(ELeave) CExampleAppView();
00078 CleanupStack::PushL(self);
00079 self->ConstructL(aRect);
00080 CleanupStack::Pop();
00081 return self;
00082 }
00083
00084 CExampleAppView::~CExampleAppView()
00085 {
00086 iBitmapAnimPlayer.Close();
00087 delete( iAnimFrames );
00088 iAnimDll.Close();
00089 delete iExampleText;
00090 }
00091
00092
00093
00094 void CExampleAppView::ConstructL(const TRect& aRect)
00095 {
00096
00097 iExampleText = iEikonEnv->AllocReadResourceL( R_EXAMPLE_TEXT_BB );
00098
00099
00100 CreateWindowL();
00101
00102
00103 SetRect(aRect);
00104
00105
00106 ActivateL();
00107
00108
00109 _LIT(KDllName, "BMPANSRV.DLL" );
00110 User::LeaveIfError( iAnimDll.Load( KDllName ) );
00111 iBitmapAnimPlayer.ConstructL( Window() );
00112
00113 LoadMbmL( KColorBallsMbmPath );
00114 }
00115
00116
00117
00118
00119 void CExampleAppView::Draw(const TRect& ) const
00120 {
00121
00122 CWindowGc& gc = SystemGc();
00123
00124
00125 TRect drawRect = Rect();
00126
00127
00128 const CFont* fontUsed;
00129
00130
00131 gc.Clear();
00132
00133
00134 fontUsed = iEikonEnv->TitleFont();
00135 gc.UseFont(fontUsed);
00136
00137
00138 TInt baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/5;
00139 gc.DrawText(*iExampleText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0);
00140 gc.DiscardFont();
00141 }
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158