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 TInt64 aModified, |
44 const TThumbnailSize aThumbnailSize, const TInt64 aModified, |
45 TBool aBitmapToPool, const TBool aEXIF) |
45 TBool aBitmapToPool, const TBool aEXIF, const TThumbnailServerRequestId aRequestId) |
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, aModified, |
51 aDisplayMode, aPriority, aTargetUri, aThumbnailSize, aModified, |
52 aBitmapToPool, aEXIF); |
52 aBitmapToPool, aEXIF, aRequestId); |
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 ); |
57 return self; |
57 return self; |
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 TInt64 aModified, |
70 const TThumbnailSize aThumbnailSize, const TInt64 aModified, |
71 TBool aBitmapToPool, const TBool aEXIF): |
71 TBool aBitmapToPool, const TBool aEXIF, const TThumbnailServerRequestId aRequestId): |
72 CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), iOwnBitmap( aBitmap ), |
72 CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), iOwnBitmap( aBitmap ), |
73 iOriginalSize( aOriginalSize ), iTargetSize(aTargetSize), iTargetSizeTN( 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), iModified(aModified), |
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 |
|
80 iRequestId = aRequestId; |
79 } |
81 } |
80 |
82 |
81 |
83 |
82 // --------------------------------------------------------------------------- |
84 // --------------------------------------------------------------------------- |
83 // CThumbnailScaleTask::ConstructL() |
85 // CThumbnailScaleTask::ConstructL() |
160 |
164 |
161 TSize bitmapSize = iBitmap->SizeInPixels(); |
165 TSize bitmapSize = iBitmap->SizeInPixels(); |
162 |
166 |
163 if(bitmapSize.iHeight == iTargetSize.iHeight && bitmapSize.iWidth == iTargetSize.iWidth) |
167 if(bitmapSize.iHeight == iTargetSize.iHeight && bitmapSize.iWidth == iTargetSize.iWidth) |
164 { |
168 { |
|
169 TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::StartL() - no need for scaling", this); |
|
170 |
165 // copy bitmap 1:1 |
171 // copy bitmap 1:1 |
166 User::LeaveIfError( iScaledBitmap->Create( bitmapSize, iBitmap->DisplayMode() )); |
172 User::LeaveIfError( iScaledBitmap->Create( bitmapSize, iBitmap->DisplayMode() )); |
167 CFbsBitmapDevice* device = CFbsBitmapDevice::NewL(iScaledBitmap); |
173 CFbsBitmapDevice* device = CFbsBitmapDevice::NewL(iScaledBitmap); |
168 CleanupStack::PushL(device); |
174 CleanupStack::PushL(device); |
169 CFbsBitGc* gc = NULL; |
175 CFbsBitGc* gc = NULL; |
170 User::LeaveIfError(device->CreateContext(gc)); |
176 User::LeaveIfError(device->CreateContext(gc)); |
171 CleanupStack::PushL(gc); |
177 CleanupStack::PushL(gc); |
172 gc->BitBlt(TPoint(0, 0), iBitmap); |
178 gc->BitBlt(TPoint(0, 0), iBitmap); |
173 CleanupStack::PopAndDestroy(2, device); // gc |
179 CleanupStack::PopAndDestroy(2, device); // gc |
174 |
180 |
175 TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::StartL() - no need for scaling", this); |
|
176 TRAPD( err, StoreAndCompleteL()); |
181 TRAPD( err, StoreAndCompleteL()); |
177 Complete( err ); |
182 Complete( err ); |
178 ResetMessageData(); |
183 ResetMessageData(); |
179 } |
184 } |
180 else |
185 else |
181 { |
186 { |
182 TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::StartL() - scaling", this); |
187 TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::StartL() - scaling", this); |
|
188 |
183 User::LeaveIfError( iScaledBitmap->Create( iTargetSize, iBitmap->DisplayMode() )); |
189 User::LeaveIfError( iScaledBitmap->Create( iTargetSize, iBitmap->DisplayMode() )); |
184 iServer.ScaleBitmapL( iStatus, * iBitmap, * iScaledBitmap, iCropRectangle ); |
190 iServer.ScaleBitmapL( iStatus, * iBitmap, * iScaledBitmap, iCropRectangle ); |
185 SetActive(); |
191 SetActive(); |
186 } |
192 } |
187 |
193 |
|
194 TN_DEBUG2( "CThumbnailScaleTask(0x%08x)::StartL() end", this ); |
188 } |
195 } |
189 |
196 |
190 |
197 |
191 // --------------------------------------------------------------------------- |
198 // --------------------------------------------------------------------------- |
192 // CThumbnailScaleTask::RunL() |
199 // CThumbnailScaleTask::RunL() |