imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailscaletask.cpp
branchRCL_3
changeset 7 2eb74cf6572e
parent 5 82749d516180
child 8 7403edfcf0fb
equal deleted inserted replaced
5:82749d516180 7:2eb74cf6572e
    39 //
    39 //
    40 CThumbnailScaleTask* CThumbnailScaleTask::NewL( CThumbnailTaskProcessor&
    40 CThumbnailScaleTask* CThumbnailScaleTask::NewL( CThumbnailTaskProcessor&
    41     aProcessor, CThumbnailServer& aServer, const TDesC& aFilename, CFbsBitmap*
    41     aProcessor, CThumbnailServer& aServer, const TDesC& aFilename, CFbsBitmap*
    42     aBitmap, const TSize& aOriginalSize, const TSize& aTargetSize, TBool aCrop,
    42     aBitmap, const TSize& aOriginalSize, const TSize& aTargetSize, TBool aCrop,
    43     TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
    43     TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
    44     const TThumbnailSize aThumbnailSize, const TThumbnailId aThumbnailId,
    44     const TThumbnailSize aThumbnailSize, const TInt64 aModified,
    45     TBool aBitmapToPool, const TBool aEXIF)
    45     TBool aBitmapToPool, const TBool aEXIF)
    46     {
    46     {
    47     // We take ownership of aBitmap
    47     // We take ownership of aBitmap
    48     CleanupStack::PushL( aBitmap );
    48     CleanupStack::PushL( aBitmap );
    49     CThumbnailScaleTask* self = new( ELeave )CThumbnailScaleTask( aProcessor,
    49     CThumbnailScaleTask* self = new( ELeave )CThumbnailScaleTask( aProcessor,
    50         aServer, aFilename, aBitmap, aOriginalSize, aTargetSize, aCrop,
    50         aServer, aFilename, aBitmap, aOriginalSize, aTargetSize, aCrop,
    51         aDisplayMode, aPriority, aTargetUri, aThumbnailSize, aThumbnailId,
    51         aDisplayMode, aPriority, aTargetUri, aThumbnailSize, aModified,
    52         aBitmapToPool, aEXIF);
    52         aBitmapToPool, aEXIF);
    53     CleanupStack::Pop( aBitmap );
    53     CleanupStack::Pop( aBitmap );
    54     CleanupStack::PushL( self );
    54     CleanupStack::PushL( self );
    55     self->ConstructL();
    55     self->ConstructL();
    56     CleanupStack::Pop( self );
    56     CleanupStack::Pop( self );
    65 //
    65 //
    66 CThumbnailScaleTask::CThumbnailScaleTask( CThumbnailTaskProcessor& aProcessor,
    66 CThumbnailScaleTask::CThumbnailScaleTask( CThumbnailTaskProcessor& aProcessor,
    67     CThumbnailServer& aServer, const TDesC& aFilename, CFbsBitmap* aBitmap,
    67     CThumbnailServer& aServer, const TDesC& aFilename, CFbsBitmap* aBitmap,
    68     const TSize& aOriginalSize, const TSize& aTargetSize, TBool aCrop,
    68     const TSize& aOriginalSize, const TSize& aTargetSize, TBool aCrop,
    69     TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
    69     TDisplayMode aDisplayMode, TInt aPriority, const TDesC& aTargetUri,
    70     const TThumbnailSize aThumbnailSize, const TThumbnailId aThumbnailId,
    70     const TThumbnailSize aThumbnailSize, const TInt64 aModified,
    71     TBool aBitmapToPool, const TBool aEXIF):
    71     TBool aBitmapToPool, const TBool aEXIF):
    72     CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), iOwnBitmap( aBitmap ),
    72     CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), iOwnBitmap( aBitmap ),
    73     iOriginalSize( aOriginalSize ), iTargetSize( aTargetSize ), iCrop( aCrop ),
    73     iOriginalSize( aOriginalSize ), iTargetSize(aTargetSize), iTargetSizeTN( aTargetSize ), iCrop( aCrop ),
    74     iDisplayMode( aDisplayMode ), iFilename( aFilename ), iTargetUri( aTargetUri ),
    74     iDisplayMode( aDisplayMode ), iFilename( aFilename ), iTargetUri( aTargetUri ),
    75     iThumbnailSize(aThumbnailSize), iThumbnailId(aThumbnailId),
    75     iThumbnailSize(aThumbnailSize), iModified(aModified),
    76     iBitmapToPool(aBitmapToPool), iEXIF(aEXIF)
    76     iBitmapToPool(aBitmapToPool), iEXIF(aEXIF)
    77     {
    77     {
    78     TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::CThumbnailScaleTask()", this );
    78     TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::CThumbnailScaleTask()", this );
    79     }
    79     }
    80 
    80 
   324 // CThumbnailScaleTask::StoreAndCompleteL()
   324 // CThumbnailScaleTask::StoreAndCompleteL()
   325 // ---------------------------------------------------------------------------
   325 // ---------------------------------------------------------------------------
   326 //
   326 //
   327 void CThumbnailScaleTask::StoreAndCompleteL()
   327 void CThumbnailScaleTask::StoreAndCompleteL()
   328     {
   328     {
   329     TN_DEBUG5( "CThumbnailScaleTask(0x%08x)::StoreAndCompleteL() iFilename=%S, iBitmap=0x%08x, iScaledBitmap=0x%08x)", 
   329     TN_DEBUG6( "CThumbnailScaleTask(0x%08x)::StoreAndCompleteL() iFilename=%S, iThumbnailSize=%d, iBitmap=0x%08x, iScaledBitmap=0x%08x)", 
   330                this, &iFilename, iBitmap, iScaledBitmap );
   330                this, &iFilename, iThumbnailSize, iBitmap, iScaledBitmap );
   331 		 
   331 		 
   332     // do not store TN if quality is too low eg. orignal size of image is smaller than requested size
   332     // do not store TN if quality is too low eg. orignal size of image is smaller than requested size
   333     // (do not store upscaled images)
   333     // (do not store upscaled images)
   334     if ( iTargetSize.iWidth >= iOriginalSize.iWidth && 
   334     if ( (iTargetSizeTN.iWidth > iOriginalSize.iWidth || iTargetSizeTN.iHeight > iOriginalSize.iHeight) && iEXIF)
   335          iTargetSize.iHeight >= iOriginalSize.iHeight && iEXIF)
       
   336         {
   335         {
   337         TN_DEBUG1("CThumbnailScaleTask()::StoreAndCompleteL() too low quality");
   336         TN_DEBUG1("CThumbnailScaleTask()::StoreAndCompleteL() too low quality");
   338         //don't store preview image
       
   339         iDoStore = EFalse;
   337         iDoStore = EFalse;
   340         }
   338         }
   341     
   339     
   342     TN_DEBUG3("CThumbnailScaleTask(0x%08x)::StoreAndCompleteL() iDoStore = %d", this, iDoStore);
   340     TN_DEBUG3("CThumbnailScaleTask(0x%08x)::StoreAndCompleteL() iDoStore = %d", this, iDoStore);
   343     
   341     
   346         if (iTargetUri != KNullDesC)
   344         if (iTargetUri != KNullDesC)
   347             {
   345             {
   348             if (iFilename != KNullDesC && iFilename.CompareF(iTargetUri) == 0)
   346             if (iFilename != KNullDesC && iFilename.CompareF(iTargetUri) == 0)
   349                 {
   347                 {
   350                 // filename and target URI match, so thumb created from associated path
   348                 // filename and target URI match, so thumb created from associated path
   351                 iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iThumbnailId, ETrue );
   349                 iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iModified, ETrue );
   352                 }
   350                 }
   353             else
   351             else
   354                 {
   352                 {
   355                 // thumb not created from associated path
   353                 // thumb not created from associated path
   356                 iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iThumbnailId, EFalse, EFalse );
   354                 iServer.StoreThumbnailL( iTargetUri, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iModified, EFalse, EFalse );
   357                 }  
   355                 }  
   358             }
   356             }
   359         else if (iFilename != KNullDesC)
   357         else if (iFilename != KNullDesC)
   360             {
   358             {
   361             iServer.StoreThumbnailL( iFilename, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iThumbnailId, ETrue );
   359             iServer.StoreThumbnailL( iFilename, iScaledBitmap, iOriginalSize, iCrop, iThumbnailSize, iModified, ETrue );
   362             }
   360             }
   363         }    
   361         }    
   364     
   362     
   365     if ( ClientThreadAlive() )
   363     if ( ClientThreadAlive() )
   366         {
   364         {
   371                     
   369                     
   372         // if need to add scaled bitmap to pool
   370         // if need to add scaled bitmap to pool
   373         if (iBitmapToPool)
   371         if (iBitmapToPool)
   374             {
   372             {
   375             TN_DEBUG1("CThumbnailScaleTask()::StoreAndCompleteL() scaled bitmap to pool");
   373             TN_DEBUG1("CThumbnailScaleTask()::StoreAndCompleteL() scaled bitmap to pool");
   376             
       
   377             
   374             
   378             params.iBitmapHandle = iScaledBitmap->Handle();
   375             params.iBitmapHandle = iScaledBitmap->Handle();
   379             
   376             
   380             iServer.AddBitmapToPoolL( iRequestId.iSession, iScaledBitmap, iRequestId );
   377             iServer.AddBitmapToPoolL( iRequestId.iSession, iScaledBitmap, iRequestId );
   381             iScaledBitmapHandle = params.iBitmapHandle;
   378             iScaledBitmapHandle = params.iBitmapHandle;