1097 TBool volatileBitmapOrMask = EFalse; |
1099 TBool volatileBitmapOrMask = EFalse; |
1098 #else |
1100 #else |
1099 TBool volatileBitmapOrMask = ETrue; |
1101 TBool volatileBitmapOrMask = ETrue; |
1100 #endif |
1102 #endif |
1101 |
1103 |
1102 TBool originalMaskUsed = ETrue; |
|
1103 |
|
1104 |
1104 |
1105 TInt bitmapHandle = aImage.iBitmapHandle; |
1105 TInt bitmapHandle = aImage.iBitmapHandle; |
1106 TInt maskHandle = aImage.iMaskHandle; |
1106 TInt maskHandle = aImage.iMaskHandle; |
1107 TBool invertMask = aImage.iInvertedMask; |
1107 TBool invertMask = aImage.iInvertedMask; |
1108 TPoint maskOriginPoint = aImage.iMaskOriginPoint; |
1108 TPoint maskOriginPoint = aImage.iMaskOriginPoint; |
1197 CleanupStack::PopAndDestroy(mask); |
1197 CleanupStack::PopAndDestroy(mask); |
1198 } |
1198 } |
1199 |
1199 |
1200 mask = invertedMask; |
1200 mask = invertedMask; |
1201 CleanupStack::PushL(mask); |
1201 CleanupStack::PushL(mask); |
1202 originalMaskUsed = EFalse; |
|
1203 } |
1202 } |
1204 |
1203 |
1205 // Upload expects mask to begin always at TPoint(0,0), so if mask |
1204 // Upload expects mask to begin always at TPoint(0,0), so if mask |
1206 // offset is defined we re-create mask with the given new |
1205 // offset is defined we re-create mask with the given new |
1207 // offset. Note that it might be a good idea to combine this op |
1206 // offset. Note that it might be a good idea to combine this op |
2189 iSearchedGraphicImageEntry->iInvertedMask = aCachedImageParams.iInvertedMask; |
2187 iSearchedGraphicImageEntry->iInvertedMask = aCachedImageParams.iInvertedMask; |
2190 iSearchedGraphicImageEntry->iMaskOriginPoint = aCachedImageParams.iMaskOriginPoint; |
2188 iSearchedGraphicImageEntry->iMaskOriginPoint = aCachedImageParams.iMaskOriginPoint; |
2191 iSearchedGraphicImageEntry->iBitmapTouchCount = KHuiInitialBitmapTouchCount; |
2189 iSearchedGraphicImageEntry->iBitmapTouchCount = KHuiInitialBitmapTouchCount; |
2192 iSearchedGraphicImageEntry->iMaskTouchCount = KHuiInitialBitmapTouchCount; |
2190 iSearchedGraphicImageEntry->iMaskTouchCount = KHuiInitialBitmapTouchCount; |
2193 iSearchedGraphicImageEntry->iGcParams = aCachedImageParams.iGcParams; |
2191 iSearchedGraphicImageEntry->iGcParams = aCachedImageParams.iGcParams; |
|
2192 iSearchedGraphicImageEntry->iCache = this; |
2194 |
2193 |
2195 cachedEntry = iCachedImages.FindInOrder(iSearchedGraphicImageEntry, ImageOrderFunc); |
2194 cachedEntry = iCachedImages.FindInOrder(iSearchedGraphicImageEntry, ImageOrderFunc); |
2196 if (cachedEntry == KErrNotFound) |
2195 if (cachedEntry == KErrNotFound) |
2197 { |
2196 { |
2198 User::Leave(KErrNotFound); |
2197 User::Leave(KErrNotFound); |
2217 TInt cachedEntry = KErrNotFound; |
2216 TInt cachedEntry = KErrNotFound; |
2218 |
2217 |
2219 iSearchedGraphicImageEntry->Reset(); |
2218 iSearchedGraphicImageEntry->Reset(); |
2220 iSearchedGraphicImageEntry->iGcParams = aGcParams; |
2219 iSearchedGraphicImageEntry->iGcParams = aGcParams; |
2221 iSearchedGraphicImageEntry->iImageSize = aImageSize; |
2220 iSearchedGraphicImageEntry->iImageSize = aImageSize; |
|
2221 iSearchedGraphicImageEntry->iCache = this; |
2222 |
2222 |
2223 |
2223 |
2224 for (TInt i=0; i<aCachedImageParams.Count();i++) |
2224 for (TInt i=0; i<aCachedImageParams.Count();i++) |
2225 { |
2225 { |
2226 THuiCachedBitmap cachedBitmap; |
2226 THuiCachedBitmap cachedBitmap; |
2292 iSearchedGraphicImageEntry->iInvertedMask = aCachedImageParams.iInvertedMask; |
2292 iSearchedGraphicImageEntry->iInvertedMask = aCachedImageParams.iInvertedMask; |
2293 iSearchedGraphicImageEntry->iMaskOriginPoint = aCachedImageParams.iMaskOriginPoint; |
2293 iSearchedGraphicImageEntry->iMaskOriginPoint = aCachedImageParams.iMaskOriginPoint; |
2294 iSearchedGraphicImageEntry->iBitmapTouchCount = KHuiInitialBitmapTouchCount; |
2294 iSearchedGraphicImageEntry->iBitmapTouchCount = KHuiInitialBitmapTouchCount; |
2295 iSearchedGraphicImageEntry->iMaskTouchCount = KHuiInitialBitmapTouchCount; |
2295 iSearchedGraphicImageEntry->iMaskTouchCount = KHuiInitialBitmapTouchCount; |
2296 iSearchedGraphicImageEntry->iGcParams = aCachedImageParams.iGcParams; |
2296 iSearchedGraphicImageEntry->iGcParams = aCachedImageParams.iGcParams; |
|
2297 iSearchedGraphicImageEntry->iCache = this; |
2297 |
2298 |
2298 cachedEntry = iCachedImages.FindInOrder(iSearchedGraphicImageEntry, ImageOrderFunc); |
2299 cachedEntry = iCachedImages.FindInOrder(iSearchedGraphicImageEntry, ImageOrderFunc); |
2299 if (cachedEntry == KErrNotFound) |
2300 if (cachedEntry == KErrNotFound) |
2300 { |
2301 { |
2301 // Create new entry object |
2302 // Create new entry object |
2302 CHuiCanvasGraphicImage* newEntry = new (ELeave) CHuiCanvasGraphicImage; |
2303 CHuiCanvasGraphicImage* newEntry = new (ELeave) CHuiCanvasGraphicImage; |
2303 CleanupStack::PushL(newEntry); |
2304 CleanupStack::PushL(newEntry); |
2304 |
2305 |
2305 newEntry->CopyAttributes(*iSearchedGraphicImageEntry); |
2306 newEntry->CopyAttributes(*iSearchedGraphicImageEntry); |
2306 |
2307 |
2307 // Create new accelerated image |
2308 // Create new accelerated image |
2308 CHuiTexture* newtexture = CreateRecycledTextureL(); |
2309 CHuiTexture* newtexture = CreateRecycledTextureL(); |
2309 newEntry->iTexture = newtexture; |
2310 newEntry->iTexture = newtexture; |
2310 |
2311 |
2311 User::LeaveIfError(iCachedImages.InsertInOrder(newEntry, ImageOrderFunc)); |
2312 User::LeaveIfError(iCachedImages.InsertInOrder(newEntry, ImageOrderFunc)); |
2312 cachedEntry = iCachedImages.FindInOrder(newEntry, ImageOrderFunc); |
2313 cachedEntry = iCachedImages.FindInOrder(newEntry, ImageOrderFunc); |
2313 CleanupStack::Pop(newEntry); |
2314 CleanupStack::Pop(newEntry); |
2314 needUpdate = ETrue; |
2315 needUpdate = ETrue; |
2315 } |
2316 } |
2316 else |
2317 else |
2317 { |
2318 { |
2318 // Check if needs to be updated by checking active users list |
2319 // Check if needs to be updated by checking active users list |
2319 if (!iCachedImages[cachedEntry]->IsUser(aUser)) |
2320 if (!iCachedImages[cachedEntry]->IsUser(aUser)) |