taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapareautils.cpp
branchRCL_3
changeset 93 b01126ce0bec
parent 88 3321d3e205b6
equal deleted inserted replaced
88:3321d3e205b6 93:b01126ce0bec
   512 CFbsBitmap* CTsFastSwapAreaExtension::CopyBitmapL( TInt aFbsHandle, TSize aSize, TBool aIsScreenshot  )
   512 CFbsBitmap* CTsFastSwapAreaExtension::CopyBitmapL( TInt aFbsHandle, TSize aSize, TBool aIsScreenshot  )
   513     {
   513     {
   514     CFbsBitmap* ret = new (ELeave) CFbsBitmap();
   514     CFbsBitmap* ret = new (ELeave) CFbsBitmap();
   515     CleanupStack::PushL( ret );
   515     CleanupStack::PushL( ret );
   516 
   516 
   517     CFbsBitmap* bmp = new (ELeave) CFbsBitmap();
   517     CFbsBitmap* bmp = DuplicateBitmapLC( aFbsHandle );
   518     CleanupStack::PushL( bmp );
       
   519     User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
       
   520     
   518     
   521     // First scale using normal method, to show "draft" screenshots.
   519     // First scale using normal method, to show "draft" screenshots.
   522     // Do not always use aSize, preserving the aspect ratio is quite
   520     // Do not always use aSize, preserving the aspect ratio is quite
   523     // important when showing app icons instead of screenshots
   521     // important when showing app icons instead of screenshots
   524     TSize sz = CalculateSizePreserveRatio( aSize, bmp->SizeInPixels() );
   522     TSize sz = CalculateSizePreserveRatio( aSize, bmp->SizeInPixels() );
   526     AknIconUtils::ScaleBitmapL( sz, ret, bmp );
   524     AknIconUtils::ScaleBitmapL( sz, ret, bmp );
   527     
   525     
   528     // Second, if it is screenshot, perform quality improvement scaling
   526     // Second, if it is screenshot, perform quality improvement scaling
   529     if ( aIsScreenshot )
   527     if ( aIsScreenshot )
   530         {
   528         {
   531         CTsBitmapScaleTask* rotaTask = new (ELeave) CTsBitmapScaleTask( *this );
   529         ScaleBitmapL( bmp, ret );
   532         CleanupStack::PushL( rotaTask );
       
   533         iScaleTasks.AppendL( rotaTask );
       
   534         rotaTask->StartLD( bmp, ret ); // ownership of bmp transferred
       
   535         CleanupStack::Pop( rotaTask );
       
   536         CleanupStack::Pop( bmp );
   530         CleanupStack::Pop( bmp );
   537         }
   531         }
   538     else
   532     else
   539         {
   533         {
   540         CleanupStack::PopAndDestroy( bmp );
   534         CleanupStack::PopAndDestroy( bmp );
   542     
   536     
   543     CleanupStack::Pop( ret );
   537     CleanupStack::Pop( ret );
   544     return ret;
   538     return ret;
   545     }
   539     }
   546 
   540 
       
   541 // --------------------------------------------------------------------------
       
   542 // CTsFastSwapAreaExtension::DuplicateBitmapL
       
   543 // --------------------------------------------------------------------------
       
   544 //
       
   545 CFbsBitmap* CTsFastSwapAreaExtension::DuplicateBitmapLC( TInt aFbsHandle  )
       
   546     {
       
   547     CFbsBitmap* bmp = new (ELeave) CFbsBitmap();
       
   548     CleanupStack::PushL( bmp );
       
   549     User::LeaveIfError( bmp->Duplicate( aFbsHandle ) );
       
   550     return bmp;
       
   551     }
       
   552 
       
   553 // --------------------------------------------------------------------------
       
   554 // CTsFastSwapAreaExtension::ScaleBitmapL
       
   555 // --------------------------------------------------------------------------
       
   556 //
       
   557 void CTsFastSwapAreaExtension::ScaleBitmapL( CFbsBitmap* aSourceBitmap,
       
   558         CFbsBitmap* aTargetBitmap )
       
   559     {
       
   560     CTsBitmapScaleTask* rotaTask = new (ELeave) CTsBitmapScaleTask( *this );
       
   561     CleanupStack::PushL( rotaTask );
       
   562     iScaleTasks.AppendL( rotaTask );
       
   563     rotaTask->StartLD( aSourceBitmap, aTargetBitmap ); 
       
   564     // ownership of bmp transferred
       
   565     CleanupStack::Pop( rotaTask );
       
   566     }
   547 
   567 
   548 // --------------------------------------------------------------------------
   568 // --------------------------------------------------------------------------
   549 // CTsFastSwapAreaExtension::CancelScaleTasks
   569 // CTsFastSwapAreaExtension::CancelScaleTasks
   550 // --------------------------------------------------------------------------
   570 // --------------------------------------------------------------------------
   551 //
   571 //