00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "AnimExample.h"
00017
00018 CAnimationAppView::CAnimationAppView()
00019 {
00020 }
00021
00022 CAnimationAppView* CAnimationAppView::NewL(const TRect& aRect)
00023 {
00024 CAnimationAppView* self = new(ELeave) CAnimationAppView();
00025 CleanupStack::PushL(self);
00026 self->ConstructL(aRect);
00027 CleanupStack::Pop();
00028 return self;
00029 }
00030
00031 CAnimationAppView::~CAnimationAppView()
00032 {
00033 delete iAnimTestText;
00034 delete iSpriteAnim;
00035 delete iBasicAnim;
00036
00037 if( iSpriteAnimMover )
00038 {
00039 iSpriteAnimMover->Cancel();
00040 delete iSpriteAnimMover;
00041 }
00042
00043 if( iBasicAnimMover )
00044 {
00045 iBasicAnimMover->Cancel();
00046 delete iBasicAnimMover;
00047 }
00048 }
00049
00050
00051 void CAnimationAppView::ConstructL( const TRect& aRect )
00052 {
00053
00054
00055 iAnimTestText = iEikonEnv->AllocReadResourceL( R_EXAMPLE_TEXT_BASICANIM );
00056
00057
00058 CreateWindowL();
00059
00060
00061 SetRect(aRect);
00062
00063
00064 ActivateL();
00065 }
00066
00067
00068 void CAnimationAppView::ProduceSpriteAnimL()
00069 {
00070
00071
00072 CICLAnimationDataProvider* spriteDataProvider = new (ELeave)CICLAnimationDataProvider;
00073 CleanupStack::PushL( spriteDataProvider );
00074 spriteDataProvider->SetFileL( iEikonEnv->FsSession(), KAnimExStopWatch() );
00075 CleanupStack::Pop( spriteDataProvider );
00076
00077 iSpriteAnim = CSpriteAnimation::NewL( spriteDataProvider,TPoint(KAnimExSpritePositionX, KAnimExSpritePositionY), iEikonEnv->WsSession(), Window() );
00078
00079 TAnimationConfig config;
00080 config.iFlags = TAnimationConfig::ELoop;
00081 config.iData = -1;
00082
00083 iSpriteAnim->Start( config );
00084 }
00085
00086 void CAnimationAppView::ProduceBasicAnimL()
00087 {
00088
00089 TAnimationConfig config;
00090 config.iFlags = TAnimationConfig::ELoop;
00091 config.iData = -1;
00092
00093
00094 CICLAnimationDataProvider* basicDataProvider = new (ELeave)CICLAnimationDataProvider;
00095 CleanupStack::PushL( basicDataProvider );
00096 basicDataProvider->SetFileL( iEikonEnv->FsSession(), KAnimExStopWatch() );
00097
00098 CleanupStack::Pop( basicDataProvider );
00099
00100 iBasicAnim = CBasicAnimation::NewL( basicDataProvider,TPoint( KAnimExBasicPositionX, KAnimExBasicPositionY ), iEikonEnv->WsSession(), Window() );
00101
00102 iBasicAnim->Start( config );
00103 }
00104
00105 void CAnimationAppView::MoveAnimsL()
00106 {
00107
00108 if( iSpriteAnimMover )
00109 {
00110 iSpriteAnimMover->Cancel();
00111 delete iSpriteAnimMover;
00112 iSpriteAnimMover = NULL;
00113 }
00114
00115 iSpriteAnimMover = new (ELeave) CSpriteAnimMover( EPriorityNormal, KspriteInterval, iSpriteAnim );
00116
00117
00118 if( iBasicAnimMover )
00119 {
00120 iBasicAnimMover->Cancel();
00121 delete iBasicAnimMover;
00122 iBasicAnimMover = NULL;
00123 }
00124
00125 iBasicAnimMover = new (ELeave) CBasicAnimMover( EPriorityNormal, KBasicInterval, iBasicAnim );
00126
00127 }
00128
00129 void CAnimationAppView::DoSpriteAnimOperationL( TAnimOperation aOperation )
00130 {
00131
00132 if( !iSpriteAnim )
00133 {
00134 iEikonEnv->InfoMsg( _L("Not Initialised") );
00135 return;
00136 }
00137
00138 switch( aOperation )
00139 {
00140
00141 case EAnimPause:
00142 iSpriteAnim->Pause();
00143 break;
00144
00145 case EAnimResume:
00146 iSpriteAnim->Resume();
00147 break;
00148
00149 case EAnimStop:
00150 iSpriteAnim->Stop();
00151 break;
00152
00153 default:
00154 break;
00155
00156 }
00157
00158 }
00159
00160
00161 void CAnimationAppView::DoBasicAnimOperationL( TAnimOperation aOperation )
00162 {
00163
00164 if( !iBasicAnim )
00165 {
00166 iEikonEnv->InfoMsg( _L("Not Initialised") );
00167 return;
00168 }
00169
00170 switch( aOperation )
00171 {
00172 case EAnimPause:
00173 iBasicAnim->Pause();
00174 break;
00175
00176 case EAnimResume:
00177 iBasicAnim->Resume();
00178 break;
00179
00180 case EAnimStop:
00181 iBasicAnim->Stop();
00182 break;
00183
00184 default:
00185 break;
00186 }
00187
00188 }
00189
00190
00191
00192
00193
00194 void CAnimationAppView::ResetSpriteAnimAndMover()
00195 {
00196
00197 if( iSpriteAnimMover )
00198 {
00199 iSpriteAnimMover->Cancel();
00200 delete iSpriteAnimMover;
00201 iSpriteAnimMover = NULL;
00202 }
00203
00204 if( iSpriteAnim )
00205 {
00206 iSpriteAnim->Stop();
00207 delete iSpriteAnim;
00208 iSpriteAnim = NULL;
00209 }
00210 }
00211
00212 void CAnimationAppView::ResetBasicAnimAndMover()
00213 {
00214 if( iBasicAnimMover )
00215 {
00216 iBasicAnimMover->Cancel();
00217 delete iBasicAnimMover;
00218 iBasicAnimMover = NULL;
00219 }
00220
00221 if( iBasicAnim )
00222 {
00223 iBasicAnim->Stop();
00224 delete iBasicAnim;
00225 iBasicAnim = NULL;
00226
00227 Window().Invalidate();
00228 }
00229
00230 }
00231
00232
00233
00234 void CAnimationAppView::Draw(const TRect& ) const
00235 {
00236
00237
00238 CWindowGc& gc = SystemGc();
00239
00240
00241 TRect drawRect = Rect();
00242
00243
00244 const CFont* fontUsed;
00245
00246
00247 gc.Clear();
00248
00249
00250 fontUsed = iEikonEnv->TitleFont();
00251 gc.UseFont( fontUsed );
00252
00253
00254 TInt baselineOffset=( drawRect.Height() - fontUsed->HeightInPixels() );
00255 gc.DrawText( *iAnimTestText,drawRect,0 + fontUsed->HeightInPixels(),CGraphicsContext::ECenter, 0 );
00256
00257 gc.DrawText( KAnimExBasicLabel, drawRect, baselineOffset - KBasicOffset, CGraphicsContext::ECenter, 0 );
00258
00259
00260
00261 if( iBasicAnim )
00262 {
00263 iBasicAnim->Draw( gc );
00264 }
00265
00266 gc.DrawText( KAnimExSpriteLabel, drawRect, baselineOffset - KSpriteOffset, CGraphicsContext::ELeft, 0 );
00267
00268
00269 gc.DiscardFont();
00270 }
00271
00272
00273
00274