uiacceltk/hitchcock/coretoolkit/src/HuiCanvasTextureCache.cpp
changeset 13 8f67d927ea57
parent 0 15bf7259bb7c
child 14 83d2d132aa58
equal deleted inserted replaced
0:15bf7259bb7c 13:8f67d927ea57
   283     iFont = NULL;
   283     iFont = NULL;
   284     }
   284     }
   285 
   285 
   286 CHuiCanvasTextImage::~CHuiCanvasTextImage()
   286 CHuiCanvasTextImage::~CHuiCanvasTextImage()
   287     {
   287     {
       
   288     delete iText;
       
   289     iText = NULL;
   288     }
   290     }
   289 
   291 
   290 TBool CHuiCanvasTextImage::UseColorModulation() const
   292 TBool CHuiCanvasTextImage::UseColorModulation() const
   291     {
   293     {
   292     return iUseColorModulation; 
   294     return iUseColorModulation; 
  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
  1216                     {
  1215                     {
  1217                     CleanupStack::PopAndDestroy(mask);
  1216                     CleanupStack::PopAndDestroy(mask);
  1218                     }
  1217                     }
  1219                 mask = movedMask;
  1218                 mask = movedMask;
  1220                 CleanupStack::PushL(mask);                            
  1219                 CleanupStack::PushL(mask);                            
  1221                 originalMaskUsed = EFalse;
       
  1222                 }
  1220                 }
  1223 #ifdef __NVG
  1221 #ifdef __NVG
  1224             }
  1222             }
  1225 #endif
  1223 #endif
  1226         }
  1224         }
  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))