contentstorage/caclient/s60/src/cabitmapadapter.cpp
changeset 107 b34d53f6acdf
parent 96 5d243a69bdda
equal deleted inserted replaced
106:e78d6e055a5b 107:b34d53f6acdf
    29 #include <XQConversions>
    29 #include <XQConversions>
    30 
    30 
    31 #include "cadef.h"
    31 #include "cadef.h"
    32 #include "cabitmapadapter.h"
    32 #include "cabitmapadapter.h"
    33 
    33 
    34 // -----------------------------------------------------------------------------
       
    35 // copying compressed bitmap
       
    36 //----------------------------------------------------------------------------
       
    37 CFbsBitmap *CaBitmapAdapter::copyBitmapLC(CFbsBitmap *input)
       
    38 {
       
    39     CFbsBitmap *bmp = new(ELeave) CFbsBitmap();
       
    40     CleanupStack::PushL(bmp);
       
    41     bmp->Create(input->SizeInPixels(), input->DisplayMode());
       
    42 
       
    43     CFbsBitmapDevice *bitmapDevice = CFbsBitmapDevice::NewL(bmp);
       
    44     CleanupStack::PushL(bitmapDevice);
       
    45     CFbsBitGc *bmpGc;
       
    46     bitmapDevice->CreateContext(bmpGc);
       
    47     bmpGc->BitBlt(TPoint(0,0), input);
       
    48     delete bmpGc;
       
    49     CleanupStack::PopAndDestroy(bitmapDevice);
       
    50     return bmp;
       
    51 }
       
    52 
       
    53 void CaBitmapAdapter::fromBitmapAndMaskToPixmapL(CFbsBitmap* fbsBitmap,
    34 void CaBitmapAdapter::fromBitmapAndMaskToPixmapL(CFbsBitmap* fbsBitmap,
    54         CFbsBitmap* fbsMask, QPixmap& pixmap)
    35         CFbsBitmap* fbsMask, QPixmap& pixmap)
    55 {
    36 {
    56     if (fbsBitmap->Header().iCompression == ENoBitmapCompression) {
    37     pixmap = pixmap.fromSymbianCFbsBitmap(fbsBitmap);
    57         pixmap = pixmap.fromSymbianCFbsBitmap(fbsBitmap);
    38     QPixmap mask;
    58         QPixmap mask;
    39     mask = mask.fromSymbianCFbsBitmap(fbsMask);
    59         mask = mask.fromSymbianCFbsBitmap(fbsMask);
    40     pixmap.setAlphaChannel(mask);
    60         pixmap.setAlphaChannel(mask);
       
    61     } else { // we need special handling for icons in 9.2 (NGA)
       
    62         // let's hope that in future it will be in QT code
       
    63         CFbsBitmap *temp(NULL);
       
    64         temp = CaBitmapAdapter::copyBitmapLC(fbsBitmap);
       
    65         pixmap = pixmap.fromSymbianCFbsBitmap(temp);
       
    66         CleanupStack::PopAndDestroy();
       
    67         temp = CaBitmapAdapter::copyBitmapLC(fbsMask);
       
    68         QPixmap mask;
       
    69         mask = mask.fromSymbianCFbsBitmap(temp);
       
    70         CleanupStack::PopAndDestroy();
       
    71         pixmap.setAlphaChannel(mask);
       
    72     }
       
    73 }
    41 }